SPF记录中的DNS查找过多

SPF记录中的DNS查找过多,dns,smtp,mailchimp,sendgrid,spf,Dns,Smtp,Mailchimp,Sendgrid,Spf,我的网站需要发送带有谷歌应用程序、SendGrid和MailChimp服务的电子邮件。谷歌应用程序用于接收和读取我的域名收到的电子邮件 我需要为我的域设置SPF记录。以下语法正确(不确定A和MX令牌): “v=spf1 a mx include:\u spf.google.cominclude:servers.mcsv.net 包括:sendgrid.net~all” 但是如果我用它测试,我会 PermError SPF永久性错误:DNS查找过多 类似于 如何优化/重写我的SPF记录?因此,我

我的网站需要发送带有谷歌应用程序、SendGrid和MailChimp服务的电子邮件。谷歌应用程序用于接收和读取我的域名收到的电子邮件

我需要为我的域设置SPF记录。以下语法正确(不确定A和MX令牌):

“v=spf1 a mx include:\u spf.google.cominclude:servers.mcsv.net 包括:sendgrid.net~all”

但是如果我用它测试,我会

PermError SPF永久性错误:DNS查找过多

类似于


如何优化/重写我的SPF记录?

因此,我以前从来没有这样做过,但根据你发过来的文章,我想到了这一点

我们从以下方面开始:

v=spf1 a mx include:_spf.google.com include:servers.mcsv.net include:sendgrid.net ~all
在抛出
过多DNS查找之前,我们总共进行了10次查找
错误:

  2 (Initial TXT & SPF Lookups)
  2 (a & mx Lookups)
  1 (_spf.google.com)
  1 (servers.mcsv.net)
 +1 (sendgrid.net)
 -----------------
  7 Lookups
因此,即使不遵循包含的SPF记录,我们也有7次查找


现在,让我们潜得更深一层

1. _spf.google.com google SPF记录的计算结果为:

v=spf1 include:_netblocks.google.com include:_netblocks6.google.com ?all
v=spf1 ip4:208.115.235.0/24 ip4:74.63.231.0/24 ip4:74.63.247.0/24 ip4:74.63.236.0/24 ip4:208.115.239.0/24 ip4:173.193.132.0/24 ip4:173.193.133.0/24 ip4:208.117.48.0/20 ip4:50.31.32.0/19 ip4:198.37.144.0/20 ~all
每一个都解析为以下值:

# _netblocks.google.com
v=spf1 ip4:216.239.32.0/19 ip4:64.233.160.0/19 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:209.85.128.0/17 ip4:66.102.0.0/20 ip4:74.125.0.0/16 ip4:64.18.0.0/20 ip4:207.126.144.0/20 ip4:173.194.0.0/16 ?all

# _netblocks6.google.com
v=spf1 ip6:2607:f8b0:4000::/36 ip6:2a00:1450:4000::/36 ?all
因此,谷歌给我们提供了2个以上的查询,使总数达到9个

2.servers.mcsv.net Mailchimp有点糟糕,因为它增加了3个额外的查找:

v=spf1 include:spf1.mcsv.net include:spf2.mcsv.net include:spf.mandrillapp.com ?all
我可以想象,根据您通过Mailchimp发送的内容,您可能能够删除其中的一个或两个记录(但您必须自己进行评估)

无论如何,这些解决方案解决了以下问题:

# spf1.mcsv.net
v=spf1 ip4:207.97.237.194/31 ip4:207.97.238.88/29 ip4:207.97.240.168/29 ip4:69.20.10.80/29 ip4:69.20.41.72/27 ip4:74.205.22.1/27 ip4:69.20.90.0/26 ?all

# spf2.mcsv.net
v=spf1 ip4:204.232.163.0/24 ip4:72.26.195.64/27 ip4:74.63.47.96/27 ip4:173.231.138.192/27 ip4:173.231.139.0/24 ip4:173.231.176.0/20 ip4:205.201.128.0/24 ?all

# spf.mandrillapp.com
v=spf1 ip4:205.201.136.0/24 ip4:205.201.137.0/24 ?all
这使我们总共进行了12次查找(已经超出限制了两次)

2.sendgrid.net SendGrid最终是我们额外查找的最少数量

