SPFメール認証DNS運用

SPF include 10 個制限の確認方法

ドメイン番人5 分で読めます
目次

この記事では、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 レコードの書き方で整理しています。

SPF lookup の数え方

数え方の実例

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 ブラウザで完結する最短手順です。

  1. MXToolbox SuperTool を開く
  2. テストタイプを SPF Record Lookup
  3. 自社ドメインを入力 → Find
  4. 結果画面下部の 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 を一括チェックできます。

SPF lookup 確認方法 3 つの比較

超過していたらどうするか

10 に到達 / 超過していた場合の打ち手は次の 3 つに大別されます。

  1. 不要 include の削除: 過去に解約した SaaS の include が残っていることが多い
  2. サブドメイン分割: 用途別にサブドメインを分けて SPF レコードを別レコードに
  3. フラッタニング: 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 分で把握できます。 判断に迷う場合はお問い合わせからご相談ください。専門家がわかりやすくサポートいたします。

次の一歩は無料診断から。