SPF Permerrorを修正する:SPFのDNSルックアップ制限を超える問題の解決方法
メール認証のためにSPFの設定を万全にする
2024年2月27日
著者: Maitham Al Lawati
翻訳: 竹洞 陽一郎
この記事はPowerDMARCのブログ記事 Fix SPF Permerror: Overcome SPF Too Many DNS Lookups Limit の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。
SPF Permerrorは、ドメインのSPFレコードを処理中に永続的なエラーが発生したことを示します。
ドメイン所有者がSPF Permerrorに直面する理由は次のように多岐にわたります。
- 無効または誤ったSPFレコード
- DNSルックアップが多すぎて、SPFのルックアップ制限を超えている
- Voidルックアップが多すぎて、SPFのルックアップ制限を超えている
- SPFレコードが長すぎる
- 単一ドメインに複数のSPFレコードが公開されている
SPF Permerrorを修正するには、ドメイン所有者はSPFのDNSルックアップを10件に制限する必要があります。
また、SPFの文字数が最適な長さであることも確認すべきです。
まずはSPFレコードの構文と設定ミスを確認することが、SPFエラーを検出するための良い出発点です。
Permerrorの問題が解決されると、偽陽性を回避し、SPFが機能しなくなることを防ぐことができます。
SPF Permerrorとは何ですか?
SPF Permerrorは、SPFレコードに根本的な問題があることを示しています。
これにより、送信サーバーが認証されているかどうかを判断できなくなります。
SPF Permerror(SPFの永続的エラー)は、メール認証のためにSender Policy Framework(SPF)レコードを評価する際に発生します。
SPF FailとPermerrorの違いは何ですか?
SPF FailとSPF Permerrorの違いは、SPF認証中に発生するエラーの性質にあります。
- SPF Fail
- メールサーバーが送信者のドメインのSPFレコードをチェックし、その送信サーバーがそのドメインからメールを送信する権限がないと判断した場合、SPF Failが発生します。
- SPF Permerror
-
SPF Permerrorは、SPFレコードに根本的な問題があり、それが正しく評価されない場合に発生します。
Permerrorは、SPFレコードが正確に処理できないため、送信サーバーが認証されているかどうかを判断できないことを示しています。
10 DNSルックアップ制限とは何ですか?
10 DNSルックアップ制限は、SPF(Sender Policy Framework)レコードに課せられた制限です。
つまり、メールサーバーが受信したメールを処理する際、送信ドメインに関連するSPFレコードを取得するために、最大10回のDNSルックアップしか行えません。
この制限は、過剰なDNSクエリやメール配送時のパフォーマンス問題を防ぐために設けられています。
ドメインのSPFレコードが10回のDNSルックアップ制限を超える場合、一部のメールサーバーはそのSPFレコードを無効と見なし、メールを拒否することがあります。
したがって、適切なメール配信とSPF検証を行うために、DNSルックアップの回数を慎重に管理し最適化することが重要です。
なぜRFCはこの厳しいSPF DNSルックアップ制限を指定しているのですか?
このSPFレコードの制限は、表面的には不便に感じるかもしれませんが、必ずしもそうではありません。
SPF DNSルックアップ制限は、RFC7208に記載されているように、サービス拒否攻撃(DoS攻撃)を防ぐために設けられています。
例えば、攻撃者が偽のドメインにSPFレコードを作成し、正規の企業ドメインを参照することで、大量のメールをさまざまな受信サーバーに送信する可能性があります。
このような状況で、SPFレコードのDNSルックアップが10回に制限されていることで、受信側に対するサービス拒否攻撃を軽減できます。
SPF PermerrorがESP(Eメールサービスプロバイダ)によって返されるのはいつですか?
メールサーバーがメッセージを受信すると、送信者のドメインのSPFレコードを確認し、メールを送信しているサーバーが認証されているかどうかを検証します。
この際、SPFレコードに問題があり、正しく評価できない場合にPermerror(永続的なエラー)が発生します。
受信サーバーは、SPF Permerrorに対して異なる扱いをすることがあります。
一部のサーバーはこれをソフトフェイルとみなし、メールを完全に拒否せず、疑わしいと判断するだけにとどめることがあります。
他のサーバーは、これをハードフェイルとみなし、メールを拒否するか、スパムとしてフラグを立てることがあります。
SPF Permerrorを修正することは、適切なメール配送とメールセキュリティの維持にとって重要です。
SPF Permerrorを引き起こす原因は何ですか?
SPF Permerrorは、SPFレコードのDNSルックアップ数が制限を超える、構文エラー、設定の問題など、さまざまな要因で発生します。
それぞれの要因を詳しく見ていきましょう。
構文エラー
SPFレコード内の形式や構文が正しくない場合、Permerrorが発生します。
引用符やコロンなどの記号の欠落や誤った位置により解析エラーが生じることがあります。
これらのエラーの原因には以下が含まれます。
- 引用符やコロンの欠落や誤った位置
- メカニズムやクオリファイア(修飾子)の誤った形式
- 無効なマクロ定義
例
- コロンの欠落
-
v=spf1 include_spf.example.com -all
- 誤ったクオリファイアの位置
-
v=spf1 +mx a:mail.example.com -all
DNS設定の問題
DNS設定の問題は、SPFレコードのDNS構成に関する問題です。
これには以下のようなものが含まれます。
- ドメインや関連するSPFレコードに対する不正確または不完全なDNS構成
- 無効なSPFレコードの場所、または存在しない、もしくは誤ったDNSエントリへの参照
DNSの設定が不正確または不完全である場合、無効なSPFレコードの場所、または対応するドメインとの関連付けが誤っている場合、評価が失敗する可能性があります。
DNSルックアップ制限
DNSルックアップ制限は、SPF評価中に過剰なDNSクエリを防ぐためにSPF仕様によって課される制約です。
これには以下が含まれます。
- SPF評価中に許可される最大10回のDNSルックアップ
- SPF評価中に許可される最大2回の「Voidルックアップ」
これらの制限を超えるとPermerrorが発生します。
例
- 複数のincludeメカニズムを含むSPFレコードが10回以上のDNSルックアップを引き起こす場合
- DNSルックアップが必要なメカニズムや修飾子を過剰にチェーンする場合
SPFレコードのサイズが大きすぎる
SPFレコードがRFCで定められた制限を超える場合、サイズが大きすぎると見なされます。
RFCでは255文字の制限がSPFレコードに言及されています。
サイズが大きくなる原因には以下が含まれます。
- メカニズム、クオリファイア、修飾子を過剰に含めることによる文字数の増加
- 冗長なエントリや不要な項目がSPFレコードに含まれている
例
- 多数のIPアドレスやネットワーク、またはサードパーティサービスを含む単一のSPFレコード
- SPFレコード内で冗長なメカニズムやクオリファイアを多く含めることで、サイズが不必要に増加
過剰なDNSルックアップがメールに与える影響
SPFレコードに関与するDNSルックアップが多すぎると、メール配送に予期しない影響を与える可能性があります。
過剰なDNSルックアップは配信の不安定さを引き起こし、SPF Permerrorを発生させます。
- 1. 配信遅延の原因になる可能性
-
過剰なDNSルックアップはSPFレコードの処理時間を増加させ、メール配信に遅延を引き起こす可能性があります。
受信サーバーが複数のDNSサーバーからの応答を待つ必要が生じるためです。 - 2. タイムアウトエラーの発生の可能性
-
DNSルックアップは、受信サーバーとDNSサーバー間の通信を伴います。
DNSルックアップが多すぎると、タイムアウトエラーの発生リスクが高まり、SPF評価の失敗や配信時間の延長が生じます。 - 3. SPF Permerrorのリスクが増加
-
SPFレコードがこれらのルックアップ制限を超えると、Permerrorが発生し、SPFレコードが正確に処理できないことを示します。
メールが疑わしいと判断されたり、拒否される可能性があります。 - 4. 不完全なSPF評価の結果
- 受信サーバーがDNSルックアップ制限やタイムアウトエラーに直面した場合、SPF評価が途中で終了する可能性があります。
SPF Permerrorを修正する方法
SPF Permerrorを解決するためには、SPFフラッタリング(SPFの平坦化)を利用して、DNSルックアップを効率的に最適化し、チェック時に10回のDNSルックアップ制限を超えないようにすることが重要です。
1. ルックアップを手動で減らしてPermerrorを修正
SPFのincludeやredirectメカニズムをIPアドレスに置き換えることができます。
これによりSPF Permerrorを修正できますが、最適な解決策ではありません。
なぜなら、IPアドレスのリストが長くなると、SPFレコードの文字数制限を超え、さらにエラーを引き起こす可能性があるからです。
例えば、複数の`include`メカニズムを含む以下のSPFレコードを考えてみましょう。
v=spf1 include:_spf.example.com include:_spf.anotherexample.com -all
DNSルックアップを減らすために、includeメカニズムをIPアドレスに置き換えることができます。
v=spf1 ip4:192.0.2.1 ip4:203.0.113.5 -all
この例では、_spf.example.comと_spf.anotherexample.comのドメインが、それぞれのIPアドレス(192.0.2.1と203.0.113.5)に置き換えられています。
このように手動でDNSルックアップを減らすことはSPF Permerrorを軽減できますが、SPFレコードの文字数制限を考慮する必要があります。
IPアドレスのリストが長くなりすぎると、制限を超え、追加のエラーを引き起こす可能性があるため、計画と最適化が重要です。
2. 自動SPF最適化ツールを使用してPermerrorを修正
より効果的な方法は、SPFフラッタリングツールやSPFマクロを使用することです。
PowerSPFのような自動化されたホステッドサービスを利用すると、10回のDNSルックアップ制限内に収めるだけでなく、メールサービスプロバイダーやベンダーが追加や変更するIPアドレスの更新も自動的に反映されます。
数クリックで完了する簡単な手順は以下の通りです。
- 無料でPowerDMARCにサインアップします。
- PowerSPFに移動します。
- ツールの指示に従ってSPFレコードを作成します。
- PowerSPFボタンを有効にします。
- PowerSPFカスタムSPFレコードをDNSに公開すると、「保留中」ステータスが「有効」ステータスに変わります。
これで完了です!これはSPF Permerrorを防ぐための最も迅速で簡単かつ効果的な方法です。
SPFエラーを修正してメールの配信を改善
SPFエラーを修正することは非常に重要です。
SPFエラーが発生すると、正当なメールがスパムとして扱われたり、受信サーバーによって拒否されたりする可能性があり、メールが受信者の受信トレイに届く可能性が低くなります。
さらに、SPFは送信者認証メカニズムとして機能し、受信者が送信ドメインの正当性を確認できるようにします。
SPFエラーを解消することで、正当なメールが正しく認証され、あなたのドメインがなりすましやフィッシング攻撃に利用されるリスクを減らすことができます。
SPFエラーの解消はブランドの信頼性と評判を守るためにも重要であり、配信失敗やスパム判定が頻繁に発生すると、ブランドの信頼性が損なわれる可能性があります。