在SPF记录过多的DNS查询(Too many DNS lookups in an SPF reco

2019-07-18 02:04发布

我的网站需要与谷歌企业应用套件,SendGrid和MailChimp服务发送电子邮件。 谷歌企业应用套件,用于接收和阅读收到的电子邮件到我的域名。

我需要设置SPF记录我的域名。 下面是语法正确的(不知道A和MX令牌):

“V = SPF1一个MX包括:_spf.google.com包括:servers.mcsv.net包括:sendgrid.net〜所有”

但是,如果我有测试http://www.kitterman.com/getspf2.py我得到

PermError的SPF永久错误:太多的DNS查询

类似的问题,因为http://www.onlineaspect.com/2009/03/20/too-many-dns-lookups-in-an-spf-record/

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

Answer 1:

所以,我以前从来没有做到这一点,但基于您发送的文章,这是我想出了。

我们开始:

v=spf1 a mx include:_spf.google.com include:servers.mcsv.net include:sendgrid.net ~all

我们得到10个总查找我们扔之前Too many DNS lookups错误:

  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

在谷歌SPF记录计算结果为:

v=spf1 include:_netblocks.google.com include:_netblocks6.google.com ?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是一个有点doosey的,因为它增加了一个全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 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,我几个选项下面列出,您可能需要使用超过1人获得了下去。

  1. 直接包括一些重定向的SPF记录。 现在我们知道哪些服务器的SPF记录重定向到,你可以切出的中间人和直接囊括其中。 注意:如果任何服务最终改变他们的SPF记录,你必须去通过手动更新你的过程。

  2. 删除一些你正在使用的服务。 不知道你的使用情况是用于具有所有这些服务是什么,但肯定有一些重叠,你可能能够使用。 例如,支撑件SendGrid(1)的事务发出的邮件,(2)的通讯/营销电子邮件,以及(3)接收的邮件。 所以可能会有一些还原冗余。

  3. 删除MX记录,如果它是多余的。 根据你的设置中,MX查找可以是多余的。

希望这可以帮助!



Answer 2:

斯威夫特的答案是优秀的。

这是不是上面提到的技术是看是否与自己的SPF记录单独的子域可用于那些通过这些不同的路由发送邮件系统。

例如,如果域名是example.com ,有谷歌应用程序从类似地址发送user@gapps.example.com 。 然后可以有一个SPF记录gapps.example.com包括_spf.google.com ,和_spf.google.com可以从主去除example.com SPF记录,其通过3减少查找。



Answer 3:

看看SPF-工具 *与从使用包括到包含只是一个静态的原重组SPF记录帮助ip4ip6领域。 它可以方便地用在本地运行的DNS服务器或托管DNS服务使用他们的API把一切都在同步与上游包括耦合在一起。

*我是作者(现在连同其他捐助者),它是根据Apache 2.0许可开源。



Answer 4:

我们探索扁平化SPF记录到IP地址,以及创建一个子域。 所有这些似乎是一个大量的工作。 我们发现从spfproxy.org服务字面上需要几分钟来设置。 他们基本上掩盖使用SPF宏背后的DNS查找。 不知道为什么越来越多的公司不提供此。



Answer 5:

几年前,我写水合物的SPF ,一个工具,查找包括与合并的结果成一个巨大的纪录。 正如在自述文件中提到,这种做法是不理想的 - 它消除了你的包括域更新记录的能力。 但是,当你都撞在允许的极限,它会解决眼前的问题,并可以通过定期更新保持几分维护。



Answer 6:

10查找限制是DNS查找的限制。 扁平化的SPF记录以包括更少的DNS查找和替换他们的IP(扁平化)是一个办法让周围的限制。

您可以手动做到这一点,但你必须更新每次提供商之一,改变了他们的IP地址(这经常发生),你的SPF记录。

理想的解决方案是使用SPF扁平化的服务 。 这一个是免费的低量,还是便宜了超过500个电子邮件/月。 它定期轮询你想要的SPF记录,包括更新IP地址。

Fraudmarc.com

披露:我不跟这家公司有关,这是不是一个推荐链接



Answer 7:

这10-DNS的查找限制由SPF实现强加阻止针对DNS基础设施的DDoS攻击。

随着DMARCLY的安全SPF功能,可以解除限制而无需重写您的SPF记录。



文章来源: Too many DNS lookups in an SPF record