はじめに
メールの送信ドメイン認証は、なりすまし防止 と 迷惑メール判定の回避 に不可欠です。SPF、DKIM、DMARC という3つのDNSベースの標準規格を組み合わせることで、自社ドメインからのメールが正当であることを受信サーバーに証明できます。本記事では各技術の役割と、Cloudflare や主要DNSプロバイダーでの設定手順を解説します。
SPF:送信元ドメイン認証
SPF(Sender Policy Framework) は、そのドメインからメール送信を許可するIPアドレスをDNSに公開します。受信サーバーは Return-Path ドメインの SPF レコードを確認して送信元の正当性を検証します。
SPF レコードの書式
SPF レコードは DNS の TXT レコードです:
example.com TXT "v=spf1 include:_spf.google.com include:spf.mailgun.org ~all"
| メカニズム | 意味 |
|---|---|
v=spf1 | SPF バージョン識別子 |
include: | 別ドメインに認証を委譲 |
ip4:/ip6: | 特定IP範囲を許可 |
a | ドメインの A レコードを許可 |
mx | ドメインの MX サーバーを許可 |
all | 非該当送信者へのデフォルト動作 |
初期設定では ~all(ソフト失敗)を使い、動作確認後に -all(ハード失敗)に移行します。
DKIM:電子署名による改ざん検知
DKIM(DomainKeys Identified Mail) は、送信メールごとに 暗号学的デジタル署名 を付与します。受信サーバーは DNS に公開された公開鍵で署名を検証し、メールが改ざんされていないことを確認します。
DKIM レコードの書式
DKIM レコードは特定のセレクター名の DNS TXT レコードです:
default._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
| タグ | 意味 |
|---|---|
v | バージョン(常に DKIM1) |
k | 鍵タイプ(rsa または ed25519) |
p | Base64 エンコードされた公開鍵 |
Google Workspace や Mailgun、SendGrid などのメールサービスが DKIM 鍵を自動生成します。公開鍵を DNS に公開するだけで完了です。
DMARC:認証結果に基づくポリシー適用
DMARC(Domain-based Message Authentication, Reporting & Conformance) は、SPF や DKIM に失敗したメールをどう扱うかを受信サーバーに指示します。また、認証結果のレポート機能も提供します。
DMARC レコードの書式
DMARC レコードは DNS の TXT レコードです:
_dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; pct=100"
| タグ | 意味 | 主な値 |
|---|---|---|
v | バージョン(常に DMARC1) | DMARC1 |
p | 認証失敗時のポリシー | none, quarantine, reject |
pct | ポリシー適用割合(%) | 1–100 |
rua | 集計レポートの送信先 | mailto: URI |
ruf | 個別失敗レポートの送信先 | mailto: URI |
sp | サブドメイン用ポリシー | p と同じ |
DMARC ポリシーレベル
p=none— 監視のみ(まずはこれで検証)p=quarantine— 失敗メールをスパム扱いにp=reject— 失敗メールを拒否(最も厳格)
3つの連携フロー
送信者がメール送信 → 受信サーバーが SPF 確認(IP は許可されているか?)
→ 受信サーバーが DKIM 確認(署名は有効か?)
→ 受信サーバーが DMARC ポリシー確認
→ p=none: 何もしない
→ p=quarantine: スパムフォルダへ
→ p=reject: 配信拒否
DMARC 通過には SPF(アライメント付き) または DKIM(アライメント付き) のいずれかの認証が必要です。アライメント とは From ヘッダーのドメインと SPF/DKIM で使用されるドメインが一致することを意味します。
Cloudflare での設定手順
- SPF レコード追加:
@の TXT レコードとしてv=spf1 include:_spf.google.com ~allを作成 - DKIM レコード追加:
default._domainkeyの TXT レコードにプロバイダーの公開鍵を設定 - DMARC レコード追加:
_dmarcの TXT レコードとしてv=DMARC1; p=none; rua=mailto:[email protected]を作成 p=noneで開始: 1週間ほどレポートを確認し、問題がなければp=quarantine→p=rejectに移行
確認ツール
- MXToolbox — SPF、DKIM、DMARC レコードの一括確認
- Google Admin Toolbox — DMARC ポリシーとレポート確認
- DMARC Analyzer — DMARC 集計レポートの可視化
digコマンド:dig TXT example.com dig TXT default._domainkey.example.com dig TXT _dmarc.example.com
まとめ
SPF、DKIM、DMARC はドメインメール認証の三本柱です。SPF が送信元 IP を制限し、DKIM が暗号学的完全性を保証し、DMARC が最終的なポリシーを適用します。まずは監視モード(p=none)で正規メールが正しく認証されることを確認し、DMARC レポートを分析しながら段階的にポリシーを強化しましょう。適切に設定されたこれらのレコードは、迷惑メール判定を劇的に減らし、ドメインのなりすましを防止します。
