SPF、DKIM、DMARC 是发信域名的三层身份验证。这篇文章说明三条记录各自解决什么问题,给出在 Cloudflare DNS 里添加 TXT/CNAME 记录的操作步骤,以及用 Gmail 检查 spf=pass、dkim=pass、dmarc=pass 的验证方法。

SPF、DKIM、DMARC 是发信域名的三层身份验证。没配好它们,冷邮件系统不一定直接报错,但邮件很容易因为身份验证不完整,被收件方降权、扔进垃圾箱,甚至被判定为伪造发件人。
三条记录分别解决什么问题
先看三条记录各自的职责。
| 记录 | 它证明什么 | 通常长什么样 |
|---|---|---|
| SPF | 这封邮件是不是从你授权的服务器发出来的 | TXT @ "v=spf1 include:mailgun.org ~all" |
| DKIM | 邮件内容在传输过程中有没有被篡改,并且是否由你的域名签名 | TXT / CNAME selector._domainkey,由邮件服务商提供 |
| DMARC | 当 SPF 或 DKIM 失败时,收件方应该怎么处理,并把报告发给谁 | TXT _dmarc "v=DMARC1; p=none; rua=mailto:..." |
Cloudflare 对这三者的解释很直接:SPF 授权发信来源,DKIM 用签名验证邮件未被篡改,DMARC 把 SPF 和 DKIM 关联起来,并告诉收件服务器失败时怎么处理。
为什么邮件营销系统必须先配好
这三条记录不会让一封差邮件变成好邮件,但能避免你的邮件在身份验证层面先输掉。几个实际注意点:
- 多个发信域名、多个邮箱一起跑时,每个域名都要单独配置,不能只配主域名。
- 新域名进入热身期之前就应该配置好,不要等发信后发现进垃圾箱再补。
- 这些记录都在 DNS 层面。网站服务器在哪里并不重要,要改的是当前权威 DNS 提供商里的记录;如果域名 DNS 已经托管到 Cloudflare,就在 Cloudflare DNS 里添加。
在 Apollo 这类邮件营销工具里绑定发件邮箱(要填的 IMAP/SMTP 参数可以看这篇什么是 IMAP、POP、SMTP?)之前,先把这三条配好,后面的送达率才有保障。
如何在 Cloudflare 里添加
登录 Cloudflare,进入对应域名,域名 DNS 托管在 Cloudflare 的话,记录都在这里改。然后按下面的步骤添加:
- 打开 DNS → Records。
- 根据 Mailgun、Google Workspace、腾讯企业邮箱等服务商给你的值,逐条添加 TXT 或 CNAME。
- SPF 和 DMARC 通常是 TXT;DKIM 可能是 TXT,也可能是 CNAME,以服务商后台给出的类型为准。
- 保存后等待 DNS 生效,再回到邮件服务商后台点验证。
关于为什么开发者普遍愿意把 DNS 托管到 Cloudflare,可以看这篇为什么资深开发者更倾向于把域名 DNS 托管到 Cloudflare?
如何用 Gmail 验证是否生效
配完别急着上线,先发一封测试邮件验证:
- 用这个域名发一封测试邮件到 Gmail。
- 打开邮件右上角的更多菜单,选择“显示原始邮件 / Show original”。
- 在原始邮件页面里搜索 SPF、DKIM、DMARC 或 Authentication-Results。
- 看到
spf=pass、dkim=pass、dmarc=pass,才说明这封测试邮件通过了对应验证。
刚开始可以把 DMARC 设为 p=none 先观察,确认所有合法发信来源都通过验证后,再逐步考虑 quarantine 或 reject。
参考资料
每周四送达。
主机评测、建站对比、性能优化技巧和插件推荐 — 每周为 WordPress 站长和建站者精选。
