メール送信の信頼性を高めてセキュリティーの強化を図る
1.SPF(Sender Policy Framework)
あるドメインのメールを送信することが許可されている
サーバーのリストをDNSに登録する仕組み
メールを受信したサーバーは、
送信元のIPアドレスとDNSに登録されたリストを照合する
リストに含まれていれば「PASS」
リストに含まれていなければ「FAIL」
SPFレコードの例
v=spf1 include:_spf.google.com ~all
| v=spf1 | SPFバージョン1を使用(必須) |
| include:_spf.google.com | Googleのメールサーバーからの送信を許可 |
| ~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=DMARC1 | DMARCバージョン(必須) |
| p=none | 認証失敗でも何もしない(モニタリング用) |
| p=quarantine | 認証失敗メールを迷惑メールフォルダへ |
| p=reject | 認証失敗メールを完全に拒否 |
| rua=mailto:… | 集計レポートの送付先 |
| pct=100 | ポリシー適用割合(%) |
4.3つセットの必要性
SPFは「どのサーバーから送っていいか」を定義する
ヘッダーFromのなりすましを防げない
メール転送時にSPFが失敗してしまう
DKIMは「メールが本物で改ざんされていないか」を証明
なりすましメールでも正規の署名が付いてしまう可能性がある
認証失敗時の処理を指示できない
DMARは「認証失敗時にどうするか」を指示し、なりすましの最終判定を行う
SPFとDKIMの認証結果がなければ機能しない