深入理解电子邮件安全:SPF、DKIM 和 DMARC 完全指南
引言
在当今数字时代,电子邮件已经成为我们日常通信中不可或缺的一部分。然而,随之而来的安全问题也日益突出。邮件欺诈、钓鱼攻击和垃圾邮件等威胁不断增加,这促使了多种邮件安全验证机制的出现。本文将深入探讨三个最重要的邮件安全协议:SPF、DKIM和DMARC。
SPF (Sender Policy Framework)
什么是 SPF?
SPF(发件人策略框架)是一种邮件验证机制,用于防止发件人地址被伪造。它允许域名所有者指定哪些邮件服务器被授权发送来自该域名的邮件。
SPF 工作原理
- DNS记录发布:域名所有者在DNS中发布SPF记录
- 发送验证:当邮件服务器接收到邮件时,会检查发件人IP是否在SPF记录允许范围内
- 结果处理:基于验证结果决定是否接受该邮件
SPF 记录示例
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 ip4:198.51.100.123 a mx ~all"
DKIM (DomainKeys Identified Mail)
什么是 DKIM?
DKIM是一种数字签名技术,用于验证邮件的完整性和来源真实性。它通过加密签名确保邮件在传输过程中未被篡改。
DKIM 工作流程
-
签名生成:
- 发送方使用私钥对邮件头部和内容生成签名
- 签名添加到邮件头的DKIM-Signature字段
-
验证过程:
- 接收方获取发送域名的公钥(存储在DNS中)
- 使用公钥验证签名的有效性
DKIM 配置示例
selector._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC 的作用
DMARC建立在SPF和DKIM基础上,提供了统一的邮件验证策略框架。它不仅能验证邮件真实性,还能向域名所有者提供详细的验证报告。
DMARC 政策
- none:监控模式,不采取任何操作
- quarantine:将可疑邮件放入垃圾邮件文件夹
- reject:直接拒绝不符合要求的邮件
DMARC 记录示例
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"
最佳实践建议
1. 完整部署策略
- 同时实施SPF、DKIM和DMARC
- 从宽松策略开始,逐步收紧
- 定期监控验证报告
2. 密钥管理
- 定期更新DKIM密钥对
- 使用足够长度的密钥(建议2048位)
- 安全保管私钥
3. 监控和维护
- 定期检查SPF记录是否需要更新
- 分析DMARC报告发现潜在问题
- 及时响应验证失败警报
4. 政策调整
- 根据业务需求调整验证策略
- 考虑第三方邮件服务的影响
- 平衡安全性和可用性
结论
电子邮件安全是一个持续演进的领域。SPF、DKIM和DMARC这三个协议互相配合,共同构建了强大的邮件安全防线。正确实施这些机制不仅能有效防止邮件欺诈,还能提升邮件送达率,保护企业声誉。随着网络威胁的不断发展,持续关注和更新邮件安全措施变得越来越重要。
配置
我来详细介绍如何配置 SPF 和 DKIM 的域名解析记录:
- SPF 配置步骤:
- 登录域名管理控制台,添加 TXT 记录:
- 主机记录:
@
或者留空(取决于服务商) - 记录类型:
TXT
- 记录值示例:
v=spf1 ip4:1.2.3.4 ip4:11.22.33.44 include:spf.example.com include:_spf.google.com ~all
- SPF 记录值说明:
v=spf1
- SPF 版本声明ip4:
- 指定 IPv4 地址include:
- 包含其他域名的 SPF 记录~all
- 软失败(推荐)或-all
硬失败+all
- 允许所有(不推荐)
常见配置场景:
# 只允许指定 IP 发送
v=spf1 ip4:1.2.3.4 -all# 允许本域名的 MX 记录对应的服务器发送
v=spf1 mx -all# 允许本域名的 A 记录对应的服务器发送
v=spf1 a -all# 包含第三方邮件服务(如 Google Workspace)
v=spf1 include:_spf.google.com -all
- DKIM 配置步骤:
- 生成 DKIM 密钥对:
# 使用 OpenSSL 生成私钥
openssl genrsa -out private.key 2048# 生成公钥
openssl rsa -in private.key -pubout -out public.key
- 添加 DKIM DNS 记录:
- 主机记录:
selector._domainkey
(selector 可自定义,如 mail._domainkey) - 记录类型:
TXT
- 记录值示例:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
- DKIM 记录值说明:
v=DKIM1
- DKIM 版本k=rsa
- 加密算法p=
- 公钥(去掉头尾和换行)
常见邮件服务商的 DKIM 配置:
Google Workspace:
# 主机记录
google._domainkey# 记录值
v=DKIM1; k=rsa; p=您的公钥
Microsoft 365:
# 主机记录
selector1._domainkey# 记录值
v=DKIM1; k=rsa; p=您的公钥
验证配置:
- SPF 验证:
# 使用 dig 命令查询
dig txt example.com# 使用在线工具
https://mxtoolbox.com/spf.aspx
- DKIM 验证:
# 发送测试邮件查看邮件头
# 使用在线工具
https://mxtoolbox.com/dkim.aspx
注意事项:
- DNS 传播时间:
- 新增或修改记录后需等待 DNS 刷新(通常 5-30 分钟)
- 某些情况可能需要最多 24-48 小时
- 记录长度限制:
- 单条 TXT 记录最大 255 字符
- 超长需要分片,用引号分隔
- 安全建议:
- 私钥妥善保管,避免泄露
- 建议每 6-12 个月轮换密钥
- 先添加新记录,确认生效后再更换密钥
- 常见错误:
- SPF 记录重复
- DKIM 选择器名称错误
- 公钥格式不正确
- DNS 记录未及时生效
查询链接
https://coding.tools/cn/nslookup
https://powerdmarc.com/zh/spf-record-lookup/
https://powerdmarc.com/zh/dkim-record-lookup/
https://powerdmarc.com/zh/dmarc-record-checker/
相关文章:
深入理解电子邮件安全:SPF、DKIM 和 DMARC 完全指南
引言 在当今数字时代,电子邮件已经成为我们日常通信中不可或缺的一部分。然而,随之而来的安全问题也日益突出。邮件欺诈、钓鱼攻击和垃圾邮件等威胁不断增加,这促使了多种邮件安全验证机制的出现。本文将深入探讨三个最重要的邮件安全协议&a…...

