Featured image of post ドメイン認証の基本:SPF、DKIM、DMARCを設定してなりすましメールを防ぐ Featured image of post ドメイン認証の基本:SPF、DKIM、DMARCを設定してなりすましメールを防ぐ

ドメイン認証の基本:SPF、DKIM、DMARCを設定してなりすましメールを防ぐ

ドメイン認証の基本であるSPF、DKIM、DMARCの3つのDNSレコード設定方法を徹底解説。自サイトドメインから送信される通知メールが迷惑メール判定されたり、攻撃者によるなりすましメールをブロックするための各レコードの目的と、Cloudflare等での正しい設定手順を紹介します。

はじめに

メールの送信ドメイン認証は、なりすまし防止迷惑メール判定の回避 に不可欠です。SPFDKIMDMARC という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=spf1SPF バージョン識別子
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
pBase64 エンコードされた公開鍵

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バージョン(常に DMARC1DMARC1
p認証失敗時のポリシーnone, quarantine, reject
pctポリシー適用割合(%)1100
rua集計レポートの送信先mailto: URI
ruf個別失敗レポートの送信先mailto: URI
spサブドメイン用ポリシーp と同じ

DMARC ポリシーレベル

  1. p=none — 監視のみ(まずはこれで検証)
  2. p=quarantine — 失敗メールをスパム扱いに
  3. p=reject — 失敗メールを拒否(最も厳格)

3つの連携フロー

送信者がメール送信 → 受信サーバーが SPF 確認(IP は許可されているか?)
                   → 受信サーバーが DKIM 確認(署名は有効か?)
                   → 受信サーバーが DMARC ポリシー確認
                        → p=none:       何もしない
                        → p=quarantine: スパムフォルダへ
                        → p=reject:     配信拒否

DMARC 通過には SPF(アライメント付き) または DKIM(アライメント付き) のいずれかの認証が必要です。アライメント とは From ヘッダーのドメインと SPF/DKIM で使用されるドメインが一致することを意味します。


Cloudflare での設定手順

  1. SPF レコード追加: @ の TXT レコードとして v=spf1 include:_spf.google.com ~all を作成
  2. DKIM レコード追加: default._domainkey の TXT レコードにプロバイダーの公開鍵を設定
  3. DMARC レコード追加: _dmarc の TXT レコードとして v=DMARC1; p=none; rua=mailto:[email protected] を作成
  4. p=none で開始: 1週間ほどレポートを確認し、問題がなければ p=quarantinep=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 レポートを分析しながら段階的にポリシーを強化しましょう。適切に設定されたこれらのレコードは、迷惑メール判定を劇的に減らし、ドメインのなりすましを防止します。