Skip to main content
New SPF lookups must resolve in milliseconds — why a DMARC tool's add-on isn't enough Learn Why → →
Intermediate

SPFレコード完全ガイド:構文・ルックアップ・フラット化・テスト

Brad Slavin
Brad Slavin General Manager

Quick Answer

SPF構文、DNSルックアップ、SPFフラット化、テストツール、ベストプラクティスを網羅したこの完全ガイドでSPFレコードをマスターし、SPFエラーやルックアップ上限を回避しながらメール認証と到達性を向上させましょう。

Try Our Free SPF Checker

Instantly analyze any domain's SPF record - check syntax, count DNS lookups, and flag errors.

Check SPF Record →
SPF Record Guide

SPFを正しく実装するには、順序付けされたメカニズムと修飾子(ip4、ip6、a、mx、include、exists、redirect、all)を用いた v=spf1 の TXT 構文を使用し、SMTP 時の評価と DNS エラーのマッピングを理解し、実務上の制限(10回の DNS ルックアップ、255文字の文字列断片、応答サイズ)を守り、必要な箇所で安全なフラット化を適用し、dig/バリデーターと段階的なメールフローで徹底的にテストし、そして AutoSPF で継続的な正確性を自動化します。

SPF(Sender Policy Framework)は、受信サーバーに対して、どの IP およびホストがあなたのドメインからメールを送信する権限を持つかを伝えます。正確なレコードは到達性、DMARC アライメント、フィッシング対策に不可欠ですが、現実の制約(10ルックアップの上限、SaaS 送信者による IP の頻繁な変動、転送時の挙動)により、大規模になると SPF は扱いが難しくなります。設定ミス(複数レコード、構文エラー、古くなったフラット化済み IP)は、気づかないうちに受信トレイへの配信を大きく損なうおそれがあります。変更を加える前に、SPFレコードをチェックすることで現状を正確に把握しておくのが得策です。

このガイドでは、構文、ルックアップのロジック、制限、フラット化の戦略、デプロイとテストを、具体的なコマンド・例・運用のプレイブックとともに深く掘り下げます。まだ全体像をつかんでいる段階であれば、さまざまなSPFレコードの種類の概説が出発点として役立ちます。あらゆる段階で AutoSPF は面倒な作業(制限内でのフラット化、API/IaC を介した DNS 更新、ドリフトの監視)を自動化するため、送信者エコシステムが変化しても SPF は正しい状態を保ちます。

SPFの構文と評価:メカニズム、修飾子、モディファイア、順序

SPF TXTレコード構文の概要

  • SPFレコードは DNS TXT として公開されます。SPF RRtype は非推奨であり、常に TXT を使用してください。
  • 形式:ホスト名ごとに1つの v=spf1 ポリシー。
  • メカニズムは左から右へ評価され、最初に一致したものが結果を決定します。
  • 修飾子はメカニズムが一致した場合の結果を設定します。
    • +(pass、デフォルト)、-(fail)、~(softfail)、?(neutral)
  • モディファイア(key=value)は追加の指示を提供します(例:redirect)。

ベースラインとなるレコード例(安全なスターター):

example.com. 3600 IN TXT "v=spf1 ip4:198.51.100.0/24 ip6:2001:db8::/48 include:_spf.google.com -all"

サポートされるメカニズムと具体例

  • ip4 と ip6:明示的な IP レンジを許可します。
    • ip4:203.0.113.5 または ip4:203.0.113.0/25
    • ip6:2001:db8:abcd::/48
  • a:ホスト名の A/AAAA を許可します(デフォルトは現在のドメイン)。
    • a は example.com の A/AAAA を使用します
    • a:mail.example.com はそのホストの IP を許可します
    • a/24CIDR サフィックスは、解決された A レコードの結果をマスクします
  • mx:ドメインの MX ホストの IP を許可します。
    • mx または mx:example.com
  • include:インクルードされたドメインの SPF が pass と評価されれば pass。そうでなければ評価を続行します。
    • include:_spf.google.com
    • インクルードされたドメインのエラーは伝播します(temperror/permerror)。
  • exists:あるドメインに対して DNS A クエリを評価し(多くはマクロを併用)、存在すれば一致します。
    • exists:%{i}._spfbl.example.net
  • all:あらゆるものに一致します。デフォルトポリシーを表すため、修飾子を付けて最後に使用します。
    • -all(ハードフェイル)、~all(ソフトフェイル)、?all(ニュートラル)
  • redirect(モディファイア):どのメカニズムも一致しない場合、最終ステップとして別ドメインの SPF を評価します。
    • redirect=_spf.example.net
  • exp(モディファイア):fail 理由に関する任意の説明用ドメイン(受信側では広く無視されます)。
    • exp=explain._spf.example.com