【有啥问啥】复习一下什么是NMS(非极大值抑制)?
复习一下什么是NMS(非极大值抑制)? 什么是NMS? NMS(Non-Maximum Suppression)即非极大值抑制,是一种在计算机视觉领域,尤其是目标检测任务中广泛应用的后处理算法。其核心思想是抑…...
Java-异步方法@Async+自定义分布式锁注解Redission
如果你在使用 @Async 注解的异步方法中,使用了自定义的分布式锁注解(例如 @DistributedLock),并且锁到期后第二个请求并没有执行,这可能是由于以下几个原因导致的: 锁的超时时间设置不当:锁的超时时间可能设置得太短,导致锁在业务逻辑执行完成之前就已经自 动释放。…...

基本定时器---内/外部时钟中断
一、定时器的概念 定时器(TIM),可以对输入的时钟信号进行计数,并在计数值达到设定值的时候触发中断。 STM32的定时器系统有一个最为重要的结构是时基单元,它由一个16位计数器,预分频器,和自动重…...
实现了两种不同的图像处理和物体检测方法
这段代码实现了两种不同的图像处理和物体检测方法:一种是基于Canny边缘检测与轮廓分析的方法,另一种是使用TensorFlow加载预训练SSD(Single Shot Multibox Detector)模型进行物体检测。 1. Canny边缘检测与轮廓分析: …...

如何在MindMaster思维导图中制作PPT课件?
思维导图是一种利用色彩、图画、线条等图文并茂的形式,来帮助人们增强知识或者事件的记忆。因此,思维导图也被常用于教育领域,比如:教学课件、读书笔记、时间管理等等。那么,在MindMaster免费思维导图软件中࿰…...
ORIN NX 16G安装中文输入法
刷机版本为jetpack5.14.刷机之后预装了cuda、cudnn、opencv、tensorrt等,但是发现没有中文输入,所以记录一下安装流程。 jetson NX是arm64架构的,sougoupinyin只支持adm架构的,所以要选择安装Google pinyin 首先打开终端&#x…...

