什么会引起 SPF PermError?
当一个域名上的 SPF 记录不能被正确地解释的话,SPF 返回 PermError (永久性错误)。与 SPF TempError (临时性错误),SPF PermError 需要管理员介入来修复该问题。
下面是引起 SPF PermError 的原因:
- 域名上发现多条 SPF 记录;
- SPF 记录语法不正确;
- 单次 SPF 检查调用的 DNS 查询超过 10 次;
- 单次 SPF 检查调用的 DNS 查询超过 2 次为无效;
- 在 redirect 中发生异常。
在本文中,我们将逐一了解这些情况。
域名上发现多条 SPF 记录
一个域名或者子域名上面只能够发布一条 SPF 记录;否则 SPF 返回 PermError。了解详情:可以在域名上发布多条 SPF 记录吗?
比如,如果您在 domain.com 上面发布了两条完全正确的 SPF 记录,SPF 会因此失败并返回 PermError:
v=spf1 a -all
v=spf1 mx -all
解决这个问题的办法是仅保留一个 SPF 记录,并且在该记录中包含所有必需的 mechanisms。比如,如果 a
和 mx
mechanisms 都是必需的,您可以把第一个 SPF 记录更新成:
v=spf1 a mx -all
然后移除第二个 SPF 记录,这样问题就解决了。
SPF 记录语法不正确
您的 SPF 记录的语法必须是正确的,否则 SPF 返回 PermError。
举个例子,下面的 SPF 记录有一个无效的 mechanism:
v=spf1 a im -all
由于在 SPF 规范中并没有定义 im
mechanism,所以它被认为是无效的。因此,该 SPF 记录的语法是错误的。
要修复这个错误,根据您的实际情况,把 im
变成一个有效的 SPF mechanism,或者移除它。
单次 SPF 检查调用的 DNS 查询超过 10 次
当 SPF 对域名上的 SPF 记录进行检查时,每次检查执行 DNS 查询的 mechanisms 和 modifiers 一定不能超过 10 次,其中包括 "include" mechanism 或者 "redirect" modifier 引起的查询。否则,SPF 返回 PermError。
举个例子,如果一个域名的 SPF 记录为:
v=spf1 a mx include:bluehost.com ?all
SPF 会失败并返回 PermError,这是因为 bluehost.com
已经包含 13 次 DNS 查询,仅仅是这个 mechanism 就已经违反了 SPF 中的 10 次 DNS 查询限制。
您可以使用 DMARCLY 的免费 SPF 记录检查器来检查您的 SPF 记录是否存在这个问题。
要解决这个问题,可以使用 DMARCLY 的 Safe SPF 功能。
参照 SPF PermError: Too Many DNS Lookups 来获取更多信息。
单次 SPF 检查调用的 DNS 查询超过 2 次为无效
在 SPF 检查中,如果无法解释 SPF 记录中的 mechanism/modifier 的 DNS host,这叫"无效查询"。这包括 "include", "a", "mx", "ptr", 和 "exists" mechanisms, 以及 "redirect" modifier。
如果单次 SPF 检查调用的 DNS 查询超过 2 次,那么 SPF 失败并返回 PermError。
举个例子,如果 badhost1
, badhost2
, 和 badhost3
主机名都不存在,并且您的 SPF 记录为如下所示:
v=spf1 a:badhost1 include:badhost2 exists:badhost3 -all
SPF 会失败并且返回 PermError,原因是上面的记录的无效查询数目为 3。
为了避免这个错误,您可以在这些主机名上面发布有效的 SPF 记录,或者从 SPF 记录中移除这些主机名。
在 redirect 中发生异常
如果 SPF 记录中有 "redirect" mechanism,那么它必须指向一个有效的 SPF 记录,否则 SPF 失败并返回 PermError。
例如,如果您的 SPF 记录如下所示:
v=spf1 redirect=_spf.example.com
如果 _spf.example.com 上面没有发布 SPF 记录的话,SPF 失败并返回 PermError。
要避免这个错误,确保您的 redirect mechanism 指向一个有效的 SPF 记录。在上面的例子中,在 _spf.example.com 上面发布一条 SPF 记录。
要了解更多 SPF 检查结果,请参阅 Why SPF Authentication Fails。
Protect Business Email & Improve Email Deliverability
Get a 14 day trial. No credit card required.
Create Account