SPF记录中的DNS查找过多
我的网站需要发送带有谷歌应用程序、SendGrid和MailChimp服务的电子邮件。谷歌应用程序用于接收和读取我的域名收到的电子邮件 我需要为我的域设置SPF记录。以下语法正确(不确定A和MX令牌): “v=spf1 a mx include:\u spf.google.cominclude:servers.mcsv.net 包括:sendgrid.net~all” 但是如果我用它测试,我会 PermError 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记录?因此,我
如何优化/重写我的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。我在下面列出了几个选项,您可能需要使用其中一个以上的选项
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的主机