SPF 记录中超出最大 DNS 交互条款限制的解决方法?

Jef*_*ood 16 domain-name-system spf

作为托管服务提供商,我们代表客户发送电子邮件,因此我们帮助他们在他们的 DNS 中设置 DKIM 和 SPF 电子邮件记录,以确保电子邮件的可传递性恰到好处。我们一直建议他们使用http://mail-tester.com来测试他们没有遗漏任何东西,我非常喜欢这个工具。

我们遇到过几次但我不确定的问题是基于域名的 SPF 记录的 DNS“限制”。所以如果你有这个:

v=spf1 a include:aspmx.googlemail.com include:campaignmonitor.com include:authsmtp.com include:mail.zendesk.com include:salesforce.com include:_hostedspf.discourse.org ~all

你会得到

example.com ... campaignmonitor.com: Maximum DNS-interactive term limit (10) exceeded

像这样:

邮件测试结果

我对此有一些疑问。

  1. 我在这里数了 6 个域名,而不是 10 个,那么为什么这里会遇到“十个”DNS 请求? 在这里回答

  2. 这 10 个 DNS 交互术语限制是警告还是真正的错误?例如,我们应该关心吗?它有点唠叨我们的客户,他们给我们发电子邮件寻求支持。 在这里回答

  3. 这 10 个 DNS 交互术语限制是当今网络上的真正问题吗?如您所见,该客户有很多为他们发送电子邮件的服务,而且这些服务都是合法的。也许这个 DNS 限制是在 2000 年设置的,当时委托这样的电子邮件服务并不常见?

是的,我们可以让我们的客户将 SPF 记录中的包含更改为 IP,但这会使我们陷入困境,如果我们更改 IP,一堆客户的东西就会损坏。真的不想这么做。。

对此有哪些解决方法?

Håk*_*ist 8

  1. 假设冗余(如多次引用_spf.google.com和它引用的记录)只计算一次,我从您已经查找过初始记录的位置开始计算 17 次查找。(见下文。)

  2. 它拒绝查找评估您的 SPF 记录所需的所有记录,因为这“工作量太大”。大概这意味着它会将您的域视为没有 SPF 记录(或可能拒绝它)。规范说这会导致 permerror,这使得接收者决定做什么是相当开放的

  3. 我认为,总体而言,滥用行为一直在上升而不是下降。此限制似乎是为了阻止滥用发件人域,否则这些域可能会用庞大的 SPF 链压倒收件人,从而可能导致 DoS。

我认为虽然外包电子邮件很常见,但将电子邮件外包给六个不同的提供商实际上并不常见。您必须以某种方式优化 SPF 记录。
(一方面,对的引用aspmx.googlemail.com似乎很浪费,因为它会立即重定向到不同的名称。)

