SPF 包含语句仍未通过

SPF Include Statements Still Not Passing

像许多其他人一样,我在 SPF/DKIM/DMARC 的世界中有些困惑。 大约 4 周前,我为使用 Google 的邮件服务器的 GoDaddy 托管域正确设置了所有内容 (SPF/DKIM/DMARC)。

我使用 p=none 将 _dmarc TXT 记录设置为采取零操作,并且我使用 Postmark 监控结果以查看一周内通过和失败的内容。

大约一周后,我查看了 Postmark 结果并为我想通过但没有通过的域插入了 include: 语句。然后我又等了一个星期才看到结果。但是,结果显示域仍未通过 SPF 或 DKIM。下面是 SPF 记录,我已经编辑了其中透露的部分,但其中两个域是合法的,但仍然没有通过。

v=spf1 include:_spf.google.com include:freshemail.io include:cherryroad.com ~all

我是否需要在 include 语句中使用实际 IP 地址而不是域?邮戳也列出了这些,这样就很容易了。

不,您不应该在那里复制他们的 IP,因为他们可能会发生变化,尤其是 Google 的 IP。

如果它失败了,大概你有一些结果(通常在消息 headers 中)告诉你到底是哪个 IP 失败了,你可以手动追踪它,尽管这些包括在内,对其进行反向查找等

但是,您还使用了 GoDaddy,这主要保证无法正常工作,因为他们要么阻止出站 SMTP 要么通过他们自己的服务器路由它,因此您不太可能获得 SPF 通行证。

问题出在 SPF DNS lookup limits. 我不知道这是一个问题,令我惊讶的是文档中的任何地方都没有提到这一点(无论是 Google 的官方文档还是其他)关于设置 SPF/DKIM/DMARC,并没有出现在这个问题的谷歌搜索中。 此限制旨在防止拒绝服务攻击和无限 DNS 循环。

对于看到此内容的其他人post

v=spf1 include:_spf.google.com include:freshemail.io include:cherryroad.com ~all

此 SPF 记录实际上有将近 15 次 DNS 查找,每个域的限制为 10 次。您可以通过 AutoSPF or Easy DMARC

等服务了解您的域有多少次 SPF DNS 查找

解决方案,一旦您看到您的 DNS 查找总数,就会有四个选项:

  1. 创建子域并使用它们来使记录多样化。例如,使用“email@business.mydomain.com”作为 freshemail.io 的电子邮件。然后在该子域的 SPF 记录上,您将只有 v=spf1 include:freshemail.io 导致该域的 DNS 查找少于 10 次。

  2. 正如@Synchro 所提到的,您不想使用 IP,因为它们可以很好地改变,但是使用 IP 而不是域名的概念 确实有效 因为 IP 地址不需要 DNS 查找。检查您正在使用的任何服务的 support/engineering,它们可能具有不经常更改的 IP(或 IP 范围)。使用此功能,您也许可以将 DNS 查找次数减少到 10 次。

    请注意,Google 占用大约 3 次 DNS 查找,您可能希望将其保留为 _spf.google.com 值

    请注意,每条 SPF 记录也有 255 个字符的限制,因此如果您只使用 IP,您可能需要将其分成很多 SPF 记录

  3. 使用 SPF 扁平化压缩 服务,例如 AutoSPF。本质上,这些服务采用方法 #2,但每隔几个小时就会进行一些后端工作,以检查和更新与域关联的 IP 地址。然后他们会为您提供像 v=spf1 include:_6359384.autospf.com ~all 这样的“压缩”记录,它会引用您的所有记录,从而大大减少 DNS 查找次数。

  4. 使用 GoDaddy's API 创建您自己的方法,类似于 #2 和 #3包括所有 IP 的记录。