web-dev-qa-db-ja.com

SPFレコード内のDNSルックアップが多すぎる

私のウェブサイトは、Google Apps、SendGrid、MailChimpサービスを使用してメールを送信する必要があります。 Google Appsは、ドメインへの受信メールの受信と読み取りに使用されます。

ドメインのSPFレコードを設定する必要があります。以下は構文的に正しいです(AおよびMXトークンについてはわかりません):

"v = spf1 a mx include:_ spf.google.cominclude:servers.mcsv.netinclude:sendgrid.net〜all "

しかし、 http://www.kitterman.com/getspf2.py でテストすると

PermError SPFパーマネントエラー:DNSルックアップが多すぎます

http://www.onlineaspect.com/2009/03/20/too-many-dns-lookups-in-an-spf-record/ と同様の問題

SPFレコードを最適化/書き換えるにはどうすればよいですか?

36
Robert

それで、私は以前にこれをする必要がなかったが、あなたが送った記事に基づいて、これは私が思いついたものです。

始めたのは:

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. servers.mcsv.net

Mailchimpは、全体で3つの追加のルックアップを追加するため、少し面倒です。

v=spf1 include:spf1.mcsv.net include:spf2.mcsv.net include:spf.mandrillapp.com ?all

Mailchimpを介して送信する内容に応じて、これらのレコードの1つまたは2つを削除できる場合があります(ただし、自分で評価する必要があります)。

とにかく、それらは次のように解決します。

# 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を超えています)。

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 Lookupsです。それを10に下げる必要があります。以下にいくつかのオプションを概説しましたが、1つ以上を使用してダウンする必要があるかもしれません。

  1. リダイレクトされたspfレコードの一部を直接含めます。 spfレコードがリダイレクトするサーバーがわかったので、仲介者を切り取って直接含めることができます。 注:いずれかのサービスがSPFレコードを変更することになった場合、手動で更新するプロセスを実行する必要があります。

  2. 使用しているサービスの一部を削除します。これらのサービスをすべて使用するためのユースケースは不明ですが、使用できる可能性のある重複部分は間違いなくあります。たとえば、SendGridは、(1)トランザクション送信メール、(2)ニュースレター/マーケティングメール、および(3)受信メールをサポートしています。そのため、削減可能な冗長性が存在する場合があります。

  3. 冗長なMXレコードを削除します。設定によっては、MXルックアップが冗長になる場合があります。

お役に立てれば!

67
Swift

Swiftの答えは素晴らしいです。

上記で言及されていない手法は、これらの異なるルートを介してメールを送信するシステムに、独自のSPFレコードを持つ個別のサブドメインを使用できるかどうかを調べることです。

例えば。ドメインがexample.comの場合、Googleアプリに[email protected]などのアドレスから送信させます。次に、gapps.example.comを含む_spf.google.comのSPFレコードを作成し、メインの_spf.google.com SPFレコードからexample.comを削除して、ルックアップを3減らすことができます。

6
mc0e

SPF-tools *をご覧ください。これは、インクルードを使用する元のSPFレコードを、ip4およびip6フィールドのみを含む静的レコードに再構築するのに役立ちます。 APIを使用してローカルで実行されるDNSサーバーまたはホストされたDNSサービスと簡単に結合して、アップストリームのインクルードとすべてを同期させることができます。

*私は(現在、他の貢献者と一緒に)著者であり、Apache 2.0ライセンスの下でオープンソースです。

4
Ján Sáreník

数年前、私は hydrate-spf を作成しました。このツールは、検索結果を含めて1つの巨大なレコードにマージします。 READMEで述べたように、このアプローチは理想的ではありません-含まれているドメインがレコードを更新する機能を削除します。ただし、許可されている制限に達した場合は、当面の問題が解決され、定期的な更新により多少のメンテナンスが可能になります。

0
Xiong Chiamiov

SPFレコードをIPにフラット化することと、サブドメインを作成することを検討しました。それらはすべて多くの作業のように思えました。文字通りセットアップに数分かかるspfproxy.orgからのサービスを見つけました。基本的に、SPFマクロを使用して背後のDNSルックアップをマスクします。多くの企業がこれを提供しない理由は定かではありません。

0
AngularNerd

10のルックアップ制限は、DNSルックアップの制限です。 DNSルックアップを少なくするためにSPFレコードを平坦化し、それらをIPに置き換える(平坦化)ことは、制限を回避する方法です。

これは手動で行うこともできますが、プロバイダーの1つがIPを変更するたびにSPFレコードを更新する必要があります(頻繁に発生します)。

理想的な解決策は、SPFフラット化サービスを使用することです。これは、少量の場合は無料で、1か月あたり500通以上のメールは安価です。更新されたIPに含めるSPFレコードを定期的にポーリングします

Fraudmarc.com

開示:私はこの会社とは関係ありません。これは紹介リンクではありません

0
Gaia

この10-DNSルックアップ制限は、DNSインフラストラクチャに対するDDoS攻撃を防ぐためにSPF実装によって課せられます。

[〜#〜] dmarcly [〜#〜] のSafe SPF機能を使用すると、SPFレコードを書き換えずに制限を解除できます。

0
lgc_ustc