首页 > 解决方案 > SPF 包含语句仍未通过

问题描述

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

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

大约一周后,我查看了邮戳结果并插入了include:我想要通过但没有通过的域的声明。然后我又等了一周才看到结果。但是,结果显示这些域仍然没有通过 SPF 或 DKIM。下面是 SPF 记录,我已经编辑了其中的部分内容,但其中两个域是合法的,但仍然没有通过。

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

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

标签: mail-serverspfdkimdmarc

解决方案


问题在于 SPF DNS 查找限制我不知道这是一件事,我很惊讶在设置 SPF/DKIM/DMARC 的文档(无论是谷歌的官方文档还是其他)中都没有提到这一点,也没有出现在谷歌搜索中这个问题。此限制旨在防止拒绝服务攻击和无限 DNS 循环。

对于看到这篇文章的其他人

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

这条 SPF 记录实际上有将近 15 个 DNS 查询,每个域的限制是 10 个您可以通过AutoSPFEasy DMARC等服务了解您的域有多少 SPF DNS 查找

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

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

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

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

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

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

  4. 使用GoDaddy 的 API创建您自己的方法,其行为类似于 #2 和 #3,并酝酿一些对计划/作业执行更新查找并更新包括所有 IP 的单独 SPF 记录的东西。


推荐阅读