ガイド / SPFの10回制限

SPFの「10回制限」とは?超過の原因と、ルックアップを減らす方法

SPFで最も多いトラブルのひとつが、DNSルックアップの10回制限です。数え方と、超えたときの対処をまとめます。

公開: 2026年11月13日

10回制限とは何か

SPFの仕様(RFC 7208)は、受信側がSPFを評価するときに行うDNSの問い合わせを、1回の評価につき最大10回までに制限しています。攻撃者が、非常に多くのDNS問い合わせを発生させるSPFレコードを使って、受信サーバーに負荷をかけることを防ぐための決まりです。

この上限を超えると、SPFの結果は permerror(恒久的なエラー)になり、認証は失敗として扱われます。SPFそのものが壊れた状態になるため、DKIMが有効でなければ、DMARCも通りません。正規のメールが迷惑メールになったり、拒否されたりする原因になります。

何が「1回」に数えられるのか

数えるのは、DNSの問い合わせを必要とする機構(メカニズム)と修飾子です。

数える数えない
include、a、mx、ptr、exists、redirectip4、ip6、all

注意すべきは、includeの先にあるSPFレコードの中身も、すべて合算される点です。自分のレコードにはincludeが3つしか書いていなくても、その先のレコードがさらにincludeやmxを含んでいれば、その分も加わります。また、mxは1回と数えますが、MXが指す各ホスト名のアドレスを引く処理にも、別枠の上限(1つのmxにつき10件まで)があります。

もう一つ、存在しない名前を指す参照(void lookup)が2件を超えると、permerrorとして扱う実装があります(仕様上の推奨)。使っていないサービスのincludeを残したままにすると、この制限にも触れやすくなります。

超えてしまう典型的な原因

ルックアップを減らす方法

1. 使っていないものを消す

最初にやるべきことです。解約したサービス、実際には使っていない送信元を洗い出し、includeを削除します。これだけで、10回以内に収まることが少なくありません。

2. ptr・不要なmx・aをやめる

自社のメールサーバーのアドレスが固定なら、mxやaを、ip4やip6の直接指定に置き換えられます。ip4はDNS問い合わせを発生させません。ただし、IPアドレスが変わったときに自分で書き換える必要があります。

3. 送信目的ごとにサブドメインを分ける

社員が使う日常のメールはexample.co.jp、メルマガや通知メールはmail.example.co.jpのように、送信目的ごとにサブドメインを分けます。SPFはドメインごとに評価されるため、それぞれが10回の枠を持てます。DMARCの整合性の面でも、役割ごとの管理がしやすくなります。

4. SPFフラット化を検討する(注意つき)

include先のIPアドレスを、あらかじめ展開してip4で並べる方法を「フラット化」と呼びます。ルックアップ数は大きく減りますが、サービス側がIPアドレスを変更しても、こちらのレコードは自動では更新されません。古いIPのまま放置すると、正規のメールが失敗します。自動で追従するフラット化サービスを使うか、定期的に手動で更新する運用が必要です。

フラット化は、手間を節約する近道に見えて、運用の責任を増やします。まずは「不要なものを消す」「サブドメインで分ける」を優先してください。

レコードの長さにも注意

SPFレコードはTXTレコードに置きます。1つの文字列は255文字までなので、長くなる場合は文字列を分割して登録します。レコード全体が長くなり過ぎると、DNS応答がUDPの標準サイズ(512バイト)を超え、環境によっては取得に失敗することもあります。ルックアップ数だけでなく、長さも定期的に確認してください。

確認と運用のコツ

よくある質問

ルックアップ数が10回ちょうどなら、問題ありませんか?

10回までは許容されますが、余裕がありません。送信サービスを1つ追加しただけで、超えてしまいます。普段から、7〜8回程度に収めておくと安心です。

SPFを-allにするか~allにするか、迷っています。

-allは、許可していない送信元を失敗とするもので、より厳格です。~allは、疑わしいものとして扱う、ゆるやかな指定です。DMARCを併用する場合は、どちらでも運用できます。送信元の管理が整理できているなら、-allが推奨されます。

includeを減らせない場合は、どうしたらよいですか?

メールの用途ごとに、サブドメインを分ける方法が最も安全です。それでも難しい場合に、フラット化を検討しますが、送信サービス側のIPアドレスの変更に、追従する運用が必要になります。

あなたのドメインを実際に確認してみる

ドメインを入力するだけで、この記事の内容を無料で確認できます。登録不要。

SPFのルックアップ数を無料でチェック