SPFレコード:その概要、仕組み、および設定方法
メール詐欺により、企業は毎年数十億ドルの損害を被っています。その大半は、「差出人」アドレスのなりすましから始まっています。Sender Policy Framework(SPF)は、DKIMやDMARCと並ぶ3つの基本的なメール認証プロトコルの1つであり、不正な送信者が貴社のドメインを使用してメールを送信することを防ぎます。
主なポイント
- SPFは、DKIMやDMARCと並んで、電子メール認証の3大プロトコルの1つです。これは、ドメインからメールを送信する権限を持つすべてのIPアドレスとメールサーバーを列挙したDNSのTXTレコードであり、これがなければ、インターネット上のどのサーバーでもそのドメインになりすますことが可能になってしまいます。
- SPFは「Return-Path」(エンベロープ)ドメインのみを検証し、表示される「From:」アドレスは検証しないため、これだけでは表示名のなりすましを防ぐことはできません。ドメインを完全に保護するには、DMARCと連携させる必要があります。
- クロージング・クォリファイアは適用ルールを設定します。-all(ハードフェイル)はリストにない送信元をすべて拒否しますが、~all(ソフトフェイル)はそれらにフラグを立てるだけです。正当な送信元をすべて監査し終えたら、-all に変更してください。
- 「include」、「a」、「mx」、「redirect」、「exists」の各メカニズムは、SPFのDNSルックアップ上限10回にカウントされます。この上限を超えると、レコード全体がPermErrorを返します。上限を超えないよう、レコードを簡潔に保つか(または自動フラット化機能を使用してください)。
PowerDMARC リソースセンター
このガイドでは、SPFとは何か、その仕組み、レコードの作成と検証方法、各メカニズムや修飾子の意味、よくあるエラーの修正方法、そしてSPFが包括的なDMARC戦略の中でどのような役割を果たすかなど、あらゆる内容を網羅しています。ブックマークしておいてください。きっと何度も参照することになるでしょう。
SPF設定の手順ガイド
完全な実装手順ガイド
エラーのトラブルシューティング
ルックアップ、ソフトフェイル、およびアライメントの修正
SPF と DMARC の整合
SPFをDMARCの評価対象に含める
無料のSPFツール
レコードの確認、生成、および検証
SPFとは?
SPF(Sender Policy Framework)は、DKIMやDMARCと並ぶ3つの主要な電子メール認証プロトコルの1つであり、不正なサーバーがあなたのドメインを使用して電子メールを送信することを防ぎます。SPFレコードとは、あなたに代わってメールを送信することが許可されているすべてのIPアドレスおよびメールサーバーを列挙したDNSのTXTレコードのことです。これが設定されていない場合、インターネット上のどのサーバーでもあなたのドメインを偽装することが可能となり、受信サーバー側ではその違いを見分ける手段がなくなります。
このガイドの内容
任意のセクションへジャンプするか、全体像を把握するために最初から最後まで通読してください:
SPFの働き
受信メールサーバーがメールを受信すると、Return-Path(エンベロープの送信者)からドメインを抽出し、DNSに対して 「v=spf1」で始まるTXTレコードを照会し、送信サーバーのIPアドレスが承認リストと一致するかどうかを確認します。一致すればSPFは合格となります。一致しない場合は、結果として「fail」、「softfail」、または「error」となり、その後の処理はDMARCポリシーによって異なります。
SPFは、表示される「From:」アドレスではなく、Return-Pathドメイン(技術的なエンベロープアドレス)を検証します。つまり、SPFだけでは表示名のなりすましを防ぐことはできません。そのため、このギャップを埋めるためにDMARCアラインメントが存在するのです。
| SPFの結果 | その意味 |
|---|---|
| パス | 送信元IPアドレスの使用が許可されています。 |
| 失敗(すべて) | 承認されていません。却下すべきです。 |
| SoftFail(ほぼすべて) | おそらく許可されていない。承認するが、フラグを立てる。 |
| PermError | レコードが破られました(構文エラー、ルックアップ回数が多すぎます)。失敗として扱われます。 |
SPFレコードの構文:仕組みと修飾子
SPFレコードは、次のように始まります。 v=spf1, 以下の仕組みなどを用いて、承認された送信者を一覧表示します。 ip4:, ip6:、そして を含む:、そして最後に、リストにない送信者に対して受信者がどう対応すべきかを示す条件が付加されています。例を挙げると:
v=spf1 ip4:192.168.1.1 include:_spf.google.com include:sendgrid.net -all
-all と ~all は、SPF における適用レベルの異なる設定を示します。-all(ハードフェイル)は、リストに記載された送信者のみが許可されており、それ以外はすべて拒否すべきであることを受信サーバーに伝えます。~all(ソフトフェイル)はより寛容な設定であり、許可されていない送信者をすべて「不審」としてフラグを立てますが、それでも受信を許可します。送信者の監査が完全に終了したら、-all を使用してください。
それぞれ include:, a, mx, リダイレクト=、そして exists: この仕組みは、以下の計算に算入されます。 10 DNS検索の制限. この値を超えると、PermErrorが発生し、認証が完全に機能しなくなります。その ptr: この仕組みは非推奨です、使用は避けてください。
SPFレコードの作成方法
まず、ご自身のドメインからメールを送信するすべてのサービスを以下のようにリストアップしてください。例えば:
- メインのメールサーバー
- Google Workspace または Microsoft 365
- マーケティングツール(Mailchimp、HubSpot、Klaviyo)
- トランザクションサービス(SendGrid、Mailgun、Amazon SES)、およびユーザーに代わってメールを送信するCRMやヘルプデスク。
各プロバイダーは、 include: ドキュメント内の値。すべての送信者を組み合わせた単一のレコードを作成します( ドメインごとに1つのSPFレコード), それをTXTレコードとして、あなたの DNSプロバイダー, そしてそれを SPFチェッカー. DNSの伝播 通常は数時間かかりますが、最大で48時間かかる場合もあります。
プロバイダー別のセットアップガイド
SPFレコードの確認と検証方法
SPFチェッカーツールを使用して、レコードの構文が正しいこと、10回のルックアップ制限内であること、そして正しいIPアドレスに解決されていることを確認してください。PowerDMARCのSPFルックアップツールなら、これらのチェックをすべて瞬時に行えます。
適切なSPFチェックで確認すべき事項:
- レコードは次のように始まります
v=spf1 - このドメインにはSPFレコードが1つしか存在しません
- DNS 検索の総数は 10 回以下です
- 構文エラーや解決不能なエラーはありません
include:ドメイン - について
all修飾子が存在し、適切である - 非推奨の仕組みは含まれていません(例:
ptr:)
コマンドラインでの確認(Linux/Mac):
dig TXT yourdomain.com +short | grep "v=spf1"
PowerDMARCのSPFルックアップの利用方法: PowerDMARC SPFチェッカーにドメインを入力すると、ルックアップ回数、メカニズムの内訳、およびエラーの有無を示す診断レポートが即座に表示されます。
SPFでよくあるエラーとその対処法
SPFの失敗のほとんどは、プロトコルそのものではなく、設定のずれに起因しています。以下に、最も頻繁に見られるエラーと、それぞれの修正箇所を挙げます。
| エラー | 最新情報 | 修正ガイド |
|---|---|---|
| PermError: DNS 検索回数が多すぎます | レコード数が10件の検索制限を超えています | SPF PermError の修正 |
| 複数のSPFレコード | 同じドメインに2つのv=spf1レコードが存在する | 複数のSPFレコードを修正する |
| SPFは合格したが、DMARCは不合格となった | Return-Path が From: と一致しません。 | SPFの位置合わせを修正する |
| SoftFail。ドメインが送信者を特定できない | SPFレコードに含まれていないIPアドレスを送信している | SPFのSoftFailを修正する |
| 550 SPF チェックに失敗しました | 受信サーバーでの完全拒否 | 550 SPF エラーの修正 |
| SPFレコードが見つかりません | 記録が見つからない、または未公開の記録 | SPFレコードがない場合の修正 |
| 転送されたメールでSPFが失敗する | 転送サーバーのIPアドレスが承認されていません | メール転送ガイド |
| SPF検証エラー | 構文または書式の問題 | SPF検証エラーの修正 |
| SPFポリシーに基づき、メールが拒否されました | 厳格なSPFを適用する受信サーバー | SPF拒否の修正 |
| SPFレコードの文字数制限を超えています | 1つのDNS TXTエントリには長すぎるレコード | SPFの文字数制限を修正する |
SPFとDMARC:整合性の理解
SPFは通過しても、DMARCは依然として失敗することがあります。これは、SPFがReturn-Pathドメインの有効性を検証するのに対し、DMARCではそのドメインが表示されている「From:」アドレスと一致していることを要求するためです。独自のReturn-Pathを使用するサードパーティのサービスを経由して送信する場合、SPFはそのサービスのドメインに対して認証を行うため、送信元のドメインとは異なるドメインが対象となり、DMARCの一致チェックに失敗します。
この問題を解決するには、各プロバイダーに対してドメインのカスタム Return-Path を設定するか、代わりにDKIM アラインメントを利用します(DKIM 署名は転送後も有効であり、送信元 IP に依存しません)。DMARC レコード内のaspf= タグを使用してアラインメントモードを設定してください:aspf=r(緩和モード、サブドメインも可)または aspf=s(厳格モード、完全一致)。
SPF、DKIM、DMARC:これらがどのように連携するか
これら3つのプロトコルは相互に補完し合うものであり、互いに置き換え可能なものではありません。SPFは送信サーバーを検証し、DKIMは暗号署名を用いてメッセージの完全性を検証します。DMARCはこれら2つを統合し、ポリシー(なし/隔離/拒否)を適用するとともに、集計レポートやフォレンジックレポートを生成します。 メールは、SPFアラインメントまたはDKIMアラインメントのいずれかを満たせばDMARCを通過します。一方の機能が動作しなくなった場合に他方が補完できるよう、両方を設定しておく必要があります(例:転送メールでSPFが失敗しても、DKIMは正常に機能する場合など)。
ホスト型SPF:スケーラビリティの問題の解決
SPFレコードに追加するSaaSツールは、それぞれDNSルックアップを消費します。ルックアップ数が10件の上限に達すると、レコード全体が機能しなくなり、すべてのSPFチェックで「PermError」が返されます。手動によるSPFのフラット化(「includes」を生のIPアドレスに置き換えること)は短期的には有効ですが、ベンダーがIP範囲をローテーションすると(実際、事前の警告なしにローテーションが行われます)情報が古くなってしまいます。
PowerDMARCの SPFの自動平坦化 これを、動的に解決することで解決します include: チェーンを最適化されたレコードに変換し、ベンダーのIPアドレスの変更を監視し、手動でのDNS編集を行うことなく、レコードをルックアップ制限内に収めます。以下のサービスを利用している組織では、 SPFマクロ または管理 複数のドメインおよびサブドメインにわたるSPF, ホスト型SPFを利用すれば、メンテナンスの負担を完全に解消できます。
SPFのベストプラクティス・チェックリスト
SPFを正しく設定する
初めてSPFを設定する場合は、上記のプロバイダー別ガイドを参考にし、PowerDMARCの無料SPFチェッカーでレコードの有効性を確認してください。すでにSPFを運用していて、ルックアップ制限やPermErrorが発生している場合は、自動化されたSPFフラット化機能を利用することで、メンテナンスの負担を軽減できます。また、まだDMARCを設定していない場合は、それが最も効果的な次のステップとなります。DMARCのないSPFは、ドアのない鍵のようなものです。
PowerDMARCの無料ツール
PowerDMARCの無料SPFツールを使って、メール認証を管理しましょう。ドメインの確認、新しいレコードの生成、プラットフォーム全体の閲覧を即座に行えます。登録は不要です。
SPFレコードチェッカー
ドメインのSPFレコードを即座に確認し、完全なルックアップチェーンを展開して、設定上の問題を特定できます。
主な特徴
- 即時検索チェーンの展開:すべてのIPアドレスを確認し、そのレコードが解決される先を含めることができます。
- ルックアップカウンター:メールの送信が中断される前に、DNSルックアップの制限(10回)に達したことを通知します。
- エラー検出:PermError、TempError、および構文上の問題を検出します。
- 無制限かつ無料:登録不要で、何度でもチェックを実行できます。
SPFレコードジェネレータ
構文を手動で記述することなく、ドメインの送信者に合わせた有効なSPFレコードを生成します。
主な特徴
- ガイド付きビルダー:簡単な手順で送信者とメカニズムを追加できます。
- 単一レコード出力:すべての送信データを1つの準拠レコードに統合します。
- エラーのない出力:毎回、正しい形式のSPFを生成します。
- 初心者にも使いやすい:迅速かつ手間のかからないセットアップができるよう設計されたシンプルなインターフェース。
PowerDMARC ツールボックス
複数のドメインにわたる電子メール認証を監視、実施、分析するための包括的なプラットフォーム。
主な特徴
- オールインワン検索:1つのダッシュボードから、SPF、DKIM、DMARC、BIMI、MTA-STS、TLS-RPT、MX、およびNSレコードを確認できます。
- 評判に関する分析:WHOIS情報、ブロックリストのステータス、PTR、FCrDNSを確認し、配信リスクを特定します。
ドメインを保護・監視する
単一のプラットフォームから、認証レコードの生成、DNS設定の確認、ドメインのメールアクティビティの監視を行うことができます。なりすましを防止し、配信率を向上させ、誰があなたの名義でメールを送信しているかを完全に把握できます。
ドメインのレピュテーション維持やなりすまし防止を担当する企業、MSP、セキュリティチームから信頼されています。
PowerDMARCは非常に強力で包括的なツールであり、メール認証とセキュリティ機能の日常的な監視作業を大幅に簡素化します。これにより、他の方法では達成が困難な可視性と明確さが得られます。メールセキュリティ体制の強化を目指す全ての方々に、心からお勧めできるツールです!
よくあるご質問
SPFレコードは有効なのに、メールがスパムフォルダに入ってしまうのはなぜですか?
SPFは数ある指標の一つに過ぎません。メールの配信率は、ドメインのレピュテーション、IPのレピュテーション、コンテンツの品質、エンゲージメント履歴、さらにDKIMやDMARCが設定されているかどうかも影響します。SPFチェックに合格したからといって、受信トレイに確実に届くとは限りません。メールがスパムフォルダに振り分けられる理由とその解決策 →
すでにDKIMを導入している場合、SPFは必要ですか?
はい。これらはそれぞれ異なる障害モードに対応しています。DKIMは転送時にも有効ですが、送信サーバーの検証は行いません。SPFはサーバーを検証しますが、転送時には機能しなくなります。DMARCでは、アラインメントが合致している状態で少なくとも1つが合格する必要があります。両方を併用すれば、一方が失敗しても、もう一方がメッセージの認証を行うことができます。DKIMなしでDMARCを使用することはできますか? →
「~all」から「-all」に変更すると、メールが正常に動作しなくなるでしょうか?
これは、レコードにまだ登録されていない正当な送信元がある場合に限ります。切り替えを行う前に、少なくとも2~4週間はDMARCの集計レポートを監視し、すべての送信サービスを特定してください。レコードがすべての正当な送信元を網羅していると確信できたら、「-all」を選択するのが適切です。SPFのソフトフェイルとハードフェイル:切り替えのタイミング →
SPFレコードはどのくらいの頻度で更新する必要がありますか?
メール送信サービスを追加または削除するたびに。実際には、四半期ごとに監査を行う。ベンダーがIPアドレスを変更したり、チームがIT部門に連絡せずにツールを追加したり、ドメインが時折利用できなくなったりすることがある。ホスト型SPFではこれが自動的に処理されるが、手動で設定したレコードについては、定期的な見直しが必要となる。
攻撃者はSPFを回避できるのでしょうか?
SPFには既知の制限があります。共有IPサービス(Mailchimpなど)では、同じIP範囲内の顧客であれば誰でもSPFチェックを通過してしまいます。また、表示名のなりすましはReturn-Pathには影響を与えないため、SPFを完全に回避してしまいます。さらに、BreakSPF攻撃では、広範囲のIP範囲を指定した過度に寛容なレコードがどのように悪用され得るかが実証されました。厳格なアラインメントを設定したDMARCを導入することで、これらのリスクを軽減できます。
SPF委任とSPFリダイレクトの違いは何ですか?
SPF 委任を使用すると、別の DNS ゾーンからサブドメインの SPF を管理できます。redirect= 修飾子は、受信側に別のドメインの SPF レコードを完全に使用するよう指示します。これは、既存のレコードを補足するのではなく、置き換えるものです。あるドメインの SPF ポリシーを別のドメインにそのまま適用したい場合に、redirect を使用してください。
SPFの効果はいつから現れますか?
DNSの反映には、既存レコードのTTLや中間リゾルバーによるキャッシュの影響を受けます。通常、反映には1~4時間かかります。最悪の場合でも48時間です。変更を行う前にTTLを300秒に下げ、反映が確認されたら元の値に戻してください。