自分のドメインを認証する実践ガイド: SPF、DKIM、DMARC を正しい順序で公開し、送信 IP をブロックリストから外しておき、各レイヤーが実際に合格することを検証します。
これは実践的なセットアップガイドです。あなたがメールを送信するドメインに対して SPF、DKIM、DMARC を公開し、送信 IP を RBL ブロックリストから外しておき、すべてが実際に機能していることを検証する方法を解説します。まず各仕組みが何であるかという平易な理論を知りたい場合は、一般的な「メール認証の仕組み」入門を読んでください。ここでは、作成するレコード、展開する順序、そして実際のメールを壊すよくある間違いに焦点を当てます。
TXT レコードを追加する場所)へのアクセス権 — 通常はレジストラまたは DNS ホスト。SPF は、ドメインのルートに置く単一の TXT レコードで、そのドメインの送信を許可されたサーバーを列挙します。誰もがつまずくルール: ドメインが持てる SPF レコードは1つだけです。複数の送信元を使う場合は、複数の include: メカニズムを使って1行にまとめます — SPF レコードを2つ公開してはいけません。
Google Workspace とマーケティングツール1つを通じて送信するドメインの典型的なレコード:
example.com. IN TXT "v=spf1 include:_spf.google.com include:sendgrid.net -all"
| 要素 | 意味 |
|---|---|
include:_spf.google.com | プロバイダーの送信範囲全体を参照によって許可します。正確なトークンは各送信元のドキュメントから入手してください。 |
ip4: / ip6: | 自前のメールサーバーをそのパブリック IP で許可します。例: ip4:203.0.113.10。 |
~all と -all | ~all = ソフトフェイル(テスト中はここから始める); -all = ハードフェイル(リストが完成したら切り替える)。 |
10回ルックアップの上限。 SPF は評価される間に最大 10回の DNS ルックアップしか許可しません。各 include: や a/mx メカニズムはそれぞれ1回以上を消費し得ます。これを超えると SPF は permerror を返し — 失敗として扱われます。多数のプロバイダーを積み重ねる場合は、使っていない include を削るか、さらに積み増すのではなく SPF フラット化サービスを使ってください。
ソフトから始めて、後で厳しくする。 1〜2週間は ~all で公開し、正当な送信元が失敗しないことを確認してから、最後のメカニズムを -all に変更します。
DKIM はすべてのメッセージに暗号署名を追加します。鍵を手作業で作ることはほとんどありません — 各送信プラットフォームがそれを生成し、セレクターの下に公開するための TXT(または CNAME)レコードを渡します。これを送信元ごとに行ってください: Google、Microsoft、あなたの ESP、そして自前のサーバーは、それぞれ独自のセレクターと鍵を持ちます。
google、s1)と公開鍵が表示されます。<selector>._domainkey.example.com に公開します。CNAME を使うプロバイダーは、あなたの代わりに鍵をローテーションできます — 提供されている場合はそちらを優先してください。DKIM-Signature: ヘッダーの追加を始めます。選べる場合は 2048ビットの鍵を優先してください。署名はメッセージの内部を移動するため、DKIM は転送されても生き残ります(SPF とは異なり) — だからこそ次のステップはこれに依存します。
DMARC は SPF と DKIM を可視の From: アドレスに結びつけ、失敗時に受信者がどうすべきかを伝えます。p=reject から始めては決していけません — 忘れていた送信元からの正当な自分のメールをバウンスさせてしまいます。3つの段階で展開し、それぞれの間でレポートを注視してください。
| 段階 | _dmarc.example.com のレコード | 目的 |
|---|---|---|
| 1. モニター | v=DMARC1; p=none; rua=mailto:dmarc@example.com | 受信者に対しては何も変えません。あなたのドメインとして誰が送信しているかの集計レポートを収集するだけです。 |
| 2. 隔離 | v=DMARC1; p=quarantine; pct=25; rua=… | 失敗したメールの一部を迷惑メールに送ります。自信がついたら pct を上げていきます。 |
| 3. 強制 | v=DMARC1; p=reject; rua=…; sp=reject | なりすましメールを完全に拒否します。sp= はサブドメインに対するポリシーを設定します。 |
rua= のアドレスは、受信者から日次の XML 集計レポートを受け取ります。それらを読んでください(最初は無料の DMARC レポートビューアで十分です): 各レポートには、あなたのドメインを使っている送信 IP と、それらがアライメント付きで SPF と DKIM に合格したかどうかが列挙されます。アライメントが落とし穴です — メッセージは単に SPF または DKIM に合格するだけでは不十分で、合格したドメインが From: ドメインと一致していなければなりません。正当なサービスが自身のドメインでは DKIM に合格するがあなたのドメインでは合格しない場合、強制に移る前に、そのサービスの DKIM をあなたのドメインの下に公開して修正してください(ステップ2)。
SPF/DKIM/DMARC は身元を証明します。RBL ブロックリスト(DNSBL)は送信 IP の評判を判断します。完璧に認証されたメッセージでも、その IP がリストに載っていれば迷惑メールに入ります。RBL 向けに何かを公開するわけではありません — それらから清潔に保つのです:
もしリストに載ってしまった場合、評判の良いほとんどのリスト(Spamhaus など)は理由を示し、原因が修正されればセルフサービスの解除を提供します。まず修正し、それから削除を要求してください — 問題が残ったまま解除しても、また載せられるだけです。
レコードを公開することは証明ではありません。各レイヤーを確認してください:
dig TXT example.com、dig TXT google._domainkey.example.com、dig TXT _dmarc.example.com(または Windows では nslookup -type=TXT)。Authentication-Results: ヘッダーを見てください — そこには受信者が見たとおりの spf=pass、dkim=pass、dmarc=pass(または正確な失敗内容)が記載されています。それが真実そのものです。p=none から強制へ移る前に、数週間注視してください。| 症状 | よくある原因と修正 |
|---|---|
SPF permerror | SPF レコードが2つある、または DNS ルックアップが10回を超えている。1つのレコードにまとめ、使っていない include: を削ります。 |
| 正当なメールが SPF に失敗する | 許可し忘れた送信元があるか、メールが転送された。送信元を追加し、転送については DKIM+DMARC アライメントに頼ります。 |
DKIM fail(本文ハッシュ) | 配送途中で何か(メーリングリストのフッター、アプライアンス)がメッセージを書き換えた。relaxed 正規化で署名し、変動しやすいヘッダーを除外します。 |
| SPF/DKIM 合格にもかかわらず DMARC が失敗する | アライメントがない — 合格したドメインがあなたの From: ドメインではない。その送信元の DKIM を自分のドメインの下に公開します。 |
| サブドメインがなりすまされる | サブドメインポリシーがない。DMARC レコードに sp=reject を追加します。 |
3つのレコードすべてが有効になり、アライメントが取れ、検証されれば — そして IP がブロックリストから外れていれば — あなたはドメインのなりすましを試みる者たちの扉を閉ざし、本物のメールに受信トレイへ届く最善の機会を与えたことになります。任意のドメインの個々のアドレスをチェックするには、トップページの メールチェッカー がライブのメールボックスチェックを実行します。