为什么 SPF、DKIM 和 DMARC 很重要
电子邮件在设计之初没有发件人验证,因此任何人都可以把您的域名写进“发件人”一栏。三项基于 DNS 的标准解决了这个问题。自 2024 年 2 月起,Google 和 Yahoo 要求批量发件人必须配置它们,缺少这些记录如今已成为正常邮件被判为垃圾邮件的常见原因。
- SPF 在以
v=spf1开头的 TXT 记录中,列出允许代表您的域名发送邮件的服务器。 - DKIM 为每封邮件添加加密签名;收件方使用发布在
selector._domainkey.yourdomain的公钥进行验证。 - DMARC(位于
_dmarc.yourdomain)告诉收件方:当 SPF 和 DKIM 与发件人域名不一致时该怎么办(none、quarantine或reject),以及把报告发送到哪里。
本检测工具测试什么
- SPF 是否存在、是否只有一条记录、是否以
~all或-all结尾(绝不能是+all),以及包含嵌套include:机制在内的 DNS 查询总次数是否在 RFC 7208 规定的 10 次上限之内。 - DKIM 密钥:针对您提供的选择器,或针对 Google Workspace、Microsoft 365 和常见发信服务所使用的十几个常用选择器。
- DMARC 是否存在、策略是否有效、是否适用于 100% 的邮件,以及是否发送汇总报告,让您能看到谁在以您的名义发信。
记录示例
example.com. TXT "v=spf1 include:_spf.example.net ip4:192.0.2.0/24 -all"
_dmarc.example.com. TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; adkim=s"
s1._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqh…"
推荐的部署步骤
- 发布 SPF,涵盖所有代表您发信的服务,并以
~all结尾。 - 在每个服务商中开启 DKIM 签名。
- 发布
p=none的 DMARC 并设置rua地址,在两到四周内持续查看报告。 - 待所有合法邮件都能通过之后,改为
p=quarantine,再改为p=reject。
完整讲解:SPF、DKIM 和 DMARC 详解。
常见问题
应该使用 ~all 还是 -all?
配置了 DMARC 的情况下,两者都可以;由 DMARC 决定结果。~all 是更稳妥的起点;一旦确信所有发件方都已列出,-all 则更严格。
“DNS 查询次数过多”是什么意思?
每个 include、a、mx、exists 和 redirect 都计一次查询,包括被引用记录内部的那些。超过 10 次,SPF 对所有人都会失败。请删除不用的服务,或用 ip4/ip6 地址段替换 include。
闲置域名也需要这些记录吗?
需要。对从不发送邮件的域名,请用 v=spf1 -all 和 v=DMARC1; p=reject 加以保护。
更新于