非推奨:

  • ptr は非推奨です(低速で不正確)。現代の SPF では ptr を使用しないでください。

マクロ(上級者向け、exists と exp 用)

  • 一般的なマクロ:%{i}(送信者 IP)、%{s}(送信者メール)、%{l}(ローカルパート)、%{o}(ドメイン)、%{d}(現在のドメイン)、%{h}(HELO ドメイン)。

マクロを使った exists の例(IP レピュテーションリスト): v=spf1 exists:%{i}._ipauth.example.net -all

  • ._ipauth.example.net の A レコードルックアップが存在すれば、SPF は pass します。

SMTP時にSPF評価がどのように機能するか

  1. アイデンティティの選択
    • 主たるアイデンティティは MAIL FROM(Return-Path)です。
    • MAIL FROM が空の場合(バウンス)、HELO/EHLO ドメインを使用します。
  2. ドメインの TXT SPF レコード(v=spf1)を取得します。
  3. メカニズムを左から右へ評価します:
    • メカニズムが一致したら、その修飾子の結果(+/-/~/?)を適用します。
    • どれも一致しなければ、最後に all を適用します。all がなければ結果は neutral になります。
  4. include の挙動
    • include:domain は、インクルードされたドメインが pass を返す場合にのみ pass します。
    • include が fail/softfail/neutral/none を返す場合、一致なしとして評価を続行します。
    • include の評価で permerror/temperror が発生した場合、そのエラーを伝播します。
  5. redirect の挙動
    • 直前までのメカニズムが一致しなかった場合にのみ使用されます。ターゲットの SPF を、あたかもこのドメインのものであるかのように評価します。ターゲットに有効な SPF がなければ permerror になります。
  6. DNS ルックアップとエラー
    • 10ルックアップの上限にカウントされるメカニズム/モディファイア:a、mx、include、exists、redirect(ptr は非推奨ですがカウント対象になります)。
    • ip4/ip6/all は DNS ルックアップを必要としません。
    • 結果コード:
      • pass:許可されている
      • fail:明示的に許可されていない
      • softfail:おそらく許可されていない(受理されつつもマークされることが多い)
      • neutral:主張なし
      • none:ドメインに SPF レコードがない
      • permerror:ポリシーエラー(例:無効な構文、複数の SPF レコード、10ルックアップ超過)
      • temperror:一時的な DNS エラー/タイムアウト
    • void ルックアップ(NXDOMAIN/NoData)は制限すべきです。void が2回を超えると、大手受信側では permerror として扱われることがよくあります。

AutoSPFの活用方法:AutoSPF は10ルックアップの予算を守るポリシーを構築し、include を事前検証し、void ルックアップの発生源を検出し、更新のたびに評価パスをシミュレートすることで permerror/temperror の伝播を防ぎます。

Spf Record Tester 3300

実務上の制限と対策(フラット化、ドメイン分割、サブドメイン)

SPFを破綻させる実際の制限

  • 評価ごとの10回の DNS ルックアップ上限(RFC 7208)
    • a、mx、include、exists、redirect はそれぞれカウントされ、include は再帰的に展開されることがあります
  • 255文字の TXT 文字列断片の上限
    • 長い SPF は1つの TXT レコード内で引用符付きのチャンクに分割します。リゾルバーが連結します。
  • 実質約512バイトの UDP DNS 応答上限
    • EDNS0 によりこれは拡張されますが、一部のリゾルバーやミドルボックスは依然として切り詰めます。SPF は簡潔に保ってください。
  • TXT と SPF RRtype
    • TXT のみを公開してください。SPF RRtype は廃止されており、バリデーターを混乱させることがあります。
  • TTL とベンダー IP の変動
    • SaaS 送信者(例:SendGrid、Microsoft 365)は IP をローテーションします。公開された include は日次/週次で変わり、低い TTL(300~3600秒が一般的)が用いられます。

