SPF、DKIM、DMARCとは

メール送信の信頼性を高めてセキュリティーの強化を図る

1.SPF(Sender Policy Framework)

 あるドメインのメールを送信することが許可されている
   サーバーのリストをDNSに登録する仕組み

 メールを受信したサーバーは、
   送信元のIPアドレスとDNSに登録されたリストを照合する
     リストに含まれていれば「PASS」
     リストに含まれていなければ「FAIL」

 SPFレコードの例
   v=spf1 include:_spf.google.com ~all

v=spf1SPFバージョン1を使用(必須)
include:_spf.google.comGoogleのメールサーバーからの送信を許可
~allリスト外のサーバーからの送信はソフトフェイル(受信するが疑わしいとマーク)
-allリスト外のサーバーからの送信はハードフェイル(拒否)

2.DKIM(DomainKeys Identified Mail)

 電子署名を使ってメールの正当性を証明する仕組み

 送信サーバーはメールに秘密鍵で電子署名を付けて送信する
   受信サーバーはDNSに公開されている開鍵を使ってその署名を検証する
   署名が一致すれば「メールが改ざんされていない」ことが証明される

 仕組みのポイント(メールが転送された場合でも署名は維持される)
   送信時:メールの本文・ヘッダー情報をハッシュ化し、秘密鍵で署名
   DNSに公開鍵を登録(TXTレコード)
   受信時:公開鍵で署名を検証し、改ざんの有無を確認

3.DMARC(Domain-based Message Authentication, Reporting, and Conformance)

 SPFまたはDKIMの認証が失敗した場合に、
   受信サーバーがどう処理すべきかを指示する仕組み

 「ヘッダーFrom」のドメインとSPF/DKIMが認証したドメインが
   一致しているか(アライメント)を確認することで、なりすましを防ぐ

 DMARCレコードの例
   v=DMARC1; p=quarantine; rua=mailto:dmarc-report@example.com; pct=100

v=DMARC1DMARCバージョン(必須)
p=none認証失敗でも何もしない(モニタリング用)
p=quarantine認証失敗メールを迷惑メールフォルダへ
p=reject認証失敗メールを完全に拒否
rua=mailto:…集計レポートの送付先
pct=100ポリシー適用割合(%)

4.3つセットの必要性

 SPFは「どのサーバーから送っていいか」を定義する
   ヘッダーFromのなりすましを防げない
   メール転送時にSPFが失敗してしまう

 DKIMは「メールが本物で改ざんされていないか」を証明
   なりすましメールでも正規の署名が付いてしまう可能性がある
   認証失敗時の処理を指示できない

 DMARは「認証失敗時にどうするか」を指示し、なりすましの最終判定を行う
   SPFとDKIMの認証結果がなければ機能しない