DMARC 在 SPF 和 DKIM 的基础上增加了两样东西:一项对齐检查,将认证绑定到收件人实际看到的域名;以及一个报告回路,让你了解正在发生的情况。当接收服务器收到一封声称来自你域名的邮件时,它会执行一段简短且明确的流程来决定如何处理。
接收方收到你的邮件后会发生什么?
以下是邮箱服务商从头到尾执行的流程:
- 读取 From 域名。 服务器从可见的 From 地址中提取域名(技术名称是 RFC5322.From)。这就是 DMARC 保护的身份,因为它是收件人看到的那个。
- 查找你的 DMARC 记录。 它通过 DNS 查询
_dmarc.yourdomain.com,找到你发布的策略和报告地址。没有记录就不会进行 DMARC 评估。 - 检查 SPF。 它验证邮件是否来自你的 SPF 记录授权的服务器,并记录 SPF 认证的域名。
- 检查 DKIM。 它验证 DKIM 签名,并记录签名域名。
- 测试对齐。 它将 SPF 和 DKIM 的域名与 From 域名进行比对。这一步让 DMARC 不仅仅是各部分的简单叠加。
- 应用你的策略。 如果邮件通过了(任一路径对齐),则正常投递。如果未通过,接收方按照你的
p=指令执行:监控模式下不做任何处理、隔离或拒绝。 - 记录以供报告。 处理结果会被添加到稍后发送到你邮箱的聚合报告中。
什么是对齐,为什么它很重要?
对齐是 DMARC 的核心,值得仔细理解。SPF 和 DKIM 各自认证一个域名,但不一定是收件人看到的那个。SPF 检查的是 Return-Path(退信地址),DKIM 检查的是签名邮件的域名。垃圾邮件发送者可以让自己控制的域名通过这两项检查,同时在 From 行中显示你的品牌。
DMARC 通过要求认证域名与你的 From 域名匹配来封堵这一漏洞。SPF 对齐意味着 Return-Path 域名与 From 域名一致。DKIM 对齐意味着签名域名与 From 域名一致。匹配方式可以是宽松的(组织域名相同即可,例如 mail.example.com 与 example.com 对齐)或严格的(完全匹配)。默认为宽松模式。
需要通过多少项?
只需一条路径。如果 SPF 通过并对齐,或者 DKIM 通过并对齐,邮件就通过了 DMARC。不需要两者都通过。这是有意设计的宽容机制,因为邮件在互联网上经过的路径复杂多变,往往一种机制失效时另一种仍然有效。
| 路径 | 比对的域名 | 通过 DMARC 的条件 |
|---|---|---|
| SPF | Return-Path 与 From | SPF 通过且域名对齐 |
| DKIM | 签名域名与 From | DKIM 通过且域名对齐 |
| 任一 | 以上两者 | 至少一条路径通过并对齐 |
DKIM 对齐是更可靠的路径,因为它在转发场景中往往能保留,而 SPF 则不行。这也是为什么转发常常导致报告数据令人困惑,相关内容请参阅如何修复 DMARC 失败。
接收方在失败时会怎么做?
按照你的策略执行,在合理范围内。你的 p= 值是一个请求,大多数主要服务商会遵守:
p=none:不做任何不同处理,仅报告。这是监控模式。p=quarantine:将未通过的邮件视为可疑,通常放入垃圾邮件文件夹。p=reject:直接拒绝该邮件。
策略选择可以随时间逐步升级,这是什么是 DMARC 策略的主题。报告回路的另一半正是让这种升级安全可行的关键:在收紧策略之前,你可以准确看到谁在通过、谁在失败。解读这些报告的方法请参阅如何阅读 DMARC 报告。
这对你意味着什么?
DMARC 之所以有效,是因为它检查的是唯一重要的身份,即可见域名,并允许任一验证路径承载邮件。发布一条记录,让报告为你展示谁在以你的名义发送邮件的全貌,然后在数据表明安全时收紧策略。如果你想了解三个协议的概念全景,SPF vs DKIM vs DMARC 将它们并列比较;验证指南涵盖了 Bird 的具体细节。