MailData

SPF Includeとは?

SPF Includeとは?

2022年10月5日
著者: Ahona Rudra
翻訳: 高峯 涼夏

この記事はPowerDMARCのブログ記事 What is SPF Include? の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。


メールの到達率を向上させるために特定のサーバが満たすべき基準や条件をSPFレコード内に保持するのがSPF「Include」メカニズムです。
もしSPFレコードにサードパーティベンダーのInclude文を誤って追加し損ねてしまった場合、受信者にメールが届かない等の問題を引き起こし、全体のバウンス率が急上昇してしまう可能性があります。

SPFレコードの「Include」メカニズムとは何か、また、SPF Include文をニーズに合わせて最適化する方法について解説します。

SPF Includeとは?

SPFレコードの構文では、「Include」メカニズムは「Include」行で指定されたドメインに対して一致するレコードをチェックするよう、メールサーバに伝えるレコードを示します。

「Include」は送信側のIPが許可されているかどうかを確認するときにSPFレコードが照会されるドメインを指します。
送信側のIPアドレスがSPFで定義された「Include」リストに含まれていれば、一致と見なされてSPFをパスします。

SPF Includeは重要です。なぜなら、

例えば、

SPFレコードに「include:_spf.google.com」を設定し、GoogleのIPアドレスからメールを送信すると、そのドメインのSPFレコードの「Include」メカニズム内に発信元IPが見つかるため、正規のメール送信者と見なされます。
この結果、メールはサーバを正常に通過し、目的の受信者まで到達することができます。

複数のSPFレコードは許可されない、でもなぜ?

複数のSPFレコードは許可されていません。

SPFレコードは v=spf1 という文字列で始まるTXTタイプのレコードで、受け取ったメールがスパムかどうかメールサーバが判断する際に従うべきルールを伝えます。
そのルールは以下の通りです。

したがって、サーバに2つの別々のSPF TXTレコードエントリがある場合、メールはSPF認証に失敗し、パームエラーが返されます。
これは、受信側のメールサーバがどちらのルールに従えばよいのかわからず、単に両方のTXTレコードを無視するためです。

複数のドメイン・ホスト・IPアドレスをSPFにIncludeする方法

複数のSPFレコードをIncludeしようとすると、メール配信の問題(メールがスパムとして拒否されるなど)に直面することがあります。
修正方法は、問題のあるSPFレコードを削除し、SPF Includeによってドメインまたはホストのエントリを1つのレコードまたは行に統合することです。

世界的に有名な家電メーカーであるLenovo.comが使用している、多数のホストとip4アドレスを持つSPFレコードの例を見てみましょう。

Lenovo.comのSPFレコード検索を行ったところ、4つのドメインが統合されていることがわかりました。

  1. spf.messagelabs.com
  2. _netblocks.eloqua.com
  3. spf.protection.outlook.com
  4. spf.pfpool.lenovo.com

更に5つのIP4アドレスがあります。

  1. 72.32.45.225
  2. 40.65.201.146
  3. 138.108.60.125
  4. 138.108.24.107
  5. 52.247.21.11

1つのレコードにまとめると、このようになります。


v=spf1 include:spf.messagelabs.com include:_netblocks.eloqua.com include:spf.protection.outlook.com include:spf.pfpool.lenovo.com ip4:72.32.45.225 ip4:40.65.201.146 ip4:138.108.60.125 ip4:138.108.24.107 ip4:52.247.21.11 ~all

SPFレコードのセマンティクスを理解する

上記の例から、多数のホストやIP4アドレスを1つのSPFレコードに統合する場合、以下のルールが適用されることがわかりました。

SPFレコードを有効にするためには3つのセクションを持つ必要があります。
宣言(start)、ドメインのIncludeメカニズムとIPアドレスのIP4タグ(center)、そして実施規則(end)です。

宣言
レコードはv=spf1で始まります(この文字列をルール内で再び使用してはいけません)。
許可されたドメイン
各ドメインにIncludeを追加します(全てのドメインでSPFレコードに追加する際にSPF Includeメカニズムを使用する必要があります)。
許可されたIP
各IPアドレスにIP4タグを追加します(SPFレコードに追加する各IPアドレスの前にIP4タグを使用する必要があります)。
実施規則
レコードの最後に1つの ~all 文を入れます(この文字列は最後に一度だけ使用します)。

SPF Includeに関する重要な注意事項

SPFレコードに他のドメインやホストを含めることができるため、SPF レコードに「Include」メカニズムを組み込むことは重要です。
これは、メッセージの信頼性を検証するのに役立ちます。

ただし、(RFC4408の10.1節にあるように)SPFレコードあたりのlookup回数には、以下のルールが適用されます。

SPF実装は、「Include」メカニズムや「Redirect」修飾子の使用によって引き起こされるあらゆる参照を含め、メカニズムや修飾子の数をSPFチェックあたり最大10個に制限しなければならない。

もしあなたがSPFを実装する際にメカニズムや修飾子の数を制限しなければ、到達不能なホストのチェックでスリープしてしまうでしょう。
これらのホストはチェックに含まれないため、クライアントからメールを受け取ることはありません。
これにより、メールの配信に深刻な問題を引き起こす可能性があります。

SPF Include と a の違い

a
IPアドレスをテストして、ドメインのAレコードに一致するかどうか確認します。
Include
あるドメインのSPFレコード全体をチェックし、それに対してIPを評価します。
もしPASSが見つかれば、それがテスト全体の結果として返されます。

aを使用する理由

Includeを使用する理由

SPF Includeの自動最適化:複数ドメインとIPアドレスの場合

マルチホスト、マルチIPアドレスのSPFレコードは、目新しいものではありません。
しかし、この種のレコードをどのように構築するべきかは、SPF認証の失敗やPermErrorを避けるために、適切な専門知識を必要とします。