SPF 记录检查:谁能以这个域名的名义发送邮件?
SPF 是一种 DNS 记录,域名在其中列出获准代它发送邮件的服务器。没有 SPF,或者 SPF 有错误、过于宽松,别人就更容易以该域名的名义发送伪造邮件。输入域名、邮箱地址或链接,我们会读取它的 SPF 并为你解释。
使用方法
- 输入你要检查的域名,或粘贴邮箱地址或链接:我们只使用其中的域名。
- 点击“检查 SPF”。我们会读取 SPF 记录,并像收件服务器那样逐一跟踪每个 include。
- 看看记录的结尾和查询次数:理想情况是以“-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。
