为什么需要三种协议?
电子邮件协议 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=pass 与 dkim=pass。
准备好测试你的域名了吗?
38 毫秒完成一次完整的邮件审计。