【解決策】SPFレコードのinclude上限回数を回避する方法とは
Googleの送信者ガイドラインでは必須となったSPF(Sender Policy Framework)の導入はメールの信頼性を高めますが、その仕様には避けられない制約が存在します。それは、SPFレコード内でのDNSルックアップ回数「10回制限(include上限)」です。
この10回という制限を超えると、SPFは正しく機能せず「PermError」となり、メールが届かなくなる原因となります。
今回は複数のSaaSを利用する現代の運用環境において、この技術的な壁をいかに乗り越え、メールシステムの安定稼働を実現するかを、実務的な解決策とともに深掘りいたします。
SPFレコードの「include上限」とは
SPFは、送信ドメインのDNSに定義されたTXTレコードを参照し、送信元IPアドレスの正当性を検証する仕組みです。SPFの仕様(RFC 7208)では、受信サーバーがSPF検証のために行うDNSルックアップが最大10回までと定められています。
これは、
- include
- mx
- a
- ptr
- exists
- redirect
などを参照する際にカウントされます。
サンプル:典型的なSPFレコード
「v=spf1 include:_spf.google.com include:sendgrid.net include:mailchimp.com -all」
複数のESP(メール送信サービス)を併用すると、それぞれのinclude:先でさらに別のinclude:を呼び出すことがあり、結果的に10回を超えてSPF PermError(Permanent Error)が発生します。
このエラーは、受信サーバーがSPFの評価を中断し、結果的に「SPF失敗(fail)」扱いになるため、迷惑メール扱いや受信拒否の原因になります。
include上限に達したときの3つの主な解決策
システム担当者ならびにメルマガ配信担当者の頭を悩ませる、includeが10回を超えてしまったときの対策としては、次の3つが考えられます。
(1) まずは不要なメール送信元を整理する
最もシンプルな方法は、SPFレコードに記載されたinclude:を見直すことです。長年運用しているドメインには、もう使っていない外部サービスの記述が残っていることがあります。
- 現在メール送信しているサービスのみを残す
- 廃止済みのサービスは削除する
- 社内メール(オンプレミス)とクラウドメールを簡潔に管理するために統合管理する
これだけでも、ルックアップ回数を3〜5回ほど削減できる場合があります。
(2) SPFレコードの「フラット化」を行う
SPFフラット化(SPF Flattening)とは、include:などの参照先をすべて展開し、最終的に許可されたIPアドレスを直接列挙する方法です。実際このような対策をすることになります。
| 状態 | SPFレコード例 | ルックアップ回数 | 補足 |
|---|---|---|---|
| Before | v=spf1 include:_spf.google.com include:sendgrid.net -all | 約10回 | Googleだけで通常4回。各include先がさらに複数の参照を持っている |
| After | v=spf1 ip4:209.85.201.1 ip4:167.89.0.0/16 -all | 0回 | すべてのIPを展開して参照不要にする |
これにより、ルックアップ回数を実質ゼロに抑えられますが、IP変更時に手動で再設定が必要な点が最大のデメリットです。この運用コストを削減するために登場したのが、SPFの自動フラット化サービスです。
(3) SPFホスティングや自動フラット化サービスを利用する
SPFホスティングは、SPFレコードの
- 展開
- 監視
- 更新
を外部サービスに委託する仕組みです。代表的なサービスには、以下のようなものがあります。
| サービス名 | 概要 |
|---|---|
| AutoSPF | SPFレコードを自動フラット化し、外部サービスのIP変更にも自動追従。設定は1行のincludeのみ。 |
| PowerDMARC | DMARC・DKIM・SPFを統合管理。レポート分析まで対応する総合認証プラットフォーム。 |
| ベアーメール(SPFホスティング) | 日本語サポートに強み。SPF監視とメール健全性分析をセットで提供。 |
AutoSPFのような自動フラット化型では、DNS上に
v=spf1 include:_spf.autospf.com -all
と設定するだけで、常に最新のSPF状態を維持できます。手動更新の手間をなくし、lookup超過・設定ミス・古いIPによる到達障害を防止します。
SPF include上限回避の実践チェックリスト
自社ドメインがSPFのルックアップ上限(10回)に近づいている、またはすでに超えている場合に、取るべき行動を4つのステップで確認してみてください。
(1) 現状把握:ルックアップ回数の「診断」を行う
現在のSPFレコードを確認する。
nslookup -q=TXT 貴社ドメインなどを実行し、DNSに登録されているレコード全体を把握します。
その後、専門ツールで可視化・診断する。PowerDMARCなどの無料診断ツールを利用し、現在のSPFが実際に何回のDNSルックアップを消費しているかを正確に把握します。
(2) 整理・削減:不要なサービスの記述を削る
使用していないメールサービスの include: を特定し、削除する。長年運用しているドメインでは、すでに使っていない外部サービス(旧メルマガシステムなど)の記述が残っていることが多いため、最も手軽な削減策です。
(3) 恒久対策の検討:運用負荷を下げる仕組みを導入する
フラット化(IP直書き)の検討する。
- ルックアップ回数を「0回」にできますが、送信元サービス側のIPアドレス変更時に手動で更新が必要なため、運用コストが発生します。
(4) 現実的な運用を考え、自動フラット化サービス(SPFホスティング)の検討する。
メール送信サービスの追加・削除が頻繁な場合や、手動更新の手間を避けたい場合は、AutoSPFなどの自動管理サービスを導入し、ルックアップ超過を根本的に防止します。
最後に
SPFのinclude上限(10回制限)は、複数のメール配信サービスを併用する現代では避けて通れない制約です。短期的な回避策としてはフラット化、長期的・安定運用を目指すならSPFホスティングや自動フラット化サービスが有効です。
SPFの正確な設定は、DMARC・DKIMと並んでメール配信の信頼性を左右します。まずは自社ドメインのSPFを確認し、ルックアップ回数と運用体制を見直してみましょう。そのうえで対策が必要と確認できましたら、当社にお問い合わせください。