什么会引起 SPF PermError?

SPF 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。比如,如果 amx 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

Previous Post Next Post

 Protect Business Email & Improve Email Deliverability

Get a 14 day trial. No credit card required.

Create Account