SPFのベストプラクティス:SPFレコードのフラット化を回避する
最終更新日: 2025年2月4日
ドメイン概要にSPFルックアップ回数を表示する機能を追加しました。これにより、他のツールから情報を取得する必要がなくなりました。この機能強化により、時間の節約、SPFルックアップ回数の可視性の向上、そしてSPFのベストプラクティスの推進が可能となり、これらはすべて、DMARCの導入加速と運用効率の向上に不可欠な要素です。
なぜSPFのフラット化が重要なのでしょうか?
SPFではDNSルックアップが10回までと制限されています。この制限を超えた後にルックアップを必要とするメカニズム(エントリ)は評価されず、認証に失敗します。場合によっては、この10回のDNSルックアップ制限を回避するために、SPFフラットニングツールを利用するケースもあります。
レコードに新しい仕組みを追加する場合、新たなDNSルックアップが必要になります。代行してメールを送信するサービスやサードパーティが増えるほど、レコードは複雑化し、肥大化する恐れがあります。SPFレコードのフラット化は手軽な解決策となり得ますが、最も安全な方法とは言えません。
SPFのフラットニング機能はどのように機能するのでしょうか?
SPFのフラット化では、ホスト名がIPアドレスに変換されます。これにより、DNSルックアップの集計対象から外れます。その後、ホスト名の代わりにIPアドレスを使用してSPFレコードを作成します。
dmarcianは、DNSルックアップの制限を回避するための実験として、SPFフラットニングを開発しました。SPFメール認証規格であるIETFのRFC 7208では、「DNSへの過度な負荷を避ける」ため、ルックアップに制限が設けられています。規格の詳細については、こちらをご覧ください。
SPFのフラット化は、最初から避けるべきです。多くの人が、SPFの文脈において実際には認証を行っていないインターネット上の多くの領域を許可してしまうようなSPFレコードを設定しています。 その結果、攻撃者が誤って許可されたインターネット領域にアクセスし、そのドメインからメールを送信できるリスクが高まります。その代わりに、全体的な認証の状況を把握し、SPFレコードにどのようなメカニズムを反映させるべきかを判断するための出発点として、DMARCデータを収集することが最善です。
ティム・ドレーゲン氏(dmarcianのCTOであり、DMARC仕様の共著者)。
「DNS ルックアップが多すぎます」というエラーの解決方法
- 不要なSPFレコードのエントリは削除し(追加はしないでください)。以下にいくつかの例を挙げます:
- SPFアラインメントの設定ができないベンダーのレコードを削除してください。具体的には、SPFドメインがMAIL FROM(別名:リターンパス)と一致し、かつ貴社のドメインを使用している場合です。dmarcianアカウントをお持ちの場合は、Detail Viewerに表示される送信元の中で、「SPF非対応」と表示され、SPF合格率が0%となっているもののSPFレコードを削除してください。 dmarcianアカウントをお持ちでない場合は、無料のリソースであるdmarc.ioを参照して、ベンダーのSPF対応状況を確認できます。
- 「a」および「mx」のエントリは避けてください。これらのメカニズムは多くの場合役に立たず、SPFレコードに含めるべきではありません。
- SPFの整合設定ができないベンダーのレコードを削除します。
- 重複するSPFメカニズムを削除します。
- トップレベルドメインの「includes」を削除してください。多くのメールサービスプロバイダーは、SPF認証の評価対象となる「MAIL FROM」にサブドメインを使用しています。
- 不要なトップレベルドメインを保有することは、事実上、何千ものIPアドレスがそのドメインを名乗って送信することを許可することになる。
- SPFを使用してもDMARCの検証に合格できない場合は、DKIMを設定してください。
- ドメインの継続的なメンテナンスの一環として、SPFレコードを定期的に確認し、使用されていないSPFエントリ(例:使用されなくなった送信元、または導入後にサブドメインごとのSPF管理体制が確立されたものなど)を削除してください。
- SPF認証のためにベンダーからのトラフィックをサブドメインに移行します(詳細は後述)。サブドメインの分割により、特定のメールストリーム専用の新しいドメインが作成され、そのドメインには独自の10回のDNSルックアップが割り当てられます。
SPFのベストプラクティス
組織が成長するにつれ、メール送信元は不定期かつ自然発生的に増えていくことがあります。そのため、SPFレコードにメカニズムが追加される一方で、使用されていないメカニズムについては、削除可能かどうか検討されないまま放置されることがよくあります。
セキュリティ、運用、および配信可能性の観点から、dmarcianはSPF管理におけるセグメンテーション戦略を推奨しています。可能な限り、異なるメールストリーム(トラフィックの種類)を分離することをお勧めします。具体的には、大量配信マーケティング、トランザクションメール、請求メール、特定のサードパーティベンダー、運用部門など、種類ごとにストリームを分離するという考え方です。
これを実現するためには、メールトラフィックを各ストリーム専用のサブドメインに分割することもベストプラクティスです。これにより、各ストリームの可視性が高まり、特定のシステムやベンダーの利用状況を分離することができます。SPF認証が必要な場合、単一ドメインアプローチの負担を軽減し、SPFの肥大化を回避することで、セキュリティの強化と運用上の簡素化も図れます。各セグメントが独自のレピュテーションを築く必要があるため、一貫したトラフィック量を維持することが重要である点に留意してください。 サブドメインでの利用状況に変動や中断が生じると、レピュテーションや配信率に影響を及ぼす可能性があります。
アッシャー・モリン、dmarcian 導入担当ディレクター
サブドメイン分割戦略によるDNSルックアップの削減に加え、SPFに関するその他のベストプラクティスには以下のようなものがあります:
- ptrの使用は避けてください。ptrメカニズムは非推奨となっており、クエリ実行時にDNSに多大な負荷をかける可能性があります。また、一部の受信サーバーはこのメカニズム(またはSPFレコード)を完全に無視する場合があります。
- 送信元ではないドメインはすべて、制限的な「すべて拒否」のSPFレコード(「v=spf1 -all」)で保護してください。悪意のある攻撃者は、悪用できる未使用のドメインを積極的に探し回ります。
- SPFレコードで明示的に拒否されていないIPアドレスをすべて通過させてしまうため、「+all」や「all」の使用は避けてください。また、「?all」も中立的な判定となり、適用優先度を示すものではないため使用しないでください。中立的な判定はメールのスパムスコアを上昇させ、受信者のスパム判定閾値に近づける可能性があります。これにより、メールが迷惑メールフォルダに振り分けられるかどうかの分かれ目になることがあります。
- 「~all」(ソフトフェイル)または「-all」(フェイル)を使用してください。ほとんどの受信サーバーはこれらの指示を同様に扱いますが、DMARCポリシーにかかわらず、「-all」を使用した場合にメールを拒否する傾向が強いサーバーもあります。 この点を踏まえ、技術の導入段階に合わせてDMARCポリシーを段階的に変更することを推奨します。具体的には、DMARCポリシーが「none」または「quarantine」の段階では「~all」を使用し、ポリシーが「reject」に移行した時点で「-all」を導入してください。
- 組織内で、SPFの継続的な監視と管理を行うプロセスを確立してください。この定期的な見直しにおいては、必要に応じてサードパーティベンダーの契約開始・終了についても考慮に入れる必要があります。
SPFレコードの管理方法についてご質問がある場合は、お気軽にお問い合わせください。また、こちらのページで他のSPFに関する記事やガイドをご覧いただくか、当社のSPF解説動画もぜひご覧ください。
dmarcianは、メールセキュリティの専門家チームを擁し、ドメインセキュリティを通じてメールとインターネットの信頼性を高めることを使命として、組織のドメインカタログの評価、およびDMARCの導入と長期的な運用管理を支援します。
さらに詳しく議論を続けたい方は、ぜひ dmarcian Forum へお越しください。