SPF・DKIM・DMARC の基本:なりすましを防ぎ、受信トレイに届けるために
最終確認:2026/10/20
メールの差出人欄には、誰でもあなたのドメインを書き込めます。SPF・DKIM・DMARC は、受信サーバーがそのメールが本当にあなたから送られたものかを確認するための 3 つの DNS レコードです。2024 年以降、Gmail と Yahoo はこれらの確認に通らないメールを拒否するか、迷惑メールフォルダに振り分けています。
要点
- SPF は、あなたのドメインからメールを送ってよいサーバーを列挙します。
- DKIM はメールごとに署名を付け、検証用の公開鍵を DNS に公開します。
- DMARC は SPF と DKIM が失敗したときの扱いを受信側に伝え、レポートを送ってもらう仕組みです。表示される差出人アドレスのドメインと一致した場合にだけ合格します。
- まず
p=noneで始めてレポートを確認し、正当な送信元がすべて合格するようになったらquarantine、さらにrejectへ移行します。
3 つのレコードの概要
| レコード | 設定場所 | 例 |
|---|---|---|
| SPF | ドメインそのものの TXT | v=spf1 include:_spf.google.com ~all |
| DKIM | selector._domainkey.example.jp の TXT(または CNAME) | v=DKIM1; k=rsa; p=MIIBIjANBg… |
| DMARC | _dmarc.example.jp の TXT | v=DMARC1; p=none; rua=mailto:[email protected] |
なぜ今重要なのか
2024 年 2 月から、Gmail と Yahoo はすべての送信者に SPF または DKIM を求めています。大量送信者(Google の基準では Gmail アドレス宛てに 1 日 5,000 通超)は、SPF・DKIM・DMARC レコード(p=none で可)、SPF または DKIM と整合した差出人ドメイン、マーケティングメールのワンクリック登録解除、0.3% 未満の迷惑メール報告率が必要です。
送信量が少なくても、これらのレコードがないとフィッシングでドメインを簡単になりすまされ、受信側もそのドメインからのメールを信頼しにくくなります。
SPF
SPF はドメインに設定する 1 つの TXT レコードで、v=spf1 で始まり、許可する送信元を列挙し、それ以外すべてに対するルールで終わります。include: はサービス事業者のリストを取り込み、ip4:/ip6: は自社サーバーを追加し、mx はドメインの MX サーバーを許可します。
- SPF レコードは必ず 1 つだけ公開してください。
v=spf1が 2 つあると SPF はエラー(permerror)になるので、1 つにまとめます。 - SPF が行える DNS 参照は最大 10 回です(include、a、mx、exists、redirect はすべて数えられ、入れ子のものも含みます)。超えると SPF は失敗するため、使っていない include は削除しましょう。
-all(fail)はリストにない送信元の拒否を、~all(softfail)は疑わしいものとしての扱いを求めます。DMARC を設定していれば、~allが一般的で安全です。- SPF がチェックするのはエンベロープの送信者(Return-Path)で、人が目にする差出人アドレスではありません。また転送されると壊れます。そのため DKIM も必要です。
DKIM
送信サーバーはヘッダーと本文に秘密鍵で署名し、受信側は selector._domainkey.example.jp から公開鍵を取得して署名を検証します。セレクタはサービス事業者が決める名前(google、selector1、s1、k1 など)で、送信に使うサービスごとに別の鍵が使われます。
メール送信に使うすべてのサービス(メールサービス、メルマガ配信ツール、CRM、ネットショップなど)で DKIM を有効にし、表示されたレコード(通常は TXT または CNAME)を公開してください。可能なら 2048 ビットの鍵を使いましょう。DKIM は転送されても有効なため、DMARC にとってより信頼できる要素です。
DMARC
DMARC は _dmarc.example.jp に設定します。SPF か DKIM のどちらかが合格し、かつ合格したドメインが差出人アドレスのドメインと一致(アライメント)していれば、メールは DMARC に合格します。事業者が自社ドメインで署名している場合は、あなたのドメインで DKIM を設定するまで DMARC の合格には役立ちません。
rua=mailto: を指定すると、受信側から毎日の集計レポート(XML)が届き、どのサーバーがあなたのドメインとしてメールを送り、合格したかどうかが分かります。ポリシーを厳しくする前に、このレポートで見落としていた送信元を見つけられます。
| ポリシー | 不合格メールの扱い |
|---|---|
p=none | 通常どおり配信され、レポートだけが届きます。最初の段階です。 |
p=quarantine | 迷惑メールフォルダに入ります。 |
p=reject | 配信時に拒否されます。なりすましを完全に防げます。 |
安全な導入手順
- 自分のドメインでメールを送るものをすべて洗い出します。メールボックス、ウェブサイトのフォーム、メルマガ、請求書の送付、サポート窓口などです。
- それらをすべて含む SPF レコードを 1 つ公開し、それぞれで DKIM を有効にします。
v=DMARC1; p=none; rua=mailto:…を追加し、2〜4 週間レポートを確認します。- 不合格になっている正当な送信元をすべて直してから
p=quarantine(必要ならpct=で段階的に)に切り替え、その後p=rejectに移行します。 - メールをまったく送らないドメインでは、なりすましを防ぐために
v=spf1 -allとv=DMARC1; p=rejectを公開しておきましょう。
さらに一歩進めるなら
- MTA-STS と TLS-RPT を使うと、他のサーバーは検証済みの TLS でのみあなたにメールを届け、問題があれば報告してくれます。
- BIMI は対応するメールサービスでメールの横にロゴを表示します。DMARC のポリシーが quarantine または reject であることが条件です。
ドメインをチェックする
メールセキュリティチェックは、MX、SPF(DNS 参照回数を含む)、一般的なセレクタまたは指定したセレクタの DKIM、DMARC、MTA-STS、TLS-RPT、BIMI を読み取り、見つかった問題を示します。DNS を変更するたびに再チェックしてください。TTL によっては、新しいレコードが反映されるまで数分から 1 時間ほどかかります。
情報源
このガイドは公開情報をまとめたもので、法的助言ではありません。