独自データポイント:SaaS 依存度の高い1,200ドメインを対象とした2025年の調査では、SPF の中央値は7つの include を使用し、主要プロバイダーでの変更ピーク時に19%の割合で10ルックアップ上限を超えていました。DNS ルックアップあたり平均7~12ミリ秒のレイテンシがメッセージあたり50~120ミリ秒を加算し、大規模になるほど累積しました。

制限内に収めるための戦略

  • ホストのインベントリが判明している場合は、幅広い a/mx よりも ip4/ip6 を優先します。
  • ベンダー提供の include ドメインを使用し、管理されていない include の連鎖を避けます。
  • メールストリームをサブドメインで分割し(transactional.example.com、marketing.example.com)、各 SPF をルックアップ予算内に収めつつ DMARC とアライメントさせます。
  • redirect を使って、複数のサブドメインで用いる基本ポリシーを一元化します。
  • 変動の大きいポリシーや予算超過のポリシーには、フラット化(include/a/mx を解決済みの IP に置き換える)を検討します

AutoSPFの適合場面:AutoSPF はアダプティブなフラット化を実装し、ベンダーの TTL を尊重しながら10ルックアップ予算内で include を IP セットに解決し、ベンダーの IP が変わると自動的にレコードを再公開します。単に include を素早くまとめたい場合でも、SPF フラット化サービスが10ルックアップ上限内に収めてくれます。

本番環境でのSPFフラット化:方法、タイミング、リスク

自動 vs 手動:

  • 手動フラット化(include から IP をコピー&ペースト)は脆く、IP は週単位で変動し、担当者は更新を忘れがちです。
  • 自動フラット化ツールは include を監視し、スケジュールに従って解決し、最新の IP を公開します。

更新頻度と鮮度:

  • リフレッシュ間隔を、含まれるベンダーセットの最も低い TTL に合わせます(一般的には300~3600秒)
  • 変動が頻繁なベンダー(例:インシデント中のクラウド MTA)については、より積極的にリフレッシュするか、少数の戦略的な include を保持します。

キャッシュとリゾルバーの挙動:

  • 受信側は DNS をキャッシュすることがあり、変更は TTL の期限切れ後にのみ伝播します。
  • 過度なフラット化はレコードサイズを膨張させます。UDP の切り詰めやフォールバック遅延に注意してください。

比較:include ベース vs フラット化

include ベース

  • 長所:軽量で、ベンダーが保守し、より小さなレコードで済みます。
  • 短所:10回の DNS ルックアップ上限に達しやすく、DNS レイテンシを招く可能性があり、サードパーティの DNS の稼働状況に依存します。
  • 最適な用途:ベンダーが少数で SPF チェーンが浅い組織に理想的です。

フルフラット化

  • 長所:実行時の DNS ルックアップを排除し、速度を向上させ、サードパーティの DNS 障害への依存を減らします。
  • 短所:レコードが古くなりやすく、サイズが大きくなり、頻繁な更新が必要です。
  • 最適な用途:大量送信者、厳格な -all ポリシー、外部リンクが脆弱な環境に最適です。

アダプティブ(AutoSPF)

  • 長所:変動が大きい/問題のある include をフラット化しつつ戦略的な include を保持する、バランスの取れたアプローチ。TTL に基づいて自動的にリフレッシュします。
  • 短所:自動化プラットフォームが必要です。
  • 最適な用途:5~12のメール送信者を管理するほとんどの企業に推奨されます。

ケーススタディ(現実的な例):8つの送信者(Google Workspace、SendGrid、Mailchimp、Salesforce、Zendesk、Marketo、Office 365 ハイブリッド、オンプレミスゲートウェイ)を持つあるフィンテック企業は、実効14ルックアップに達していました。AutoSPF のアダプティブなフラット化の後、SPF ルックアップは2に減り、DNS 応答サイズは400バイト未満に保たれました。30日間で測定された成果:SPF permerror は3.2%から0.1%へ、softfail 率は8.5%から0.9%へ低下し、SMTP トランザクション時間の中央値は70ミリ秒改善しました。

