SPF 记录检查:谁能以这个域名的名义发送邮件?

SPF 是一种 DNS 记录,域名在其中列出获准代它发送邮件的服务器。没有 SPF,或者 SPF 有错误、过于宽松,别人就更容易以该域名的名义发送伪造邮件。输入域名、邮箱地址或链接,我们会读取它的 SPF 并为你解释。

使用方法

  1. 输入你要检查的域名,或粘贴邮箱地址或链接:我们只使用其中的域名。
  2. 点击“检查 SPF”。我们会读取 SPF 记录,并像收件服务器那样逐一跟踪每个 include。
  3. 看看记录的结尾和查询次数:理想情况是以“-all”或“~all”结尾,并且查询次数不超过 10 次。

各项结果的含义

这个域名没有 SPF
它没有说明哪些服务器可以发送它的邮件,因此更容易被冒充。如果这是你的域名,请发布一条 SPF 记录。
SPF 记录有错误
收件服务器无法应用它,所以在它们看来,这个域名等于没有 SPF。下面的信号说明了问题所在。
任何人都能以这个域名的名义发送邮件
记录以“+all”结尾,等于授权了世界上所有的服务器。这样配置的 SPF 起不到任何保护作用。
SPF 没有完全保护这个域名
记录没有说明如何处理不在列表中的服务器,因此以该域名名义发出的伪造邮件不会被标记。
SPF 配置正确
该域名列出了可以发送其邮件的服务器,并要求收件方标记或拒收其余邮件。仅靠 SPF 无法阻止冒充:真正告诉收件方如何处理的是 DMARC。

各项信号的含义

  • 该域名没有发布 SPF 记录。
  • 某个域名(本域名或被包含的域名)发布了不止一条 SPF 记录。只允许有一条,因此收件服务器会把它视为错误。
  • 记录中有一项写错了,因此收件服务器会把它视为错误。
  • 算上所有 include,该记录需要超过 10 次 DNS 查询。超过 10 次,收件服务器就会把它视为错误。
  • 某个 include 指向的域名没有 SPF 记录,因此收件服务器会把整条记录视为错误。
  • include 形成了循环:某个域名最终包含了它自己。
  • 以“+all”结尾:世界上任何服务器都可以以这个域名的名义发送邮件。
  • 以“?all”结尾:它对未列出的服务器不作任何说明,因此起不到保护作用。
  • 以“~all”结尾:来自其他服务器的邮件会被标记为可疑,但不会被拒收。这是最常见的设置。
  • 结尾没有“all”,因此未列出的服务器只会得到中性结果,起不到任何保护作用。
  • 它使用了“ptr”,这是一种速度很慢、标准不建议使用的机制。很多收件服务器会跳过它。
  • 它使用了宏(带 % 的项),这些内容会随每封邮件而变化,因此我们无法跟踪这一部分,实际的查询次数可能更多。

覆盖哪些国家

适用于任何国家的域名。我们会像收件服务器那样读取记录(RFC 7208):它的机制、结尾方式、每个 include 和 redirect(最多 30 次查询),以及与 10 次上限相比的 DNS 查询次数。

我们读取该域名公开的 DNS 记录。如果你输入的是邮箱地址或链接,只有其中的域名会离开你的浏览器。你查询的域名不会被保存。

常见问题

什么是 SPF?

Sender Policy Framework(发件人策略框架):一种 DNS 记录,域名在其中列出获准发送其邮件的服务器。收件服务器收到邮件时,会检查投递这封邮件的服务器是否在这份列表中。

“-all”和“~all”哪个更好?

“-all”要求收件方拒收来自未列出服务器的邮件;“~all”要求把这些邮件标记为可疑。两者都能起到保护作用,很多域名使用“~all”,再交给 DMARC 决定如何处理。“+all”和“?all”起不到保护作用。

为什么 10 次查询的上限很重要?

每个 include、a、mx、ptr、exists 和 redirect 都会让收件服务器去查询 DNS。如果整条记录需要超过 10 次查询,就会被视为错误,SPF 也就失效了。删除你已不再使用的服务,或请服务商提供更简单的 include。

仅靠 SPF 就能阻止伪造邮件吗?

不能。SPF 检查的是隐藏的信封发件人,而不是你在“发件人”中看到的地址。真正把两者联系起来、并要求收件方把未通过检查的邮件放入垃圾邮件或拒收的是 DMARC。也请检查该域名的 DMARC。