--- title: "SPF・DKIM・DMARCとは?メール認証の仕組みをわかりやすく解説" description: "SPF・DKIM・DMARCの役割と設定方法を解説します。なりすましメール対策に必要な3つの認証の違いと、DNSレコードへの設定手順をまとめました。" date: 2026-05-15 tags: [メール認証, SPF, DKIM, DMARC, DNS] related_tools: [mail-auth, mail-header, dns] draft: false --- メールのなりすましやフィッシングを防ぐために、現代のメールシステムでは **SPF・DKIM・DMARC** という3つの認証が使われています。Gmailや大手プロバイダーがこれらを受信判断の基準にしているため、メールが届かない・迷惑メールに入る問題の多くがこれらの設定漏れに起因しています。 ## SPFとは **SPF(Sender Policy Framework)** は「このドメインのメールはどのサーバーから送ってよいか」をDNSに登録する仕組みです。 受信サーバーは、差出人のドメインのDNSに登録されたSPFレコードを参照し、実際にメールを送ってきたIPアドレスが許可リストに含まれているかを確認します。 ### SPFレコードの書き方 ``` v=spf1 include:_spf.google.com ~all ``` | 要素 | 意味 | |---|---| | `v=spf1` | SPFバージョン宣言(必須) | | `include:` | 外部のSPFレコードを参照 | | `~all` | 記載外からの送信はソフトフェイル(警告扱い) | | `-all` | 記載外からの送信はハードフェイル(拒否) | SPFレコードはTXTレコードとしてDNSに登録します。ドメインに対して設定できるSPFレコードは**1件のみ**です。複数登録するとSPFが無効になるため注意が必要です。 ## DKIMとは **DKIM(DomainKeys Identified Mail)** は、メールに電子署名を付与して改ざんを検知する仕組みです。 送信サーバーがメール本文とヘッダーにハッシュ値を計算し、秘密鍵で署名します。受信サーバーはDNSに公開された公開鍵で署名を検証し、送信後に内容が改ざんされていないかを確認します。 ### DKIMレコードの登録例 DKIMの公開鍵はTXTレコードとして以下の形式で登録します。 ``` セレクター名._domainkey.ドメイン名 ``` たとえば Google Workspace の場合は `google._domainkey.example.com` というホスト名に登録します。実際の値は利用しているメール送信サービスの管理画面から取得できます。 ## DMARCとは **DMARC(Domain-based Message Authentication, Reporting, and Conformance)** は、SPFとDKIMの認証結果をもとに「認証失敗したメールをどう扱うか」をドメイン所有者が指定する仕組みです。 ### DMARCレコードの書き方 ``` v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com ``` | ポリシー(p=) | 動作 | |---|---| | `none` | 何もしない(モニタリング専用) | | `quarantine` | 迷惑メールフォルダへ移動 | | `reject` | メールを拒否 | `rua=` に指定したアドレスに認証結果のレポートが届くため、最初は `p=none` で様子を見て、問題がなければ `quarantine` → `reject` と段階的に強化するのが定石です。 ## 3つの認証の関係 SPF・DKIM・DMARCは単独では不完全であり、3つ揃って機能します。 - **SPFのみ**: 送信元IPは検証できるが、ヘッダーのFromアドレスは偽装できる - **DKIMのみ**: 改ざん検知はできるが、第三者ドメインから署名されたメールも通過する - **DMARC**: SPF・DKIMの結果と「Fromアドレスのドメイン」の一致を検証し、不一致時の処理を指定 この組み合わせにより、なりすましメールを体系的にブロックできます。 ## 設定の確認方法 実際にSPF・DKIM・DMARCが正しく設定されているかは、以下のツールで確認できます。 - **メール認証チェッカー**: ドメインを入力してSPF・DKIM・DMARCをまとめて確認 - **メールヘッダー解析ツール**: 受信したメールのヘッダーを貼り付けると認証結果を表示 - **DNSレコード確認ツール**: TXTレコードを直接確認 設定変更後はDNSの反映に最大48時間かかることがあります。変更直後は焦らず時間をおいて再確認してください。