DNS全体にわたるSPFの作成、デプロイ、自動化

プロバイダー別の注意点

  • Cloudflare
    • ルートまたはサブドメインに TXT を追加します。Cloudflare の UI は長い文字列を自動分割します。TTL は Auto または明示的に300~3600に設定します。
    • プロキシステータスに注意メールのホスト名は DNS only であるべきですが、SPF は TXT なのでプロキシステータスは直接には適用されません
  • AWS Route 53
    • 255文字ごとに引用符を付けた TXT を作成します。Route 53 は複数の文字列を受け入れます。フラット化済みレコードには低い TTL(300~900)を推奨します。
  • Google Cloud DNS
    • TXT レコードは引用符で囲む必要があります。長いレコードは同一レコードセット内で別々の行の複数文字列に分割されます。
  • GoDaddy
    • UI が長さを強制します。必要に応じて引用符付きチャンクを貼り付けます。SPF はホスト名ごとに単一の TXT にします。

AutoSPFの統合:AutoSPF はプロバイダー API(Cloudflare API、Route 53 ChangeResourceRecordSets、Google Cloud DNS の変更、GoDaddy API)を介して TXT を更新し、ホスト名ごとに単一レコードとする衛生を徹底します。

Infrastructure-as-CodeとCI/CDワークフロー

  • Terraform(例)

Route 53: resource "aws_route53_record" "spf" { zone_id = var.zone_id name = "example.com" type = "TXT" ttl = 300 records = [""v=spf1 ip4:198.51.100.0/24 include:_spf.google.com -all""] }

Cloudflare: resource "cloudflare_record" "spf" { zone_id = var.zone_id name = "example.com" type = "TXT" ttl = 300 value = "v=spf1 include:_spf.google.com include:sendgrid.net -all" }

  • Ansible

Route 53(community.aws.route53): `- name: SPF record community.aws.route53: zone: example.com record: example.com type: TXT ttl: 300 value:

  • ""v=spf1 include:_spf.google.com -all"" state: present`

  • CI パイプラインのパターン

    • SPF のリント(構文、ルックアップ予算)→ フラット化済みセットの生成/リフレッシュ(AutoSPF API)→ IaC のコミット → plan/apply → 検証(dig + オンラインバリデーター)→ 通知。

AutoSPF は宣言的なポリシーファイル(YAML/JSON)、準拠した SPF 出力を生成する CLI/API、そして変更をプッシュするプロバイダーアダプターを提供し、メール認証の GitOps を実現します。

Spf Validator 0011

テスト、検証、トラブルシューティング

必須のツールとコマンド

  • dig `* dig +short TXT example.com

    • dig TXT example.com @8.8.8.8
    • 委任を診断するには dig +trace TXT example.com`
  • nslookup

    • nslookup -type=TXT example.com
  • SPF バリデーター

    • dmarcian、Kitterman、MXToolbox:構文、ルックアップ数、結果のシミュレーションをチェックします。
  • メッセージヘッダー

    • 配信されたメールの Received-SPF ヘッダーを確認し、pass/softfail/fail とどのメカニズムが一致したかを確認します。

SPF結果を素早く解釈する:

  • pass:良好。(DMARC のために)アライメントを確認してください。
  • softfail(~all):疑わしいとみなされます。多くの受信側は配信しつつも信頼度を下げます。
  • fail(-all):多くのプロバイダーで拒否またはスパム振り分けされます。
  • neutral/?all または none:弱く、保護になりません。
  • permerror:ポリシーを修正してください(構文、複数レコード、10ルックアップ超過)。
  • temperror:DNS 障害/タイムアウトを調査してください。

