はじめに
SPF / DKIM / DMARC など、メールの送信ドメイン認証についての備忘録です。
改訂履歴
- 2026/08/01 : BIMI の追記。
- 2026/07/29 : 初版公開。
本文
1. SPF / DKIM / DMARC とは
SPF (Sender Policy Framework)、DKIM (DomainKeys Identified Mail)、DMARC (Domain-based Message Authentication, Reporting, and Conformance) とは、メールの送信元ドメインの正当性や、メールの改ざん有無を検証するための仕組みです。
それぞれの役割は以下の通りです。
| 仕組み | 役割 |
|---|---|
| SPF | メールの送信元 IP アドレスが正当かを確認する |
| DKIM | メールの内容や署名対象のヘッダーが改ざんされていないかを確認する |
| DMARC | SPF / DKIM の検証結果をもとに受信側の処理を決定する |
これらを組み合わせることで、送信者のなりすましやメールの改ざんを検知できます。
補足
メールの送信者認証は主体が分かりにくいのですが、送信側が証明材料を用意し、受信側が検証する仕組みになっています。
2. SMTP AUTH / POP3S との違い
SMTP AUTH や POP3S は、メールの利用者を認証するための仕組みです。一方、SPF / DKIM / DMARC は、メールの配送時に送信元ドメインの正当性や改ざん有無を確認するための仕組みです。
| 仕組み | 確認内容 |
|---|---|
| SMTP AUTH | このユーザーはメールを送信してよい人か? |
| POP3S | このユーザーはメールを受信してよい人か?(+ 通信暗号化) |
| SPF / DKIM / DMARC | このメールは正当な送信元ドメインから送られたものか? |
3. SPF とは
SPF (Sender Policy Framework) とは、SMTP のエンベロープ From (MAIL FROM) で指定されたドメインが、その送信元 IP アドレスからメール送信を許可しているかを検証する仕組みです。送信側は DNS に SPF レコードを登録します。
例えば example.com が、以下のような SPF レコードを DNS で公開しているとします。
example.com. TXT "v=spf1 ip4:203.0.113.10 -all"
補足
実際の運用では、Microsoft 365 や Google Workspace などのメールサービスを利用する場合、include:_spf.example.com のようにサービス側が公開している SPF 情報を参照する形式がよく利用されるようです。今回は SPF の仕組みを理解しやすくするため、送信元 IP アドレスを直接指定する例としています。
受信側のメールサーバーは、メールを受信した際に送信元 IP アドレスを確認し、DNS 上の SPF レコードと照合します。
ただし SPF は SMTP の MAIL FROM に設定されたエンベロープ From を検証する仕組みであり、メールの本文に表示される From アドレスとは異なります。そのため、SPF の認証に成功していても、メールソフトに表示される From アドレスが正当であることを保証するものではありません。
補足
SPF を拡張した規格として Sender ID Framework という仕組みも提案されました。Sender ID はメール本文の From に相当する情報も検証対象にする点が SPF と異なります。しかし、複雑さや互換性の問題から現在は広く利用されておらず、現在のメール認証では SPF / DKIM / DMARC が主流です。
4. DKIM とは
DKIM (DomainKeys Identified Mail / ディーキム) とは、メールに電子署名を付与することで、署名したドメインから送信されたこと、およびメールの内容が改ざんされていないことを検証する仕組みです。送信側では秘密鍵を利用してメールヘッダーや本文のハッシュ値に署名します。
例えば example.com が、以下のようなレコードを DNS で公開しているとします。
selector1._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."
| 部分 | 意味 |
|---|---|
selector1._domainkey.example.com |
DKIM の公開鍵を公開する DNS 名 |
TXT |
DNS レコードの種類 |
v=DKIM1 |
DKIM のバージョン |
k=rsa |
使用する鍵の種類 (RSA) |
p=... |
公開鍵 |
受信側はメールヘッダーに書かれている selector を見て問合せ先 DNS を決定し、公開されている公開鍵を利用して署名を検証します。
DKIM は SPF と異なり、メールの転送が行われても、メールの本文や署名対象のヘッダーが変更されなければ検証することができます。
5. DMARC とは
DMARC (Domain-based Message Authentication, Reporting, and Conformance / ディーマーク) とは、SPF と DKIM の検証結果を利用して、受信側がメールをどのように扱うかを指定する仕組みです。
送信側は DNS に DMARC レコードを登録します。
_dmarc.example.com. TXT "v=DMARC1; p=quarantine"
DMARC では、検証失敗時の処理を以下のように指定できます。
| ポリシー | 動作 |
|---|---|
none |
何もしない(監視のみ) |
quarantine |
迷惑メールフォルダに隔離する |
reject |
受信拒否 |
DMARC の特徴は、SPF または DKIM の認証結果に加え、それらで認証されたドメインがメールの From ヘッダーに表示されるドメインと一致 (Alignment) しているかを確認する点です。これにより、SPF や DKIM の認証に成功していても、別のドメインを名乗るなりすましメールを検知できます。
6. BIMI とは
BIMI (Brand Indicators for Message Identification / ビミ) とは、DMARC の認証に成功したメールについて、受信トレイに送信元企業の公式ロゴを表示できるようにする仕組みです。
BIMI 自体はメールを認証する仕組みではなく、SPF / DKIM / DMARC によって送信ドメインが適切に保護されていることを前提として、ブランドロゴを表示するための仕組みです。
BIMI を利用するには、まず DMARC を導入し、ポリシーを quarantine または reject に設定する必要があります。また多くのメールサービスでは、ブランドロゴが商標登録されており、その所有者であることを証明する VMC (Verified Mark Certificate) が必要です。
送信側は HTTPS サーバー上にロゴ画像を配置し、その場所を示す BIMI レコードを DNS に公開します。受信側は DMARC の認証に成功すると BIMI レコードを参照し、対応しているメールサービスでは送信者のロゴを受信トレイに表示します。
おわりに
随時更新します。