SPF vs DMARC
SPF はどのサーバーがあなたのドメインとして送信してよいかを認可します。DMARC はポリシーとレポートの層で、SPF(および DKIM)の結果を用い、可視の From ドメインとの整合をチェックし、失敗時に受信側が何をすべきかを指示します。DMARC は SPF の上に構築されており、両者は代替関係ではありません。
このガイドはメール認証ガイドの一部です。関連記事: SPF vs DKIM と DKIM vs DMARC。
SPF は、どのメールサーバーがあなたのドメインを代表して送信してよいかを認可します。DMARC はポリシーとレポートの層で、SPF(および DKIM)の結果を取り込み、それらが可視の From ドメインと整合しているかをチェックし、メッセージが失敗したときに受信サーバーが何をすべきかを指示します。DMARC は SPF の上に直接構築されています — 両者は競合する代替ではなく、同じ認証スタックの補完的な部分です。
SPF は何をするか
SPF(Sender Policy Framework)は、あなたのドメインのメールを送信することを許可されたサーバーと IP アドレスを列挙する DNS TXT レコードです。受信サーバーがメッセージを受け取ると、リターンパス(エンベロープ送信者)ドメインを読み取り、そのドメインの SPF レコードを引き、接続してきた IP が認可されているかをチェックします。認可されていれば SPF は合格し、そうでなければ SPF は失敗します。
このレコードは、ip4:、a、mx、include: といった仕組みからなるコンパクトな構文を使います。SPF レコード構文のガイドで、それぞれを詳しく解説しています。決定的な制約は 10 ルックアップ制限です。SPF は 1 回の評価につき最大 10 回の DNS ルックアップを許可し、すべての include:、a、mx、redirect がカウントされます。これを超えるとレコードは PermError を返し、ほとんどの受信側はそれを SPF がまったくないものとして扱います。SPF Checker を使ってルックアップ数を数え、レコードがきれいに解決することを確認しましょう。
DMARC は何をするか
DMARC(Domain-based Message Authentication, Reporting and Conformance)は SPF と DKIM の上に位置し、それらだけでは欠けている 3 つのもの — 整合性、ポリシー、レポート — を加えます。
整合性が鍵となる概念です。SPF と DKIM はそれぞれ技術的な識別子 — SPF ではリターンパスドメイン、DKIM では署名ドメイン — を検証しますが、どちらも人が実際に From ヘッダーで目にするアドレスとの関係を保証しません。DMARC は、少なくとも一方が合格し、かつ可視の From ドメインと整合していることを要求します。
ポリシーは、何も整合しないときに受信側が何をすべきかを指示します。p=none(監視のみ)、p=quarantine(迷惑メールへ送る)、または p=reject(即座にブロック)です。レポートは、あなたのドメインとして送信しているすべての送信元を示す集計 XML レポートを返してくれるので、強制を強化する前に正当な送信者を見つけられます。DMARC を _dmarc.yourdomain.com の TXT レコードとして公開し、DMARC チェッカーで検証しましょう。
SPF vs DMARC を一目で
| 観点 | SPF | DMARC |
|---|---|---|
| 目的 | 送信サーバーを認可する | SPF/DKIM の上でポリシーを設定しレポートを得る |
| 何をチェックするか | 接続してきた IP はリターンパスドメインとして送信を許可されているか? | SPF または DKIM が合格し、かつ可視の From ドメインと整合しているか? |
| どこに公開されるか | ドメインルートの TXT レコード | _dmarc.yourdomain.com の TXT レコード |
| レポートを生成するか? | いいえ | はい — 集計およびフォレンジックレポート |
| 可視の From に対して強制するか? | いいえ(エンベロープのリターンパスをチェックする) | はい(整合は From ヘッダーに対して行われる) |
なぜ SPF だけでは不十分なのか
SPF には構造的な盲点が 2 つあります。第一に、SPF は受信者が読む From アドレスではなく、エンベロープのリターンパスを検証します。なりすまし者は、リターンパスに使い捨てのドメインで SPF を合格させながら、可視の From ヘッダーであなたのブランドを偽造でき、純粋な SPF はそれに決して気づきません。第二に、SPF はフォワーディングで壊れます。メッセージが中継されると、フォワーディングサーバーの IP は通常あなたのレコードに含まれていないため、元の送信者に落ち度がなくても SPF は失敗します。
DMARC はその両方の隙間を塞ぎます。整合性の要件が認証を可視の From ドメインへと結び付け、(フォワーディングを生き延びる)DKIM が合格へのもう 1 つの経路を与えます。SPF を静かに完全に無効化してしまう失敗モードもあります。10 ルックアップ制限を超えたレコードは PermError を返し、受信側に事実上無視され、あなたの SPF を密かに無効化してしまうのです。AutoSPF は、あなたの include をコンパクトで常に有効なレコードへとフラット化し、制限内に保つので、送信者が変わっても SPF が機能し続けます。
両方を組み合わせて使う
SPF と DMARC はどちらか一方を選ぶものではありません。目標は重層的な構成です。送信者を認可する有効な SPF レコード、送出メールに署名する DKIM、そして両者を可視の From ドメインに結び付ける p=reject の DMARC ポリシーです。SPF と DKIM を始め、DMARC を p=none で公開してレポートを集め、すべての正当な送信元が整合していることを確認したら、p=quarantine へ、そして最終的に p=reject へと移行します。この進め方によって、途中で自分のメールをブロックすることなく、完全ななりすまし保護が得られます。
よくある質問
SPF と DMARC の違いは何ですか?
SPF は、エンベロープのリターンパスを DNS レコードに照らしてチェックすることで、どのサーバーがあなたのドメインとして送信してよいかを認可します。DMARC はポリシーとレポートの層で、SPF と DKIM の結果を用い、それらが可視の From アドレスと整合していることを要求し、失敗したメールを監視するか、隔離するか、拒否するかを受信側に指示します。
SPF なしで DMARC を使えますか?
技術的には DMARC は DKIM の整合だけで合格しうるものの、それに頼るべきではありません。SPF と DKIM は、メッセージを認証するための独立した 2 つの経路を DMARC に与え、フォワーディングはしばしばそのうちの一方を壊します。SPF と DKIM の両方を公開することで DMARC ははるかに信頼できるものになり、これがあらゆるドメインに推奨される構成です。
SPF だけでなりすましを止められますか?
いいえ。SPF はエンベロープのリターンパスしか検証せず、受信者が実際に目にする From アドレスは検証しません。攻撃者は無関係なドメインで SPF を合格させながら、可視の From ヘッダーであなたのブランドを偽造できます。整合性の要件を通じて認証を可視の From ドメインに結び付け、その種の直接ドメインなりすましを確実にブロックできるのは、DMARC だけです。
SPF と DMARC のどちらを先に設定すべきですか?
SPF(と DKIM)を先に設定してください。DMARC はそれらの結果に依存するからです。10 ルックアップ制限内の有効な SPF レコードを公開し、DKIM 署名を追加し、それから DMARC を p=none で公開してレポートを集めます。正当な送信者が整合していることを確認したら、ポリシーを quarantine へ、そして完全な保護のために最終的に reject へと強化します。