v=spf1 ip4:208.115.214.0/24 ip4:74.63.202.0/24 ip4:75.126.200.128/27 ip4:75.126.253.0/24 ip4:67.228.50.32/27 ip4:174.36.80.208/28 ip4:174.36.92.96/27 ip4:69.162.98.0/24 ip4:74.63.194.0/24 ip4:74.63.234.0/24 ip4:74.63.235.0/24 include:sendgrid.biz ~all
因此,此处唯一的附加查找是
sendgrid.biz
,其计算结果为:

v=spf1 include:_netblocks.google.com include:_netblocks6.google.com ?all
v=spf1 ip4:208.115.235.0/24 ip4:74.63.231.0/24 ip4:74.63.247.0/24 ip4:74.63.236.0/24 ip4:208.115.239.0/24 ip4:173.193.132.0/24 ip4:173.193.133.0/24 ip4:208.117.48.0/20 ip4:50.31.32.0/19 ip4:198.37.144.0/20 ~all
这使我们的总查找次数达到14次


因此,我们总共进行了14次查找。我们需要把数字降到10。我在下面列出了几个选项,您可能需要使用其中一个以上的选项

  • 直接包括一些重定向的spf记录。现在我们知道了spf记录重定向到哪些服务器,您可以删除中间人并直接将其包括在内。注意:如果任何服务最终更改了其SPF记录,则必须手动更新您的记录

  • 删除您正在使用的某些服务。不确定您拥有所有这些服务的用例是什么,但肯定存在一些您可能能够使用的重叠。例如,SendGrid支持(1)事务性传出邮件,(2)新闻稿/营销邮件,以及(3)传入邮件。因此,可能存在一些可减少的冗余

  • 如果MX记录是冗余的,请将其删除。根据您的设置,MX查找可能是冗余的

  • 希望这有帮助

    看看*有助于将SPF记录从使用includes的原始记录重新组合到仅包含
    ip4
    ip6
    字段的静态记录中。它可以使用API轻松地与本地运行的DNS服务器或托管的DNS服务耦合在一起,以使所有内容与上游包保持同步


    *我是作者(现在和其他贡献者一起),它是Apache2.0许可下的开源软件。

    Swift的回答非常好

    上面没有提到的一种技术是查看是否可以将具有各自SPF记录的独立子域用于通过这些不同路由发送邮件的系统


    例如,如果域是
    example.com
    ,则让谷歌应用程序从
    user@gapps.example.com
    。然后,
    gapps.example.com
    可以有一个SPF记录,其中包括
    \u SPF.google.com
    ,并且
    \u SPF.google.com
    可以从主
    example.com
    SPF记录中删除,从而减少3次查找。

    我们探索了将SPF记录扁平化为IP以及创建子域的方法。所有这些似乎都需要做很多工作。我们从spfproxy.org上找到了一个服务,它实际上需要几分钟来安装。它们基本上使用SPF宏来屏蔽后面的DNS查找。不知道为什么更多的公司不提供这项服务。

    几年前我写道,一个查找工具包含并将结果合并到一个巨大的记录中。正如自述文件中所提到的,这种方法并不理想——它会使您包含的域无法更新其记录。但是,当您遇到允许的限制时,它将解决眼前的问题,并且可以通过定期更新在一定程度上保持可维护性。

    10查找限制是DNS查找的限制。将SPF记录展平以包含较少的DNS查找,并用它们代替IP(展平)是绕过限制的一种方法

    您可以手动执行此操作,但是每次其中一个提供商更改其IP时(这种情况经常发生),您都必须更新SPF记录

    理想的解决方案是使用SPF展平服务。这是一个免费的低容量,或便宜的超过500封电子邮件/月。It定期轮询您要包含的SPF记录以获取更新的IP。


    披露:我与该公司没有关联,这不是一个推荐链接

    此10 DNS查找限制由SPF实施实施,以防止针对DNS基础设施的DDoS攻击


    使用的安全SPF功能,您可以在不重写SPF记录的情况下解除限制。

    关于选项3:我不擅长MX记录。由于我只使用谷歌应用程序接收电子邮件,我可以将SPF设置为仅从谷歌接收MX,而不从SendGrid和MailChimp接收MX吗?例如,这可以工作,但不包括MX(因此我认为我需要谷歌的MX)v=spf1 a include:_SPF.Google.com include:servers.mcsv.net include:SendGrid.net~allIn SPF,MX条目意味着信任指定为MX的主机