SPF、DKIM、DMARCの違い

2025/12/15

SPF
DKIM
DMARC

SPF、DKIM、DMARCの違いをまとめました。

1. SPFとは

001.webp

何をする?

  • 送信元IPアドレスの正当性チェック
  • 「このドメインのメールは、このサーバーから送っていい」と DNSで宣言
  • なりすましメールの送信を防ぐための第一の防御線
  • メール受信側が、送信元のIPアドレスが正当な送信サーバーかどうかを確認できるようにする
  • DNSレコードに許可された送信サーバーのIPアドレスやホスト名をリスト化して公開

仕組み(超要約)

  1. 送信側が、自分のドメインのDNSにSPFレコード(TXTレコード)を設定
    • 例:v=spf1 ip4:192.0.2.1 include:_spf.example.com ~all
    • 許可する送信サーバーのIPアドレス、ホスト名、その他のドメインを指定
  2. メール送信時に、送信サーバーのIPアドレスがメールヘッダーに記録される
  3. 受信側のメールサーバーがメールを受信すると、送信元IPアドレスを確認
  4. 受信側が送信元ドメインのDNSを問い合わせ、SPFレコードを取得
  5. SPFレコードに記載された許可リストと送信元IPアドレスを照合
  6. 結果を判定:
    • Pass: IPアドレスが許可リストに含まれている
    • Fail: IPアドレスが許可リストに含まれていない
    • SoftFail: 許可されていないが、厳密には拒否しない
    • Neutral: 判定不能

2. DKIMとは

002.webp

何をする?

  • メール内容に電子署名を付けて
  • 「途中で改ざんされていないか」を検証
  • メールの送信元が本当にそのドメインから送られたものかを証明
  • メール本文やヘッダーが転送中に改ざんされていないことを保証
  • 公開鍵暗号方式を使用して、メールの真正性を数学的に証明

仕組み(超要約)

  1. 送信側の準備:
    • 送信サーバーが秘密鍵と公開鍵のペアを生成
    • 公開鍵をDNSのTXTレコード(_domainkey.example.com)に公開
    • 秘密鍵は送信サーバーに安全に保管
  2. メール送信時の署名プロセス:
    • 送信サーバーがメールのヘッダーと本文(または選択された部分)をハッシュ化
    • 生成されたハッシュ値を秘密鍵で暗号化(署名)
    • 署名情報をメールヘッダー(DKIM-Signature)に追加
    • 署名に使用したセレクタ(鍵の識別子)もヘッダーに含める
  3. 受信側の検証プロセス:
    • 受信サーバーがメールのDKIM-Signatureヘッダーからセレクタを取得
    • セレクタと送信元ドメインからDNSを問い合わせ、公開鍵を取得
    • メールの同じ部分を再度ハッシュ化
    • 署名を公開鍵で復号化し、ハッシュ値と比較
  4. 検証結果:
    • Pass: 署名が有効で、メールが改ざんされていない
    • Fail: 署名が無効、またはメールが改ざんされている
    • Neutral: 署名が存在しない、または検証不能

3. DMARCとは

003.webp

何をする?

  • SPF / DKIM の結果を統合
  • 「失敗したメールをどう扱うか」を宣言
  • レポートを受け取れる
  • SPFやDKIMだけでは不十分な点を補完する総合的な認証ポリシー
  • なりすましメールに対する明確な処理方針を定義
  • 認証失敗時の詳細なレポートを送信側に提供し、セキュリティ状況を可視化
  • 段階的なポリシー適用(none → quarantine → reject)で安全に導入可能

仕組み(超要約)

  1. 送信側がDNSにDMARCレコード(TXTレコード)を設定
    • 例:v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100;
    • p: ポリシー(none/quarantine/reject)
    • rua: 集約レポートの送信先
    • ruf: フォレンジックレポートの送信先
    • pct: ポリシーを適用するメールの割合(0-100)
  2. 受信側のメールサーバーがメールを受信すると、まずSPFとDKIMの検証を実行
  3. Alignment(整合性)チェック
    • SPF Alignment: SPFがPassし、かつReturn-PathドメインとFromドメインが一致(またはサブドメイン関係)
    • DKIM Alignment: DKIMがPassし、かつ署名のドメイン(d=)とFromドメインが一致(またはサブドメイン関係)
    • SPFまたはDKIMのどちらか一方でもPassし、かつAlignmentが成立すればDMARCはPass
  4. DMARCポリシーの適用:
    • Pass: 認証成功 → 通常通り配信
    • Fail + p=none: 認証失敗だが、監視のみ(配信は継続)
    • Fail + p=quarantine: 認証失敗 → 迷惑メールフォルダに隔離
    • Fail + p=reject: 認証失敗 → メールを拒否(バウンス)
  5. レポートの送信:
    • 集約レポート(rua): 1日1回、認証結果の統計情報を送信
    • フォレンジックレポート(ruf): 認証失敗したメールの詳細情報をリアルタイムで送信

4. SPF、DKIM、DMARCの違い

項目 SPF DKIM DMARC
役割 送信元IP確認 改ざん検知 総合判定
DNS必須
転送耐性 ❌ 弱い ✅ 強い
改ざん検知 間接的
レポート
必須度 非常に高