我们正在从自托管邮件平台迁移到 Office365 for Businesses。除了 SPF 记录之外,一切都很顺利。目前,我们有v=spf1 a mx include:spf.mtasv.net -all
TXT 记录,但 Office365 也必须允许v=spf1 include:spf.protection.outlook.com -all
。因此,我继续将它们合并到:v=spf1 a mx include:spf.mtasv.net include:spf.protection.outlook.com -all
。当根据 studentkickoff.be 的域检查此 SPF 记录时,结果为PermError SPF Permanent Error: Too many DNS lookups
。
我的问题如下:如何解决此错误?我知道我可以用等效记录替换某些记录ip4
,但执行此操作时,Office365 的在线疑难解答程序一直抱怨找不到该记录:
提前致谢!
答案1
除了已经说过的所有内容之外,让我们关注这一点:
My question is the following: How do I work around this error? I know I can replace some
records with their ip4 equivalent, but when doing this, the online troubleshooter of
Office365 kept complaining that the record was not found:
我最近遇到了同样的问题。
虽然有记录显示它应该可以工作(http://community.office365.com/en-us/w/exchange/customize-an-spf-record-to-validate-outbound-email-sent-from-your-domain.aspx) 我们永远无法让它用不同的记录进行验证。
无论是 还是a:some.host.com
,ip4:127.0.0.1
它总是抱怨 SPF 记录错误/缺失。
最后,我们将记录更改为v=spf1 include:spf.protection.outlook.com -all
以使验证向导满意,然后将其调整回真实记录。
答案2
答案取自SO这里作者:迅速。根据问题进行了调整。另外,请阅读这里关于一般的 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。我在下面列出了几个选项,您可能需要使用其中多个选项才能将其减少。
直接包含一些重定向的 spf 记录。现在我们知道了 spf 记录重定向到哪些服务器,您可以省去中间人并直接包含它们。 注意:如果任何服务最终更改了其 SPF 记录,则您必须手动完成更新过程。
删除一些您正在使用的服务。不确定您使用所有这些服务的用例是什么,但肯定有一些重叠的服务您可以使用。例如,SendGrid 支持 (1) 事务性外发邮件、(2) 新闻通讯/营销电子邮件和 (3) 收件邮件。因此可能会有一些可减少的冗余。
如果 MX 记录是多余的,请将其删除。根据您的设置,MX 查找可能是多余的。
答案3
您可以使用 SPF 代理服务,例如 spfproxy.org。这样您就无需将 DNS 条目平铺到 IP 地址中,甚至无需处理子域。您只需设置 SPF 代理,它就会在后端执行所有查找。这是我发现的唯一一种优雅地解决这个问题的方法。
答案4
我认为这是专门创建用于通过第三方发送的子域名的一个很好的理由:
如果您有不同的第三方发件人处理可以注册的不同事项,那么设置单独的子域名是一种很好的管理方法:
子域名可以基于正在发送的内容:
- 通过第三方发送的新闻通讯 NewsLetterName.Example.com 可能具有特定于该第三方的 spf 记录。
- 当“更新”已注册时,请访问 Updates.Example.com。
- 当“支持”通过第三方提供时,请使用 Support.Example.com。
或者子域名可以基于其所属的第三方发件人:
- ccMail.Example.com 用于 Constant Contact 电子邮件
- mcMail.Example.com 用于 Mail Chimp 电子邮件
- zendeskMail.Example.com 用于 ZendDesk 电子邮件
现在我已经规划好了,我真的很喜欢这个想法!我会亲自尝试一下。这意味着要为这些子域设置额外的电子邮件地址,但这将使电子邮件的组织更加容易。