在SPFlogging中超出了最大DNS-互动条款限制的解决方法?

作为托pipe服务提供商,我们代表我们的客户发送电子邮件,所以我们帮助他们在他们的DNS中设置DKIM和SPF电子邮件logging,以获得正确的电子邮件传送能力。 我们一直build议他们使用http://mail-tester.com来testing他们没有错过任何东西,我喜欢这个工具很多。

我们遇到的一个问题是,根据域名,SPFlogging中的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个,为什么这里会出现“10个”DNS请求呢? 在这里回答

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

  3. 这10个DNS互动术语是否限制了今天的networking真正的问题? 正如你所看到的,这个客户有很多的服务为他们发送电子邮件,他们都是合法的。 也许这个DNS限制是在2000年设定的,这样的委托电子邮件服务并不常见?

是的,我们可以让我们的客户在SPFlogging中更改包含IP地址,但是如果我们更改IP地址,那么我们就会陷入困境,一堆客户的资料将被打破。 真的不想那样做..

有什么解决方法呢?

  1. 假设冗余(如对_spf.google.com多次引用及其引用的logging)仅计算一次,则从已经查找了初始logging的点开始,我计算了17次查找。 (见下文。)

  2. 它拒绝查找评估您的SPFlogging所需的所有logging,因为这将是“太多的工作”。 据推测,这意味着它将把你的域名视为没有SPFlogging(或可能拒绝)。 规范说, 这导致了permerror ,这使得它相当开放,让收件人决定做什么 。

  3. 一般来说,我认为虐待一直在上升而不是下降。 这个限制似乎是为了阻止滥用发件人域名,否则这些域名可能会通过巨大的SPF链来压倒接收者,从而可能导致DoS。

我认为,虽然外包电子邮件是常见的,但将电子邮件外包给六个不同的提供商实际上并不常见。 你必须以某种方式优化SPFlogging。
(一方面,对aspmx.googlemail.com的引用看起来很浪费,因为它立即redirect到一个不同的名字。)

 <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" 
  1. 大部分已经回答,请注意,包括谷歌这种方式是错误的 – 你想使用_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" 

这个查找将自己消耗5/10所有 – 4/10仍然吸收,但less了20%。

  1. 它会停止处理,并返回一个永久性的错误 – 这取决于使用SPF的引擎决定如何处理永久性错误。

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

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

正如所接受的答案之一所表明的一样,UNIX系统的许多底层工具确实强制实施了这个限制(尽pipe并非完全相同),所以使用它们的任何SPF实现 – 几乎全部在UNIX上 – 也将执行这些限制。 Windows系统本身就是一个规律,我无法对它们有任何的解释。

解决方法是有一个cron作业来评估你的外包SPFlogging链,将它们表示为ipv4和ipv6 netblocks,并将其logging到你的logging中。 不要忘了-all

就你而言,你希望客户能够发布他们不需要维护的SPFlogging。 一种可能性是让每个客户发布一个包含redirect=spf.client1.jeffs-company.example的logging,然后在jeffs-company.example中执行维护networking块列表的工作。

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

这个限制确实使得你的电子邮件外包给六七个大型行动是很困难的。 但可以说,如果你这样做了,你有任何实际的目的,无论如何失去了你的电子邮件的控制权。

总有一天,某个分包合同程序员的存在,你完全没有意识到,你无法控制的人会错误地放置一个分号,大量的假电子邮件将被发送到你的SPF中。 完全控制你的电子邮件需要完全控制你的电子邮件基础设施,这在我看来完全不符合那么多的外包。