メールの認証、徹底解説: SPF、DKIM、DMARC 実設定ガイド
あなたが送信するすべてのメールは「このドメインの代わりに送信することが許可されています」という主張をしています。SPF、DKIM、DMARCは、受信サーバーがその主張を確認できるようにする3つのDNSレコードです。これらを正しく設定すればメールは受信トレイに届きますが、設定を間違えたり省略したりすると、GmailやYahoo、Outlookはますますメールをスパムに送信するか拒否するようになります。
2024年以降、GmailとYahooはSPF、DKIM、およびDMARCポリシーの3つすべてを大量送信者に要求しています。これは、3つすべてを正しく設定し、コマンドラインから検証し、既存のメールを壊さずにDMARCポリシーをロールアウトするための実用的なコピー&ペーストガイドです。
まず各レコードの概念的な背景を知りたい場合は、DKIM とは?、SPFレコードとは?、DMARCとは?を参照してください。このポストはこれら3つの実践的な付随ガイドです。
90秒のメンタルモデル
3つのレコードは、メッセージについての3つの異なる質問に答えます。
- SPF — 「このサーバーはこのドメインのために送信することが許可されていますか?」 送信を許可されているサーバー/サービスをリストアップしたDNS
TXTレコード。見える From: ではなくenvelope-from(Return-Path)に対してチェックされます。 - DKIM — 「このメッセージは実際にドメインによって認可され、変更されずに到着しましたか?」 送信者は各メッセージに暗号署名し、公開キーはDNSに存在します。有効な署名は真正性と整合性を証明します。
- DMARC — 「SPFまたはDKIMが失敗した場合、どうすべきですか、そしてどこに報告すべきですか?」 SPFとDKIMを見える From:ドメインに結び付けるポリシーレコード(この結び付けを配置と呼びます)、失敗時に隔離するか拒否するかを受信者に伝え、レポートをリクエストします。
SPFとDKIMはチェックを実行し、DMARCはそれらのチェックをポリシーに変え、可視性を与えます。3つすべてが必要です。
SPF:送信者を認可する
SPFはenvelope-fromに表示されるドメイン上の単一の TXT レコードです。MailerToGoから mtg.yourdomain.com で送信する場合:
mtg.yourdomain.com. TXT "v=spf1 include:_spf.mailertogo.net ~all"
include:_spf.mailertogo.netはMailerToGoの認可された送信IP(MailerToGoによって管理され常に最新 — IPをハードコードすることはありません)をプルします。~allはソフトフェイル(認可されていない送信者にマークしますが受け入れます);すべての正当な送信者がリストされていることが確実になったら、ハードフェイルに厳しくします(-all)。
人々がつまずく2つのルール:
- ドメインあたり1つのSPFレコード。 同じ名前に2つの
v=spf1レコードを公開することはありません — これはpermerrorであり、SPFは失敗します。1つにマージします:"v=spf1 include:_spf.mailertogo.net include:_spf.google.com ~all". - 10ルックアップ制限。 SPFは評価中に最大10のDNSルックアップを許可します。すべての
include:がカウントされます。ESPのスタッキング、Google、Microsoft、MailerToGoを1つのルートレコードに重ねることは、10を超える可能性があり、すべてのSPFを壊します — これは専用サブドメインからアプリメールを送信する大きな理由です。(Why MailerToGo sends from mtg.yourdomain.comを参照。)
DKIM:すべてのメッセージに署名する
DKIMは秘密鍵を使用して各メッセージに署名します。受信者はDNSから一致する公開キーをフェッチします。MailerToGoを使用するとキーを生成または貼り付けることはありません — アカウント固有のセレクターをポイントする CNAME を公開し、私たちが基盤となるキーをローテーションします:
; Selectorはアカウント固有です — ダッシュボードから正確な値を使用します
mtg1._domainkey.mtg.yourdomain.com. CNAME mtg1.dkim.mailertogo.net.
これは私たちが制御するレコードへの CNAME であるため、キーローテーションは自動です:キーをロールオーバーすると、公開されている公開キーは私たち側で変更されあなたのDNSは編集不要です。公開レコードを検査する場合、標準的なDKIM公開キーが表示されます:
mtg1._domainkey.mtg.yourdomain.com. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSq...QAB"
有効なDKIM署名は、SPFがよく破壊される転送を生き残るあなたのメールです — したがってDKIMは2つの認証シグナルのより耐久性があります。
DMARC:ポリシーを設定してレポートを取得する
DMARCは固定名 _dmarc.<domain> に存在し、SPF/DKIMの結果を見えるFrom:ドメインに結び付けます。モニターモードで開始して、実際に何が送信されているかを学習してから何かを強制します:
_dmarc.yourdomain.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com; fo=1; adkim=s; aspf=s"
タグ別:
p=none— 監視のみ。失敗に対して措置を取りません(まだ)。rua=mailto:...— 集計レポートをここに送信(誰があなたとして送信しているかの毎日のXML概要)。ここでnoneで開始する理由はこれです — ゼロリスクで可視性を得ます。fo=1— SPFまたはDKIMが失敗するときに失敗の詳細をリクエスト。adkim=s/aspf=s— 厳格配置(署名/envelopeドメインはFrom:ドメインと正確に一致する必要があります)。親ドメインで署名する場合は緩和(r, デフォルト)を使用します。- サブドメインの別のポリシーを設定する必要がある場合は
sp=を追加します。
DMARCアライメントは微妙な部分です:SPFまたはDKIMがパスするだけで十分ではありません — 彼らがパスするドメインは見えるFrom:のドメインとアラインする必要があります。これは送信アーキテクチャが重要な理由であり、完全に制御するサブドメインがアライメントを直進させる理由です。
コマンドラインからすべてを検証する
レコードが生きていると仮定しないでください — チェックしてください。dig (またはWindowsの nslookup)は、リゾルバーが正確に何を見えるかを示します:
# SPF — 単一のv=spf1行を期待
dig +short TXT mtg.yourdomain.com
# DKIM — CNAMEをフォローして公開キーへ
dig +short CNAME mtg1._domainkey.mtg.yourdomain.com
dig +short TXT mtg1._domainkey.mtg.yourdomain.com
# DMARC — 常に_dmarc.<domain>で
dig +short TXT _dmarc.yourdomain.com
その後、実際のメッセージを自分自身に送信して受信を読みます。Gmailでメッセージを開く → ⋮ → 元の形式を表示。あなたは見たいです:
SPF: PASS with domain mtg.yourdomain.com
DKIM: PASS with domain mtg.yourdomain.com
DMARC: PASS
3つすべてがアライン済みドメインでPASSを表示する場合、完了です。
メールを壊さずにDMARC強制をロールアウトする
正当なメールをダウンさせる間違いは p=reject に直接ジャンプすることです。代わりにランプ、各ステップで rua レポートを監視:
p=none— 1~2週間監視します。集計レポートを読んでください。すべての正当な送信者がパスして配置されていることを確認します。p=quarantine; pct=25→ 徐々にpctを100に向けて上げます。失敗はスパムに、虚無に送られるため、間違いは回復可能です。p=reject— 完全強制。レポートがクリーンになったら、ここに到達します。これはGmail/Yahooが報酬を与えるレベルであり、正確なドメインスプーフィングを止めます。
一般的な失敗と意味
- SPF permerror / “DNSルックアップが多すぎます” — 10ルックアップを超えました。インクルードを統合するか、アプリメールをサブドメインに移動します。
- 2つのSPFレコード — 1つの
v=spf1文字列にマージ。 - DKIM “ボディハッシュが検証されませんでした” — 何かが転送中にメッセージを変更しました(メーリングリストフッター、スキャナー)。DKIMは機能しています。コンテンツは署名後に変更されました。
- SPF/DKIMがパスしてもDMARCが失敗する — 配置問題:パスするドメインはFrom:ドメインと一致しません。envelope-from/DKIMドメインとFrom:が組織的なドメインを共有することを確認します。
短いバージョン、そしてMailerToGoがどのように役立つか
SPFは誰が送信できるかを言い、DKIMはメッセージが本物で変更されていないことを証明し、DMARCは両方をあなたの見える ドメインに結び付け、受信者に何をすべきかを伝えます。3つすべてを設定し、dig とGmailの元の形式を表示で検証し、DMARCを none → quarantine → reject からランプします。
MailerToGoを使用する場合、DKIMキーとそのローテーションはあなたのために処理されます、そしてあなたのダッシュボードは公開する正確なSPF/DKIM/DMARCレコードを表示します。委任 mtg.yourdomain.com サブドメインを使用する場合、単一のNSレコードから私たちがすべてのレコードを公開し、維持します — 手動DNSまったくありません。代わりにレコードを所有することを好みますか?手動サブドメインセットアップガイドは、アプリケーション設定(envelope-from対From:)をステップバイステップで説明します。
基本的な標準については、MailerToGoはSPF、DKIM、DMARC、およびそれらがどのように適合するかの平文リファレンスも保持しています。