メール認証技術(SPF・DKIM・DMARC)
なりすましメール対策として、送信ドメイン認証技術が広く使われています。この記事では、SPF・DKIM・DMARCの仕組みと設定方法を整理します。
メール認証の全体像
Section titled “メール認証の全体像”なりすましメールの仕組み
Section titled “なりすましメールの仕組み”2つの「From」アドレス:
- エンベロープFrom(MAIL FROM): 実際の送信経路で使用
- ヘッダFrom: 受信者に表示されるアドレス
→ この2つが異なることでなりすましが可能
SPF(Sender Policy Framework)
Section titled “SPF(Sender Policy Framework)”SPFの仕組み
Section titled “SPFの仕組み”SPFレコードの構文
Section titled “SPFレコードの構文”v=spf1 ip4:192.0.2.0/24 include:_spf.google.com mx -all| 要素 | 説明 |
|---|---|
v=spf1 | SPFバージョン(必須) |
ip4: | 許可するIPv4アドレス/範囲 |
ip6: | 許可するIPv6アドレス/範囲 |
include: | 他ドメインのSPFを参照 |
mx | MXレコードのIPを許可 |
a | Aレコードのホストを許可 |
-all | それ以外は拒否(Fail) |
~all | それ以外はソフトフェイル |
?all | 結果を返さない(Neutral) |
SPFの限定子
Section titled “SPFの限定子”SPFの認証結果
Section titled “SPFの認証結果”| 結果 | 意味 |
|---|---|
| Pass | 送信元は許可されている |
| Fail | 送信元は許可されていない |
| SoftFail | 許可されていないが、厳密には判定しない |
| Neutral | SPFで判定しない |
| None | SPFレコードがない |
| TempError | 一時的なエラー |
| PermError | SPFレコードの構文エラー |
DKIM(DomainKeys Identified Mail)
Section titled “DKIM(DomainKeys Identified Mail)”DKIMの仕組み
Section titled “DKIMの仕組み”DKIM-Signatureヘッダ
Section titled “DKIM-Signatureヘッダ”DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=selector1; c=relaxed/relaxed; h=from:to:subject:date; bh=base64ボディハッシュ; b=base64署名データ| タグ | 説明 |
|---|---|
v | バージョン(必ず1) |
a | 署名アルゴリズム(rsa-sha256等) |
d | 署名ドメイン |
s | セレクタ(鍵の識別子) |
c | 正規化方式 |
h | 署名対象のヘッダ |
bh | 本文のハッシュ値 |
b | 署名データ |
DKIMの公開鍵レコード
Section titled “DKIMの公開鍵レコード”selector1._domainkey.example.com IN TXT "v=DKIM1; k=rsa; p=公開鍵..."| タグ | 説明 |
|---|---|
v | バージョン(DKIM1) |
k | 鍵の種類(rsa等) |
p | 公開鍵(Base64) |
DMARC(Domain-based Message Authentication, Reporting & Conformance)
Section titled “DMARC(Domain-based Message Authentication, Reporting & Conformance)”DMARCの役割
Section titled “DMARCの役割”DMARCの認証フロー
Section titled “DMARCの認証フロー”アライメント(Alignment)
Section titled “アライメント(Alignment)”アライメントモード:
- strict(厳密): 完全一致が必要
- relaxed(緩和): 組織ドメインが一致すればOK
DMARCレコードの構文
Section titled “DMARCレコードの構文”_dmarc.example.com IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; pct=100"| タグ | 説明 | 値の例 |
|---|---|---|
v | バージョン(必須) | DMARC1 |
p | ポリシー(必須) | none, quarantine, reject |
sp | サブドメインポリシー | none, quarantine, reject |
rua | 集約レポート送信先 | mailto:dmarc@example.com |
ruf | 失敗レポート送信先 | mailto:forensic@example.com |
pct | ポリシー適用割合 | 0-100 |
adkim | DKIMアライメントモード | r(relaxed), s(strict) |
aspf | SPFアライメントモード | r(relaxed), s(strict) |
DMARCポリシー
Section titled “DMARCポリシー”| ポリシー | 動作 | 導入段階 |
|---|---|---|
| none | 何もしない(レポートのみ) | 初期導入時 |
| quarantine | 迷惑メールフォルダへ | 検証後 |
| reject | 受信拒否 | 完全運用時 |
3つの認証技術の関係
Section titled “3つの認証技術の関係”ARC(Authenticated Received Chain)
Section titled “ARC(Authenticated Received Chain)”メール転送時に認証情報を維持する仕組みです。
転送による認証失敗の問題
Section titled “転送による認証失敗の問題”ARCの仕組み
Section titled “ARCの仕組み”| ヘッダ | 役割 |
|---|---|
| ARC-Authentication-Results | その時点での認証結果を記録 |
| ARC-Message-Signature | メッセージ内容の署名 |
| ARC-Seal | ARCチェーン全体の封印(改ざん防止) |
設定例まとめ
Section titled “設定例まとめ”DNSレコード設定例
Section titled “DNSレコード設定例”; SPFレコードexample.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:_spf.google.com -all"
; DKIM公開鍵selector1._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIIBIjAN..."
; DMARCレコード_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100"導入のベストプラクティス
Section titled “導入のベストプラクティス”試験対策のポイント
Section titled “試験対策のポイント”-
各技術の検証対象を理解する
- SPF: エンベロープFrom(MAIL FROM)のドメインとIP
- DKIM: メールの電子署名とドメイン
- DMARC: ヘッダFromとの整合性(アライメント)
-
DNSレコードの形式を覚える
- SPF:
v=spf1 ... -all - DKIM:
selector._domainkey.ドメイン - DMARC:
_dmarc.ドメイン
- SPF:
-
アライメントの概念を把握
- SPF: エンベロープFromドメイン = ヘッダFromドメイン
- DKIM: 署名のd=ドメイン = ヘッダFromドメイン
-
DMARCポリシーの段階
- none → quarantine → reject の順で強化
-
転送問題とARC
- 転送時にSPF/DKIMが失敗する理由
- ARCによる認証チェーンの維持