SPF include 10 個制限の確認方法
目次
この記事では、SPF の DNS lookup が 10 個の上限 を超えていないかを確認する具体的な方法を、数え方の根拠とあわせて整理します。
なぜ「10 個」なのか(RFC 7208 §4.6.4 の規定)
SPF 検証中に発生する DNS 問い合わせの上限は、RFC 7208 §4.6.4「DNS Lookup Limits」で 10 回まで と定義されています。超過するとチェック側は permerror(永続的エラー)を返し、ポリシーによっては SPF fail と同等に扱われます。さらに同 RFC は「void lookup」(NXDOMAIN や空応答)を 2 回まで に制限しているため、純粋な 10 だけでなく無効 lookup も足を引っ張ります。
lookup を消費する機構
include:a/a:mx/mx:exists:redirect=ptr/ptr:(RFC では非推奨)
消費しない要素
ip4:/ip6:(DNS 問い合わせを伴わない)all
つまり IP 直書きはノーカウント、include: 系は再帰展開後の lookup まで合算される、というのが核心です。SPF の基本構文はSPF レコードの書き方で整理しています。
数え方の実例
v=spf1 include:_spf.google.com include:spf.protection.outlook.com
include:sendgrid.net include:_spf.salesforce.com -all
このレコードの場合、表面の include は 4 つで 4 lookup ですが、_spf.google.com は内部で 4〜5 個の include を呼ぶため再帰で +4 程度、spf.protection.outlook.com も内部展開で +3 程度を加算します。実測では 12〜18 lookup となり、書いた本人の想定を裏切る形で上限超過するのが定石です。
include の入れ子構造そのものについてはSPF include の入れ子問題で詳しく扱っています。
確認方法 1: MXToolbox
Web ブラウザで完結する最短手順です。
- MXToolbox SuperTool を開く
- テストタイプを
SPF Record Lookupに - 自社ドメインを入力 → Find
- 結果画面下部の
DNS Lookupsカウンタを確認
10 を超えると赤バッジで PermError: Too many DNS lookups が表示され、どの include がどれだけ消費しているかツリーで追えます。所要 30 秒、非エンジニアでも判定可能。
確認方法 2: dig で手動展開
CLI に慣れていれば最も透明性が高い方法です。
# まず自社の SPF を取得
dig +short TXT example.co.jp
# include を 1 つずつ展開
dig +short TXT _spf.google.com
dig +short TXT _netblocks.google.com
dig +short TXT _netblocks2.google.com
返ってきた TXT 内に新たな include: があれば再帰的に dig し、登場した DNS 問い合わせの数を手で集計します。再帰の深さや void lookup(NXDOMAIN)の有無まで把握できる反面、所要 5〜10 分。SRE / 情シスが「どの include が太いのか」を追跡するのに向きます。
確認方法 3: ドメイン番人の無料ツール
本サイトのDNS 認証ツールで、SPF レコードを貼り付ければ lookup 数と内訳を日本語で表示します。社内共有用のスクリーンショットがそのまま使える点が MXToolbox との違いです。本サイトのドメイン診断からは SPF / DKIM / DMARC を一括チェックできます。
超過していたらどうするか
10 に到達 / 超過していた場合の打ち手は次の 3 つに大別されます。
- 不要 include の削除: 過去に解約した SaaS の include が残っていることが多い
- サブドメイン分割: 用途別にサブドメインを分けて SPF レコードを別レコードに
- フラッタニング: include を
ip4:に展開(IP 変更追従の運用が必要)
具体策はSPF レコード 10 ルックアップ超過の対処とSPF フラッタニングの実装で扱っています。9〜10 で運用していると SaaS 側の include 追加で容易に超過するため、8 lookup 以下 を運用上の目安にすると安全です。
よくある質問
ip4: を何個書いても本当にカウントされませんか
されません。RFC 7208 §4.6.4 が lookup と数えるのは DNS 問い合わせを発生させる機構のみで、ip4: / ip6: / all は対象外です。ただし TXT レコード 1 件の長さ(255 オクテット)と、複数文字列連結の合計上限には別途注意が必要です。
void lookup の 2 回制限とは何ですか
NXDOMAIN や空応答を返した DNS 問い合わせ(void lookup)の回数が 2 を超えると、上限内でも permerror になります。解約済み SaaS の include が残って NXDOMAIN を返している、というケースが典型です。
ptr は使ってよいですか
RFC 7208 §5.5 は ptr の使用を 非推奨 としています。動作が遅く負荷が高いため、既存設定にあれば優先的に削除候補とすべきです。
まとめ
- SPF の DNS lookup 上限は RFC 7208 §4.6.4 により 10 回
include/a/mx/exists/redirect/ptrが消費、ip4/ip6/allは消費しない- 確認は MXToolbox / dig / 無料ツールの 3 経路、運用は 8 lookup 以下を目安に
- 超過時の対処は不要 include 削除 → サブドメイン分割 → フラッタニングの順
自社の状況を確認してみませんか
無料のドメイン診断で、現在の lookup 消費数とリスクの高い include を 3 分で把握できます。 判断に迷う場合はお問い合わせからご相談ください。専門家がわかりやすくサポートいたします。