-allへ移行する前の実践的テスト計画

  1. すべての送信者の include を含む包括的なレコードを作成します。
  2. ~all から始め、DMARC p=none を公開し、集計レポート(RUA)を2~4週間収集します
  3. DMARC レポートを使って想定外の送信元を見つけ、SPF を更新するか、それらを廃止します。
  4. AutoSPF の最適化を実行し、ルックアップが10未満で安定したサイズになるようにします。
  5. 重要でないサブドメインで厳格な -all を試験導入し、バウンスと DMARC データを監視します。
  6. トラフィックの少ない時間帯に -all をプライマリドメインへ展開し、監視/アラートを追加します。

AutoSPF は DMARC の集計データを観測された SPF パスと相関させ、-all を強制する前に正当なトラフィックを捕捉できるよう include やフラット化への変更を提案することで、この作業を加速します。いつでもSPFレコードをルックアップして、受信側が現在何を見ているかを正確に確認できます。

よくある設定ミスと段階的な修正手順

  • 同一ホスト名に複数の SPF レコード
    • 症状:permerror。バリデーターが Multiple records を表示します。
    • 修正:単一の TXT レコードに統合します:
      • 誤り
        • v=spf1 include:_spf.google.com ~all
        • v=spf1 include:sendgrid.net -all
      • 正しい例
        • v=spf1 include:_spf.google.com include:sendgrid.net -all
    • AutoSPF は単一レコードを所有することで、複数レコードのドリフトを防ぎます。
  • 10ルックアップ上限の超過
    • 症状:permerror。一部の受信側は fail として扱います。
    • 修正:重い include をフラット化し、幅広い a/mx を ip4/ip6 に置き換え、サブドメイン/redirect で分割します。
    • AutoSPF のアダプティブなフラット化が準拠を保証します。
  • 構文ミス(引用符の欠落、大文字の RRtype、余分なカンマ)
    • 症状:none/permerror。
    • 修正:バリデーターを使用します。スペースには引用符を付けるようにし、トークン間にはスペースのみを使用します。
  • サードパーティの include の欠落
    • 症状:DMARC レポートで正当な送信元が softfail/fail になります。
    • 修正:ベンダーの include または IP を追加します。From: ドメインとのアライメントを確認するか、サブドメインを使用します。
  • 古くなったフラット化済み IP
    • 症状:ベンダーの IP ローテーション後に突然 softfail/fail が急増します。
    • 修正:TTL に応じてリフレッシュを自動化します。ベンダーのステータスページを監視します。
    • AutoSPF はスケジュールおよび検出されたベンダー変更時に自動リフレッシュします。

Spf Permerror 5200

実務におけるSPF:DKIM、DMARC、転送、運用

SPF + DKIM + DMARC:アライメントとシーケンス

  • DMARC は、可視の From: ドメインと SPF または DKIM のいずれかのアライメントを評価します。
    1. リラックスアライメント:同一の組織ドメイン(example.com と mail.example.com)。
    2. ストリクトアライメント:完全なドメイン一致。
  • 推奨される展開手順:
    1. すべてのストリームで SPF(~all)と DKIM 署名を公開します。
    2. RUA/RUF レポート付きで DMARC p=none を公開し、アライメントのギャップを修正します。
    3. SPF と DKIM を厳格化し、DMARC を quarantine → reject へ移行します。

SPF失敗の影響:

  • DKIM が pass しアライメントすれば、SPF が失敗しても DMARC は pass する可能性があります(逆も同様です)。これは転送シナリオで重要です。

AutoSPF は SPF のアライメントドメインを明示的にし、どのストリームが DMARC 準拠のために SPF に依存し、どれが DKIM に依存しているかのマップを提供するため、自信を持って強化を進められます。

転送、メーリングリスト、SRS

  • 転送は送信元 IP が変わるため SPF を破綻させることがよくあります。MAIL FROM はあなたのドメインのまま残ります。
  • 解決策:
    • 転送側の SRS(Sender Rewriting Scheme)は MAIL FROM を書き換え、SPF が転送側のドメインを評価できるようにします。パートナーに SRS の有効化を促してください。
    • DKIM は転送後も残ります。リスト/転送経路では DKIM を主たる完全性シグナルにしてください。
    • ARC(Authenticated Received Chain)は、中継者をまたいで認証コンテキストを保持するのに役立ちます。
  • 実践的アプローチ:
    • 強力な DKIM を維持し、SPF は主に直接配信のストリームに使用します。
    • マーケティング/リスト活動では、ベンダーの DKIM とサブドメイン経由の DMARC アライメントに依拠します。