【金融风控项目-07】:业务规则挖掘案例
文章目录 1.规则挖掘简介2 规则挖掘案例2.1 案例背景2.2 规则挖掘流程2.3 特征衍生2.4 训练决策树模型2.5 利用结果划分分组 1.规则挖掘简介 两种常见的风险规避手段: AI模型规则 如何使用规则进行风控 **使用一系列逻辑判断(以往从职人员的经验)**对客户群体进行区…...
退款成功订阅消息点击后提示订单不存在
问题表现: 退款成功发送的小程序订阅消息点击进入后提示订单不存在。 修复方法: 1.打开文件app/services/message/notice/RoutineTemplateListService.php 2.找到方法sendOrderRefundSuccess 3.修改图中红圈内的链接地址 完整方法代码如下 /*** 订…...

实验一 顺序结构程序设计
《大学计算机﹣C语言版》实验报告 实验名称 实验一 顺序结构程序设计 实验目的 (1)掌握C语言中常量和变量的概念。 (2)掌握C语言中常见的数据类型。 (3)掌握C语言中变量的定义和赋值方法。 …...
Elasticsearch搜索流程及原理详解
Elasticsearch搜索流程及原理详解 1. Elasticsearch概述1.1 简介1.2 核心特性1.3 应用场景2. Elasticsearch搜索流程2.1 搜索请求的发起2.2 查询的执行2.3 结果的聚合与返回3. Elasticsearch原理详解3.1 倒排索引3.2 分布式架构3.3 写入流程3.4 读取流程4. 技术细节与操作流程4…...

芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号)
芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号) 本期是平台君和您分享的第113期内容 前一段时间,高通公司(Qualcomm)发布安全警告称,提供的60多款芯片潜在严重的“零日漏洞”,芯片安全再一次暴露在大众视野。 那什么是“零日漏洞”?平台君从网上找了一段…...
【gitlab】gitlabrunner部署
1、下载镜像 docker pull gitlab/gitlab-runner:latest 2、启动gitrunner容器 docker run -d --name gitlab-runner --restart always \ -v /root/gitrunner/config:/etc/gitlab-runner \ ///gitlab-runner的配置目录,挂载在宿主机上方便修改,里面有config.…...

Flink监控checkpoint
Flink的web界面提供了一个选项卡来监控作业的检查点。这些统计信息在任务终止后也可用。有四个选项卡可以显示关于检查点的信息:概述(Overview)、历史(History)、摘要(Summary)和配置(Configuration)。下面依次来看这几个选项。 Overview Tab Overview选项卡列出了以…...
Ribbon 入门实战指南
Ribbon 是 Netflix 开发的一个开源项目,用于实现客户端负载均衡功能。它在微服务架构中广泛使用,并且是 Spring Cloud 生态中的重要组成部分。本文将带你从基础入门,逐步掌握如何在 Spring Cloud 项目中使用 Ribbon 实现客户端负载均衡。 1 负…...

uniapp: 微信小程序包体积超过2M的优化方法(主包从2.7M优化到1.5M以内)
一、问题描述 在使用uniapp进行微信小程序开发时,经常会遇到包体积超过2M而无法上传: 二、解决方案 目前关于微信小程序分包大小有以下限制: 整个小程序所有分包大小不超过 30M(服务商代开发的小程序不超过 20M) 单个…...
【百日算法计划】:每日一题,见证成长(026)
题目 给定一个包含正整数、加()、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。 表达式仅包含非负整数,, - ,,/ 四种运算符和空格 。 整数除法仅保留整数部分。 * * 示例 1: 输入: “32X2” 输出: 7 import…...
【大模型】prompt实践总结
文章目录 怎么才算是好的prompt设计准则基本原则精炼原则(奥卡姆剃刀准则)具体原则真实操作技巧指定角色增加fewshots列表化代码化强调需求真实迭代大模型优化情形任务的定义和评估标准似乎可以再明确一下出现了一些之前没有考虑过的特殊情况,可以重新组织语言优化Prompt来处…...
在Qt(以及C++)中, 和 * 是两个至关重要的符号--【雨露均沾】
在Qt(以及C)中,& 和 * 是两个至关重要的符号,它们用于处理引用和指针。我们将逐个解释这两个符号,并提供简单示例来说明它们的用法。 1. 引用(&) 定义: 引用是一种别名,它不…...

本地部署Apache Answer搭建高效的知识型社区并一键发布到公网流程
文章目录 前言1. 本地安装Docker2. 本地部署Apache Answer2.1 设置语言选择简体中文2.2 配置数据库2.3 创建配置文件2.4 填写基本信息 3. 如何使用Apache Answer3.1 后台管理3.2 提问与回答3.3 查看主页回答情况 4. 公网远程访问本地 Apache Answer4.1 内网穿透工具安装4.2 创建…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...