SPF・DKIM・DMARCの設定方法とGmail送信者要件
自社ドメインのメールが Gmail で迷惑メールになる原因の大半は送信ドメイン認証の不備です。SPF、DKIM、DMARC がそれぞれ何を証明するのか、Gmail の送信者要件、DNS に登録するレコードの書き方と、DMARC を段階的に強める手順を説明します。
3つの仕組みの役割
メールの差出人アドレス(From)は、自由に書けます。誰でも example.com を名乗って送れるため、受信側は「本当にそのドメインの管理者が送ったか」を、DNS に置かれた宣言で確かめます。それが SPF、DKIM、DMARC です。
SPF は、「このドメインのメールを送ってよいサーバー」を TXT レコードで宣言します。DKIM は、送信サーバーがヘッダーと本文に電子署名を付け、受信側が DNS の公開鍵で検証します。転送されても署名が残る点で SPF より強い仕組みです。DMARC は、SPF と DKIM の結果を From のドメインと突き合わせ、失敗したときに受信側がどう扱うか(何もしない、迷惑メール、拒否)を宣言し、結果のレポートの送り先を指定します。
Gmail の送信者要件
Google は2024年2月以降、Gmail 宛てに送るすべての送信者に SPF または DKIM の設定を求め、1日5,000通以上を送る送信者には SPF と DKIM の両方、DMARC の設定、ワンクリックでの配信停止、迷惑メール報告率を 0.3% 未満に保つことを求めています。満たさない場合、メールは迷惑メールに分類されるか、受信を拒否されます。Microsoft も2025年に、Outlook.com 宛ての大量送信者に同様の要件を適用しました。
通数が少ない会社のドメインでも、「SPF または DKIM」は最低条件です。問い合わせフォームの自動返信がいつの間にか届かなくなっていた、という相談の原因はほとんどがこれです。
SPF の書き方
ドメイン直下に TXT レコードを1つだけ置きます。
v=spf1 include:_spf.example-mail.jp -all
include: には、使っているメールサーバーの事業者が指定する値を入れます。レンタルサーバーのメール、Google Workspace、メール配信サービスを併用しているなら、それぞれの include を1つのレコードに並べます。SPF レコードを2つ置くと、全体がエラー扱いになります。
末尾の -all は「ここに書いた以外は失敗」、~all は「失敗だが緩やかに扱う」という指定です。SPF には DNS の参照回数が10回までという制限があり、include を重ねると超えることがあります。超えると SPF 全体が無効になるため、DNSレコード確認で現在の値を見て、使っていないサービスの include を消してください。
DKIM の設定
DKIM は、送信側のサーバーで鍵を作り、公開鍵を セレクタ._domainkey.example.com の TXT レコードに置きます。レンタルサーバーや Google Workspace では管理画面に「DKIM を有効にする」のような項目があり、登録すべきレコードの名前と値が表示されるので、それを DNS にそのまま登録します。鍵の長さは 2048 ビットが現在の標準です。
複数のサービスから送る場合、サービスごとにセレクタが異なるため、レコードは複数になります。これは SPF と違って問題ありません。
DMARC の設定
_dmarc.example.com に TXT レコードを置きます。最初は監視だけの設定から始めます。
v=DMARC1; p=none; rua=mailto:dmarc@example.com
p=none は失敗したメールにも何もしない指定で、rua に指定したアドレスに受信側から集計レポート(XML)が届きます。1〜2週間レポートを見て、自社の正規の送信元がすべて SPF か DKIM に通っていることを確かめてから、p=quarantine(迷惑メールへ)、最終的に p=reject(拒否)へ上げます。いきなり reject にすると、把握していなかった送信元(複合機のスキャン送信、会計ソフトの通知など)のメールが消えます。
DMARC が通るには、SPF か DKIM のどちらかが成功し、かつそのドメインが From のドメインと一致(アライメント)している必要があります。メール配信サービスを使うときに「独自ドメインの認証」の設定が求められるのは、この一致のためです。
確認に使えるツール
- DNSレコード確認: SPF、DKIM、DMARC のレコードが登録されているかをまとめて確認します
- SSL証明書チェック: メールサーバーのホスト名で証明書の期限を確認します