简单解释 SPF、DKIM 和 DMARC(以及如何在五分钟内检查你自己的设置)

SPF、DKIM 和 DMARC 各有什么作用,Gmail、Yahoo 和 Outlook 现在有哪些要求,如何读懂你的 DNS 记录,以及在开始外发开发信之前如何修正最常见的错误。

发布于 2026年11月10日 · 1 分钟阅读

放在桌上的一把锁和一把钥匙
图片: FlyD · Unsplash

只要谈到送达率,就总绕不开三个缩写:SPF、DKIM、DMARC。人们通常只配置一次,从主机商的帮助文档里复制几行,然后就抛在脑后。直到某一天邮件全进了垃圾箱,谁也说不清当初到底配置了些什么。

但这三个机制其实回答的是每一个接收你邮件的服务器都会问的一个简单问题:“这封邮件真的来自它所声称的人吗?”如果没有明确的答案,邮件就会被当作可疑对象处理。

为什么现在成了硬性要求

很长一段时间里,这些记录只是强烈建议配置。如今它们已经是硬性要求。2024 年 2 月,Gmail 和 Yahoo 开始要求大批量发信的发送方必须拥有有效的 SPF 和 DKIM、已发布的 DMARC 策略、一键退订链接,以及较低的投诉率。微软也宣布对 Outlook.com 提出类似要求,从 2025 年 5 月起生效。

官方门槛针对的是大型发送方,但实际上,一个没有正确身份验证的域名,远没到这个量级,邮件就已经开始被过滤了。做开发信,这三条记录必须视为最低配置。

SPF:授权服务器的名单

SPF(Sender Policy Framework)是发布在你域名 DNS 里的一行记录。它声明:“这个域名的邮件只能从这几台服务器发出。”当某台服务器收到声称来自你域名的邮件时,它会核对发信服务器是否在这份名单里。

一条 SPF 记录大致是这样:

v=spf1 include:_spf.mail.hostinger.com ~all

从左往右读:版本号,然后是授权的服务器(这里是主机商的),最后是对其他服务器的处理方式。结尾的“~all”表示对其余服务器保持警惕但不要直接拒收,这是一个稳妥的选择。

最常见的错误:

  • 同一域名下出现两条 SPF 记录:这是不允许的,结果会直接失效。必须把两条合并成一条;
  • 漏掉某个服务:你还会通过第三方软件发送发票,但它不在名单里;
  • “include”太多:SPF 对 DNS 查询次数上限是十次,超出后整条记录就会失败。

DKIM:邮件的签名

DKIM(DomainKeys Identified Mail)会为每封邮件附加一个加密签名。发信服务器用私钥签名,对应的公钥则发布在你的 DNS 里。收件方会验证签名:签名有效,就说明邮件确实来自你的域名,而且中途没有被篡改。

公钥放在一个特定的 DNS 地址上,地址由主机商选定的“选择器”构成,例如:

hostingermail1._domainkey.votredomaine.fr

绝大多数 DKIM 问题就藏在这里:公钥复制不完整(它们很长)、选择器和服务器实际使用的不一致,或者主机商在等你手动激活,公钥根本没发布出去。唯一可靠的验证方式,是发一封真实邮件,然后查看它到达后的邮件头。

DMARC:验证失败时该怎么办

DMARC(Domain-based Message Authentication, Reporting and Conformance)把前两者串起来。它在告诉接收服务器:“如果某封邮件声称来自我的域名,却没能通过 SPF 和 DKIM,你就按这个规则处理。”它还能让你收到以你名义发出的邮件的报告。

一条入门的 DMARC 记录大致是这样:

v=DMARC1; p=none; rua=mailto:dmarc@votredomaine.fr

“p=none”的意思是:不拦截任何邮件,但发送报告。这是 Gmail 和 Yahoo 要求的最低策略,也是一个不错的起点。等你确认所有正常发信都能通过身份验证后,就可以改成“p=quarantine”(把未通过验证的邮件投进垃圾箱),之后再考虑“p=reject”。

有一个细节很容易被忽略:DMARC 要求通过 SPF 或 DKIM 验证的域名,必须与发件人地址中出现的域名一致。这就是所谓的对齐(alignment)。一封从 paul@votredomaine.fr 发出、却由你主机商的技术域名做 DKIM 签名的邮件,可能通过了 DKIM,却依然过不了 DMARC。

五分钟检查你的记录

你不需要是系统管理员,三步检查就够了:

  1. 用在线 DNS 查询工具查看你域名的 TXT 记录。你应该只能找到一行以“v=spf1”开头的记录,以及在 _dmarc.votredomaine.fr 上的一条“v=DMARC1”记录。
  2. 从要检查的邮箱发一封邮件到一个个人 Gmail 地址,打开它并显示原始邮件。Gmail 会明确列出“SPF: PASS”“DKIM: PASS”和“DMARC: PASS”,以及各自使用的域名。
  3. 确认 DKIM 一栏显示的域名确实是你自己的,而不是主机商的。

在 SmartOutbound 里,这项检查是自动完成的:每个域名每天都会核验,连接邮箱时会发送一封测试邮件,以确认邮件到达时实际检测到的 DKIM 签名,邮箱页面上的“检查 DNS”按钮还可以随时手动重新检查。如果缺少 DMARC 而你用的是 Hostinger,工具甚至能帮你加上。

那么其他因素呢?

这三条记录并不能保证你的邮件一定进收件箱。它们只能保证邮件不会因为可以避免的技术原因被拒收。其余的就取决于你域名的信誉、名单的质量和邮件内容。对于新域名,还要考虑预热期。如果你犹豫是否该用主域名来发开发信,这篇关于专用域名的文章可以帮你做决定。

常见问题

+可以有两条 SPF 记录吗?

不能。一个域名只能发布一条 SPF 记录。如果你使用多个发信服务,就把它们都加到同一条记录里,用多个“include”来引用。

+刚开始该选哪种 DMARC 策略?

“p=none”,并附上一个报告接收地址。这是 Gmail 和 Yahoo 要求的最低配置。等你所有正常发信都正确通过身份验证后,再改成“p=quarantine”。

+DNS 修改多久会生效?

通常几分钟,有时取决于记录的缓存时间(TTL),会需要几个小时。如果 24 小时后仍无变化,多半是记录填错了。

+有了 SPF、DKIM 和 DMARC 就能避免进垃圾箱吗?

不能。它们必要但不充分。域名信誉、发送量、地址质量和邮件内容同样重要。