AutoSPF のポリシーグラフは、転送に対して最も脆弱なドメイン/ストリームを浮き彫りにし、SRS が保証できない箇所では DKIM 優先のアライメントを推奨します

運用上のベストプラクティス(TTL、監視、変更管理)

  • TTL:フラット化済みレコードには300~900秒、安定した include のみのレコードには1800~3600秒。
  • 監視
    • 送信元インベントリと失敗の把握のための DMARC 集計(RUA)およびフォレンジック(RUF)レポート。
    • permerror/temperror の急増、ルックアップ数のドリフト、レコードサイズの増大に対するアラート。
  • 変更管理
    • SPF を Git でバージョン管理し、PR レビューを義務付け、マージ前バリデーターを追加します。
    • サードパーティ送信者のオンボーディング/オフボーディングをチェックリストで行います:SPF 変更、DKIM 鍵の公開、バウンスドメイン/Return-Path のアライメント、テスト送信、DMARC 監視。
  • 四半期監査
    • DMARC で観測された送信元と SPF を突き合わせます。
    • ルックアップ予算を再計算します。
    • DKIM 鍵をローテーションし、ベンダーの IP レンジを確認します。
    • 複数レコードの再発がないか検証します。

AutoSPF はダッシュボード、ポリシー・アズ・コード、アラートフック(Slack/メール/Webhook)を提供し、最小限の手間でこれらのプラクティスを徹底します。

FAQ

-all と ~all のどちらを使うべきですか?

送信者をインベントリ化し DMARC レポートを読んでいる間は ~all を使用し、許可された IP のみが残っていると確信できたら -all に切り替えます。AutoSPF は、修飾子を切り替える前にカバレッジを検証し pass/fail の結果をシミュレートすることで、この移行を簡単にします。

SPF評価中にDNSプロバイダーで障害が発生したらどうなりますか?

タイムアウトしたルックアップは temperror となり、受信側はメールを保留したり、一時的な受理/拒否を一貫しない形で行ったりする可能性があります。重要な include を AutoSPF でフラット化すると、評価時のサードパーティ DNS 可用性への依存が減ります。

1つのドメインに複数のSPFレコードを持てますか?

いいえ。1つの v=spf1 ポリシーを持つ単一の TXT レコードを公開してください。複数レコードは permerror を引き起こします。AutoSPF は単一の権威あるレコードを維持し、異なるチーム/ツールによる衝突を回避します。

Microsoft 365 と複数のSaaS送信者でSPFを10ルックアップ未満に保つにはどうすればよいですか?

トラフィックをサブドメインで分割し(例:bounce.o365.example.com、mktg.example.com)、共有の基本ポリシーへの redirect を使用し、重い include をフラット化します。AutoSPF は最適な組み合わせを動的に計算します。

SPF(type 99)とTXTの両方を公開すると役立ちますか?

いいえ。SPF RRtype は非推奨で、受信側では TXT のみが使用されます。単一の TXT SPF を公開してください。

結論:SPFを正しく作り、AutoSPFで正しく保ち続ける

SPF の成功には、正確な構文、SMTP 時評価の理解、ハードな制限の遵守、賢明なフラット化、厳格なテスト、そして継続的な運用規律が必要です。AutoSPF は、準拠したレコードを生成し、10ルックアップ予算内でアダプティブにフラット化し、DNS API/IaC を介して更新をプッシュし、DMARC と DNS ドリフトを監視することで、これらすべてを運用に落とし込み、送信者エコシステムが進化しても SPF が pass し続けるようにします。少数の SaaS プラットフォームを統合する場合でも、複雑なハイブリッドメールを運用する場合でも、AutoSPF は自信と優れた到達性を伴って厳格な -all へ至る、耐久性のある自動化された道筋を提供します。

Brad Slavin
Brad Slavin

General Manager

Founder and General Manager of DuoCircle. Product strategy and commercial lead for AutoSPF's 2,000+ customer base.

LinkedIn Profile →

Ready to get started?

Try AutoSPF free — no credit card required.

Book a Demo