为什么需要三种协议?

电子邮件协议 1982 年设计之初极为宽松 —— 任何服务器都可以声称代表任意域名发送邮件。SPF、DKIM 与 DMARC 是层层叠加的三块补丁,共同让收件方能够验证一封邮件确实来自它所声称的域名。

  • SPF 回答“哪些 IP 被允许以 example.com 名义发送邮件?”
  • DKIM 回答“这封邮件确实由 example.com 的邮件服务器签名了吗?”
  • DMARC 回答“如果上述任一校验失败,该如何处理?”

第一步 —— 发布 SPF

SPF 是发布在域名根上的一条 TXT 记录,列出被允许代表你发送邮件的主机。通常包含你的事务邮件服务商以及办公套件。

example.com IN TXT
"v=spf1 include:_spf.google.com include:mailgun.org ~all"

末尾的 ~all 是软失败 —— 收件方会将未列出的发送者标记,而不是直接拒收。配置稳定后可以升级为 -all

第二步 —— 配置 DKIM

DKIM 会用一把密钥对每封外发邮件进行签名,公钥则发布在 DNS 中,按服务商的 selector 命名。

google._domainkey.example.com IN TXT
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."

第三步 —— 启用 DMARC

DMARC 把 SPF 和 DKIM 串在一起,并告诉外界:当任一校验失败时该如何处理。建议先以 p=none 收集两周报告,再逐步收紧策略。

_dmarc.example.com IN TXT
"v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100"

验证一切是否生效

在 DNSfish 查询该域名 —— 结果页会在 TXT 记录旁显示徽章,确认 SPF 已解析、DKIM 已发布、DMARC 已启用。然后给自己发一封测试邮件,检查邮件头中是否出现 spf=passdkim=pass

准备好测试你的域名了吗?
38 毫秒完成一次完整的邮件审计。