<lookup of example.com A>                   #1
$ dig aspmx.googlemail.com TXT +short       #2
"v=spf1 redirect=_spf.google.com"
$ dig _spf.google.com TXT +short            #3
"v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"
$ dig _netblocks.google.com TXT +short      #4
"v=spf1 ip4:64.18.0.0/20 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:173.194.0.0/16 ip4:207.126.144.0/20 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all"
$ dig _netblocks2.google.com TXT +short     #5
"v=spf1 ip6:2001:4860:4000::/36 ip6:2404:6800:4000::/36 ip6:2607:f8b0:4000::/36 ip6:2800:3f0:4000::/36 ip6:2a00:1450:4000::/36 ip6:2c0f:fb50:4000::/36 ~all"
$ dig _netblocks3.google.com TXT +short     #6
"v=spf1 ~all"
$ dig campaignmonitor.com TXT +short        #7
"google-site-verification=HcHoB67Mph6vl5_x4gK5MN9YwN5gMgfZYdNmsP07tIg"
"v=spf1 mx ptr ip4:23.253.29.45/29 ip4:203.65.192.250 include:cmail1.com include:_spf.google.com include:stspg-customer.com ~all"
$ dig cmail1.com TXT +short                 #8
"google-site-verification=HSJ8sL4AxQo0YHHNk9RwDqs0p3lJPGmc1nCrSsmous8"
"mailru-verification: 95d4c6eb0645b43c"
"v=spf1 ip4:103.28.42.0/24 ip4:146.88.28.0/24 ip4:163.47.180.0/22 ip4:203.55.21.0/24 ip4:204.75.142.0/24 ~all"
$ dig stspg-customer.com TXT +short         #9
"v=spf1 ip4:166.78.68.221 ip4:166.78.69.146 ip4:23.253.182.103 ip4:192.237.159.42 ip4:192.237.159.43 ip4:167.89.46.159 ip4:167.89.64.9 ip4:167.89.65.0 ip4:167.89.65.100 ip4:167.89.65.53 -all"
$ dig authsmtp.com TXT +short               #10
"v=spf1 include:spf-a.authsmtp.com include:spf-b.authsmtp.com ~all"
"google-site-verification=skc1TleK4GylDiNZUayfvWWgqZIxmmiRj4KgXlCgB8E"
$ dig spf-a.authsmtp.com TXT +short         #11
"v=spf1 ip4:62.13.128.0/24 ip4:62.13.129.128/25 ip4:62.13.136.0/22 ip4:62.13.140.0/22 ip4:62.13.144.0/22 ip4:62.13.148.0/23 ip4:62.13.150.0/23 ip4:62.13.152.0/23 ~all"
$ dig spf-b.authsmtp.com TXT +short         #12
"v=spf1 ip4:72.52.72.32/28 ip4:64.49.192.16/29 ip4:209.61.188.242 ip4:64.49.192.24 ip4:64.49.192.25 ip4:64.49.210.64/29 ip4:64.49.210.72/30 ip4:64.49.210.76 ip4:64.49.210.77 ip4:64.49.210.78 ~all"
$ dig mail.zendesk.com TXT +short           #13
"v=spf1 ip4:192.161.144.0/20 ip4:185.12.80.0/22 ip4:96.46.150.192/27 ip4:174.137.46.0/24 ~all"
$ dig salesforce.com TXT +short             #14
"adobe-idp-site-verification=898b7dda-16a9-41b7-9b84-22350b35b562"
"MS=749862C9F42827A017A6EA2D147C7E96B3006061"
"MS=ms68630177"
"v=spf1 include:_spf.google.com include:_spfblock.salesforce.com include:_qa.salesforce.com ip4:136.146.208.16/28 ip4:136.146.210.16/28 ip4:136.146.208.240/28 ip4:136.146.210.240/28 ip4:85.222.130.224/28 ip4:136.147.62.224/28 ip4:136.147.46.224/28 mx ~all"
$ dig _spfblock.salesforce.com TXT +short   #15
"v=spf1 ip4:96.43.144.0/20 ip4:182.50.76.0/22 ip4:202.129.242.0/23 ip4:204.14.232.0/21 ip4:62.17.146.128/26 ip4:64.18.0.0/20 ip4:207.126.144.0/20 ip4:68.232.207.20 ip4:207.67.38.45 ip4:198.245.81.1 ip4:198.245.95.4/30 ip4:136.146.128.64/27  ~all"
$ dig _qa.salesforce.com TXT +short         #16
"v=spf1 ip4:199.122.122.176/28 ip4:199.122.121.112/28 ip4:199.122.122.240/28 ip4:66.231.95.0/29 ~all"
$ dig _hostedspf.discourse.org TXT +short   #17
"v=spf1 ip4:64.71.148.0/29 ip6:2001:470:1:3c2::/64 -all"
Run Code Online (Sandbox Code Playgroud)


Mik*_*eyB 8

  1. 大部分已经回答,请注意以这种方式包含 Google是错误的- 您想要使用_spf.google.com或招致重定向的惩罚:

    ? ? host -t txt aspmx.googlemail.com
    aspmx.googlemail.com descriptive text "v=spf1 redirect=_spf.google.com"
    
    ? ? host -t txt _spf.google.com
    _spf.google.com descriptive text "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"
    
    Run Code Online (Sandbox Code Playgroud)

该查找将自行消耗 5/10 - 4/10 仍然很糟糕,但减少了 20%。

  1. 它将停止处理并返回一个永久性错误- 由使用 SPF 的引擎决定如何处理永久性错误。

  2. 是的 - 没有处理限制,SPF 机制可以用作对抗第三方或第二方的 DoS 放大器

作为一种解决方法,电子邮件可以来自主属性的子域 -community.largecorporation.com例如。


Mad*_*ter 5

正如对链接问题之一的公认答案所表明的那样,UNIX 系统的许多底层工具确实强制执行了此限制(尽管并非全部以完全相同的方式),因此任何使用它们的 SPF 实现 - 这几乎都是在 UNIX 上- 也将强制执行这些限制。Windows 系统本身就是一项法律,我无法解释它们。

解决方法是使用 cron 作业来评估您的外包 SPF 记录链,将它们全部表示为 ipv4 和 ipv6 网络块,并将其纳入您的记录。 不要忘记-all.

在您的情况下,您希望客户能够发布他们不需要维护的 SPF 记录。一种可能性是让每个客户发布包含一个记录redirect=spf.client1.jeffs-company.example,然后你做维护netblocks在列表的跑腿jeffs-company.example

也许这个 DNS 限制是在 2000 年设置的,当时委托这样的电子邮件服务并不常见?

限制确实使您很难将电子邮件外包给六七个大型操作;但可以说,如果您这样做,出于所有实际目的,您无论如何都失去了对电子邮件的控制权。

在某个地方,总有一天,某些您完全不知道其存在且您无法控制的分包程序员将放错分号,并且会发送大量带有您的 SPF 授权的虚假电子邮件。完全控制您的电子邮件需要完全控制您的电子邮件基础设施,在我看来,这与那么多的外包完全不一致。