Email Spam Tester

免费工具

SPF 记录检测工具

查询域名的 SPF 记录,检查语法并跟踪每个 include,统计 DNS 查询次数是否超过十次限制。

检查工具的工作原理

它会读取你输入的域名的 TXT 记录,并找出以 v=spf1 开头的记录。然后,它会像接收服务器一样逐一跟踪所有 include 和 redirect,记录每个需要进行 DNS 查询的查找项,并检查每一项的语法。

这里不涉及 IP 地址。要检查的是这条记录是否有效,以及任何需要评估它的服务器能否在查询限制内完成评估,而不是某台特定服务器是否可以发送邮件。要检查后者,请通过完整测试发送一封邮件,报告会显示接收方实际得到的结果。

DNS 查询次数过多:上限为 10 次

RFC 7208 将一次 SPF 评估限制为最多十个需要 DNS 查询的项:include、a、mx、ptr、exists 和 redirect。计数涵盖整个查询树,因此,如果一个 include 本身又包含三个 include,就会占用四次查询。超过限制后,结果为 permerror,DMARC 会将其视为 SPF 未通过。

检查工具会统计每一项,包括实际评估时可能永远不会执行到的项,因为真正的评估会在首次匹配时停止。排在前面的服务器会继续通过,排在后面的服务器则开始失败。从外部看,这就像邮件有时可以正常发送,有时却不行。

ip4 和 ip6 项不占用 DNS 查询次数。用地址范围替换 include,也就是扁平化,可以减少查询次数,但代价是你必须手动让这些地址范围与服务提供商保持同步。

需要检查的常见错误

同一个域名发布了两条 SPF 记录。这通常发生在第二家服务提供商的设置指南要求添加一条记录,但没有人将它合并到第一条记录中。仅存在两条记录就会导致 permerror。

记录以 +all 结尾,这会让互联网上的任何服务器都通过;或者以 ?all 结尾,这不会对任何发送方作出判断,因此起不到任何保护作用。使用 ptr 项,而 RFC 7208 明确指出不应使用它。已经停用多年的服务所对应的 include 仍会各自占用一次查询。

改为测试真实邮件

这些工具读取 DNS。完整测试会读取邮件本身:向临时地址发送一封邮件,查看收件服务器评估的 SPF、DKIM 和 DMARC 结果、黑名单、邮件内容、两种垃圾邮件评分和修复方案。添加收件箱投递测试,查看邮件会进入 Gmail、Outlook、Yahoo 和其他提供商的哪个文件夹。

测试你的邮件查看示例报告

常见问题

SPF 记录是什么格式?

它是域名上的一条 TXT 记录,以 v=spf1 开头,列出允许发送邮件的来源,并以适用于其他所有来源的规则结尾。v=spf1 include:_spf.google.com ip4:203.0.113.5 ~all 允许 Google Workspace 和一台服务器发送邮件,并对其余来源返回 softfail。一个域名只能发布一条 SPF 记录。

SPF 软失败还是硬失败:~all 还是 -all?

部署 DMARC 后,两者都可以,因为 DMARC 会决定如何处理验证失败的邮件。在你仍在查找所有代表你发送邮件的服务时,~all(软失败)是更安全的选择。当 DMARC 报告显示没有合法邮件验证失败时,再切换到 -all。

为什么我的记录在完整测试中通过,但这里显示查询次数超过十次?

接收方在遇到第一个与你的服务器匹配的机制时就停止了验证,因此不会执行后面的查询。列表中更靠后的另一台服务器会使相同的验证超过十次查询并失败。

什么是空查询?

空查询是指未返回任何记录,或查询的名称不存在的 DNS 查询。RFC 7208 允许一次验证中出现两次空查询,第三次会导致 permerror。最常见的原因是 include 了已不存在的域名。

一个域名可以有两条 SPF 记录吗?

不可以。RFC 7208 只允许一条以 v=spf1 开头的记录,如果存在两条,每次评估都会以 permerror 结束。请合并它们:只保留一个 v=spf1,将两条记录中的 include 和 ip4 项都放入其中,并以一个 all 结尾。v=spf1 include:_spf.google.com include:servers.mcsv.net ~all 可以在一条记录中涵盖两个服务商。

完整指南: Multiple SPF records

SPF permerror 是什么意思?

永久错误:记录无法按已发布的内容进行评估,因此重试仍会得到相同结果。常见原因包括 DNS 查询超过 10 次、一个域名上存在两条 SPF 记录、语法错误,以及出现第三次空查询。DMARC 会将 permerror 视为 SPF 未通过。

完整指南: SPF permerror: too many DNS lookups

如果找不到 SPF 记录怎么办?

接收方会得到 none 结果,DMARC 对它的处理与 fail 相同,而且任何人都可以在信封发件人中使用你的域名。请在域名本身发布一条 TXT 记录,以 v=spf1 开头,列出代表你发送邮件的服务,并以 ~all 或 -all 结尾。

常见错误

其他免费工具