SPF・DKIM・DMARCの違いをわかりやすく解説
目次
この記事でわかること
- SPF・DKIM・DMARCの3つの技術がそれぞれ何を担当しているか
- なぜ1つだけでは不十分で、3つを組み合わせる必要があるのか
- どの順序で設定すべきか、よくある誤解と合わせて整理
そもそも、なぜ3つも必要なのか
「メール認証ってSPFとかDKIMとかDMARCとか、結局どれを設定すればいいの?」という相談をよくいただきます。結論から言うと、3つは役割が全く違うため、1つだけでは足りません。順番に見ていきます。
郵便物に例えると、
- SPFは「この郵便局から出した手紙は本物です」と受付名簿で認可する仕組み
- DKIMは「封筒と中身に改ざん防止の封印が押されている」ことを検証する仕組み
- DMARCは「封印や認可の確認が失敗した手紙をどう扱うか」という配送ルール
3つを個別に設定し、組み合わせて初めて「なりすましを拒否し、配送性も保つ」という目的を達成できます。以下の表に主な違いをまとめます。
| 技術 | 略称の意味 | 検証対象 | 仕組み | 保護内容 |
|---|---|---|---|---|
| SPF | Sender Policy Framework | 送信元サーバーのIPアドレス | DNS TXTレコードで認可リストを公開 | 送信元偽装の防止 |
| DKIM | DomainKeys Identified Mail | メール本文・ヘッダーの電子署名 | 送信時に暗号署名、公開鍵をDNSで公開 | 経路上の改ざん検知 |
| DMARC | Domain-based Message Authentication, Reporting and Conformance | SPF/DKIMの結果とFromドメインの一致(アラインメント) | DNS TXTで処理方針を公開、集計レポートを受信 | なりすましへのポリシー適用 |
DMARCの全体像はDMARCとは?中小企業が今すぐ対応すべき理由でも解説しています。
3つの技術を1つずつ見る
3つの技術はそれぞれ独立したRFCで仕様化されており、検証対象も設定方法も異なります。
SPF: 送信元サーバーを認可する
SPF(Sender Policy Framework、RFC 7208)は、「このドメインからメールを出してよいサーバーはここだけ」というホワイトリストをDNSに公開する仕組みです。受信側はSMTP通信のMAIL FROM(エンベロープFrom)のドメインに対してSPFレコードを引き、送信元IPアドレスが許可リストに入っているかを確認します。
example.com. TXT "v=spf1 include:_spf.google.com -all"
include:で他サービスのSPFを取り込む- 末尾の
-allは「列挙外は全て拒否」、~allは「疑わしい(softfail)」 - includeは合計10個まで(RFC 7208 §4.6.4)。超過すると
PermerrorでSPF全体が無効化されます
ここで気をつけるべきは、SPFは転送に弱い点です。メーリングリストや自動転送ではMAIL FROMが書き換わり、SPFが失敗することがよくあります。そのため、SPF単独で認証を成立させることは現実的に難しく、DKIMとの併用が推奨されます。
DKIM: 本文と署名で改ざんを検知する
DKIM(DomainKeys Identified Mail、RFC 6376)は、送信時にメールの本文・ヘッダーを元に電子署名を作成し、受信側がDNSで公開鍵を取得して検証する仕組みです。
- 送信側: 秘密鍵で署名 → メールヘッダーに
DKIM-Signatureを付加 - 受信側:
<selector>._domainkey.<domain>のTXTレコードから公開鍵を取得して検証 - 検証成功 → 「署名ドメインの責任下にある、経路で改ざんされていないメール」と判断
SPFと違い、DKIMはメール転送されても署名が残るため、メーリングリスト経由でも検証が通りやすいのが強みです。一方で、DKIM単独では「署名ドメインがFrom欄のドメインと一致しているか」を保証しません。署名はd=タグの別ドメインで成立することもあり、なりすましの検知にはDMARCとの組み合わせが必要です。
設定で最もつまずくのは セレクタ名 です。Google Workspaceはgoogle、Microsoft 365はselector1/selector2、Resendはresend、と送信サービスごとに異なります。推測で設定せず、必ず各サービスの管理画面で指定された値を使います。
DMARC: SPF/DKIMの結果にポリシーを適用する
DMARC(RFC 7489)は、SPFかDKIMのどちらかがパスし、かつそのドメインがFrom欄のドメインとアラインメント(一致)していた場合にDMARC passとする仕組みです。SPFとDKIMの結果を「どう使うか」を決める、上位レイヤの約束事と考えると理解しやすくなります。
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:reports@example.com"
p=none: 認証失敗でも通常配送(監視モード)p=quarantine: 迷惑メールフォルダに振り分けp=reject: 受信拒否rua=: 集計レポート(各受信サーバーから毎日XMLで届く)の送付先
DMARCの肝は アラインメント です。たとえばFrom欄がsales@example.comでも、SPFが評価するMAIL FROMがbounce.mailservice.comだった場合、SPF自体はパスしても「From側のドメインと一致していない」ためDMARCは失敗します。これがSPF/DKIM単独ではなりすまし対策として不十分な理由です。
受信側はどういう順で判定するか
3つの技術は、受信サーバーで順序よく評価されます。全体の流れを図で見ます。
- SPFチェック: 送信元IPが認可リストに入っているか
- DKIMチェック: 署名が公開鍵で検証でき、改ざんされていないか
- DMARC評価: SPFかDKIMのいずれかがパスし、かつFromドメインとアラインメントしているか
- ポリシー適用: DMARCが失敗した場合、
p=の指示に従って配送・隔離・拒否を決定
Gmailは2024年2月から、Outlookは2025年5月から、この判定を厳格化しました。詳細はDMARC義務化はいつから?でまとめています。
設定の順序と、よくある誤解
「全部いっぺんにやる」よりも、段階的に進めるほうが安全です。
ステップ1: SPFレコードの整備
既存のSPFレコードの有無を確認し、メール送信サービスをinclude:で追加します。既存にもう1行追加するのではなく、1ドメインに1レコードに統合します。include:の総数が10個を超えないか必ず確認します。
ステップ2: DKIMの有効化
Google Workspaceなら管理コンソール、Microsoft 365なら Exchange Admin Center、Resendならダッシュボードから、発行されたTXTレコードをDNSに追加します。セレクタ名はサービスの指示通りに。
ステップ3: DMARCはp=noneから始める
最初は必ずp=noneで監視モードで運用し、rua=で受け取る集計レポートを1〜2か月観察します。正規のメールがすべてpassしていることを確認してから、p=quarantine、p=rejectと段階的に強化します。詳細な手順はDMARC設定方法を徹底解説にまとめています。
よくある3つの誤解
- 「SPFだけ設定すれば十分」: 転送やメーリングリストでSPFは失敗しやすく、単独では配送性も改ざん検知も保証できません。最低でもDKIMと併用、できればDMARCまで設定するのが前提です。
- 「DKIMだけあれば改ざん防止できるから大丈夫」: DKIMは改ざん検知には有効ですが、署名ドメインとFrom欄の一致を自動では保証しません。なりすまし対策にはDMARCのアラインメントが必要です。
- 「DMARCを設定すれば迷惑メールが全部止まる」: DMARCは「自社ドメインを騙った偽メール」を弾くための仕組みで、他社ドメインからの迷惑メールには無関係です。自社を守るために設定するもの、と理解してください。
まずは自社の設定状況を確認しましょう
要点を整理すると次のとおりです。
- SPF・DKIM・DMARCは役割が違い、組み合わせて初めてなりすまし対策が成立する
- SPFは送信元認可、DKIMは改ざん検知、DMARCはポリシー適用とレポート収集
- 設定は「SPF → DKIM → DMARC
p=none監視 → 段階強化」の順で進める - SPF単独・DKIM単独はいずれも不十分。アラインメントを担うのはDMARC
無料のドメイン診断ツールで、自社ドメインの3技術の設定状況と改善すべき優先順位を数十秒で把握できます。複数サービスが絡んで判断が難しい場合は、お問い合わせフォームから状況をお知らせください。設定の優先度と段取りを一緒に整理してお渡しします。