SPF、DKIM、DMARC の設定方法

自分のドメインを認証する実践ガイド: SPF、DKIM、DMARC を正しい順序で公開し、送信 IP をブロックリストから外しておき、各レイヤーが実際に合格することを検証します。

これは実践的なセットアップガイドです。あなたがメールを送信するドメインに対して SPF、DKIM、DMARC を公開し、送信 IP を RBL ブロックリストから外しておき、すべてが実際に機能していることを検証する方法を解説します。まず各仕組みが何であるかという平易な理論を知りたい場合は、一般的な「メール認証の仕組み」入門を読んでください。ここでは、作成するレコード、展開する順序、そして実際のメールを壊すよくある間違いに焦点を当てます。

始める前に、2つのものを用意してください:
  • ドメインの DNS ゾーン(TXT レコードを追加する場所)へのアクセス権 — 通常はレジストラまたは DNS ホスト。
  • あなたのドメインとしてメールを送信するすべてのサービスを書き出したリスト: メールボックスプロバイダー(Google Workspace、Microsoft 365…)、自前のメールサーバー、そしてすべての第三者 — ニュースレターツール、CRM、請求・インボイス、ヘルプデスク。1つでも漏らすと、そのメールは認証に失敗します。

ステップ1 — SPF レコードを1つ公開する

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 に変更します。

ステップ2 — 各送信元で DKIM を有効にする

DKIM はすべてのメッセージに暗号署名を追加します。鍵を手作業で作ることはほとんどありません — 各送信プラットフォームがそれを生成し、セレクターの下に公開するための TXT(または CNAME)レコードを渡します。これを送信元ごとに行ってください: Google、Microsoft、あなたの ESP、そして自前のサーバーは、それぞれ独自のセレクターと鍵を持ちます。

  1. 送信元の管理パネルで、DKIM /「メール認証」を有効にします。セレクター(例: google、s1)と公開鍵が表示されます。
  2. それを DNS の <selector>._domainkey.example.com に公開します。CNAME を使うプロバイダーは、あなたの代わりに鍵をローテーションできます — 提供されている場合はそちらを優先してください。
  3. パネルに戻り、認証を開始をクリックすると、送信元が DKIM-Signature: ヘッダーの追加を始めます。選べる場合は 2048ビットの鍵を優先してください。

署名はメッセージの内部を移動するため、DKIM は転送されても生き残ります(SPF とは異なり) — だからこそ次のステップはこれに依存します。

ステップ3 — DMARC を段階的に展開する

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)。

ステップ4 — 送信 IP を RBL から外しておく

SPF/DKIM/DMARC は身元を証明します。RBL ブロックリスト(DNSBL)は送信 IP の評判を判断します。完璧に認証されたメッセージでも、その IP がリストに載っていれば迷惑メールに入ります。RBL 向けに何かを公開するわけではありません — それらから清潔に保つのです:

  • 望まれたメールだけを送る。 迷惑メール苦情やスパムトラップへの命中は、リストに載る最速の方法です。
  • 新しい IP はウォームアップする — 初日から大量に送りつけるのではなく、徐々に増やします。
  • 送信できるすべてのアカウントとスクリプトを保護する — 侵害されたフォームやパスワードが1つあるだけで、IP 全体がリストに載ります。
  • 有効な逆引き DNS(PTR)を設定する — 送信 IP に対して、その HELO 名と一致するものを。

もしリストに載ってしまった場合、評判の良いほとんどのリスト(Spamhaus など)は理由を示し、原因が修正されればセルフサービスの解除を提供します。まず修正し、それから削除を要求してください — 問題が残ったまま解除しても、また載せられるだけです。

ステップ5 — 実際に機能することを検証する

レコードを公開することは証明ではありません。各レイヤーを確認してください:

  • レコードが存在することを確認する。 DNS を直接クエリします: dig TXT example.com、dig TXT google._domainkey.example.com、dig TXT _dmarc.example.com(または Windows では nslookup -type=TXT)。
  • 許可したメールサーバーを確認する。 当サイトの MX検索 を使って、ドメインが実際に公開している MX ホストを確認しましょう — 古い、または誤ったメールホストを見つけるのに便利です。
  • 実際のメッセージで結果を読む。 自分宛てにテストメッセージを送り、その生ソースを開いて、MIME デコーダーに貼り付けます。Authentication-Results: ヘッダーを見てください — そこには受信者が見たとおりの spf=pass、dkim=pass、dmarc=pass(または正確な失敗内容)が記載されています。それが真実そのものです。
  • DMARC レポートを注視する — p=none から強制へ移る前に、数週間注視してください。

よくあるセットアップの間違い

症状よくある原因と修正
SPF permerrorSPF レコードが2つある、または DNS ルックアップが10回を超えている。1つのレコードにまとめ、使っていない include: を削ります。
正当なメールが SPF に失敗する許可し忘れた送信元があるか、メールが転送された。送信元を追加し、転送については DKIM+DMARC アライメントに頼ります。
DKIM fail(本文ハッシュ)配送途中で何か(メーリングリストのフッター、アプライアンス)がメッセージを書き換えた。relaxed 正規化で署名し、変動しやすいヘッダーを除外します。
SPF/DKIM 合格にもかかわらず DMARC が失敗するアライメントがない — 合格したドメインがあなたの From: ドメインではない。その送信元の DKIM を自分のドメインの下に公開します。
サブドメインがなりすまされるサブドメインポリシーがない。DMARC レコードに sp=reject を追加します。

3つのレコードすべてが有効になり、アライメントが取れ、検証されれば — そして IP がブロックリストから外れていれば — あなたはドメインのなりすましを試みる者たちの扉を閉ざし、本物のメールに受信トレイへ届く最善の機会を与えたことになります。任意のドメインの個々のアドレスをチェックするには、トップページの メールチェッカー がライブのメールボックスチェックを実行します。