dns - SPF 记录中的 DNS 查找过多

标签 dns smtp mailchimp sendgrid spf

我的网站需要使用 Google Apps、SendGrid 和 MailChimp 服务发送电子邮件。 Google Apps 用于接收和阅读发送到我的域的电子邮件。

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

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

但是如果我用 http://www.kitterman.com/getspf2.py 测试它我明白了

PermError SPF Permanent Error: Too many DNS lookups

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

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

最佳答案

所以,我以前从未这样做过,但根据您发送过来的文章,这就是我的想法。

我们开始于:

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

在抛出 Too many DNS Lookups 错误之前,我们总共进行了 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

每个解析为以下值:

# _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

因此,Google 又为我们提供了 2 次查找,使总数达到 9 次查找

2。服务器.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 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 查找可能是多余的。

希望这有帮助!

关于dns - SPF 记录中的 DNS 查找过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14261214/

相关文章:

ruby-on-rails - 默认 :from is not working when using gmail SMTP

go - 使用 Golang 连接到 Exchange

php - 如何检查是否已建立与 Gmail SMTP 的连接

html - mailchimp 注册表单导致 404

ruby-on-rails - 如何通过 Mailchimp API 更新分组?

java - 基于访问的重定向

python - 如何告诉 python HTMLParser 停止

mysql - Nginx反向代理DNS配置

javascript - Mailchimp API 出错,无法使用 ajax 成功

ruby-on-rails - 通过 Heroku Rails 应用程序使用 DNS 和 SMTP 检查进行电子邮件验证