見積もりを送ったのに返事が無い。催促したら「迷惑メールに入っていました」と言われた。独自ドメインのメールでこれが起きているなら、まず疑うのは文面ではなくDNSです。
原因の大半は、SPF・DKIM・DMARCの3行(このメールは確かに当社のドメインから出たものだ、と受信側が確かめるために、DNSに書いておく行)のどれかが無いか、間違っていることです。この記事を読み終えると、自分のドメインの状態を dig で確かめ、足りない行を足し、実際のメールで通ったことまで確認できます。
- この記事で出来ること
- 自分のドメインのSPF・DKIM・DMARCをdigで確かめ、足りない行を足し、実際のメールで通ったことまで確認できる
- 前提
- DNSの管理画面と、メールサービスの管理画面に入れること(DNSに入れなければ、記事の文面で業者に頼む)
- 所要時間
- 状態の確認3分、3行の登録30分〜1時間。p=none を上げるまでは1か月(私の目安)
先に結論:入れるのはこの3行
example.com. TXT "v=spf1 include:_spf.example.net ~all"
selector1._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=(公開鍵)"
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc-report@example.com"
include の値、セレクタ名、公開鍵は、使っているメールサービスが指定するものをそのまま入れます(上の値は架空です)。私が守っている決まりは3つです。
- SPFは必ず1行。 送信サービスが増えても行は増やさず、1行の中に足します。
- DKIMは「レコードを置いた」で終わりにしない。 管理画面で署名を有効にするまでが設定です。
- DMARCは
p=noneで始めるが、そこで止めない。 止めたままなら、なりすましは1通も防げていません。
目次(9)
1. まず、いまの状態を見る(3分)
3行がいま登録されているかを、上から SPF・DKIM・DMARC の順に聞くコマンドです。見るだけで、何も変わりません。
dig +short TXT example.com
dig +short TXT selector1._domainkey.example.com
dig +short TXT _dmarc.example.com
Windowsなら nslookup -type=TXT example.com です。コマンドを打てないなら、DNSの管理画面のレコード一覧で種類が「TXT」の行を見るか、ブラウザで使える Google Admin Toolbox の Dig(toolbox.googleapps.com/apps/dig/)に同じ名前を入れて TXT を押します。管理画面を業者が持っているなら、後半の「業者に送る文面」へ。読み方は次のとおりです。
| 出力 | 読み方 | すること |
|---|---|---|
"v=spf1 ..." が1行 | SPFはある | 中身がいまの送信サービスと合っているかを見る |
"v=spf1 ..." が2行以上 | 全部失敗になる状態(permerror) | 1行にまとめる |
v=spf1 の行が無い | SPFが未設定 | 2節へ |
| DKIMの問い合わせが空 | 未設定か、セレクタ名が違う | セレクタ名をサービスの管理画面で確かめる |
"v=DMARC1; p=none..." | 報告だけの段階 | 4節へ |
_dmarc が空 | DMARCが未設定 | 2節へ |
実物を1つ。当サイトのドメイン it-techo.com を、この記事を書いている 2026-09-20 に引いた出力です。誰でも同じコマンドで同じものが見られます。
$ dig +short TXT it-techo.com
"v=spf1 include:_spf.mx.cloudflare.net ~all"
$ dig +short TXT _dmarc.it-techo.com
"v=DMARC1; p=none; rua=mailto:(中略)@dmarc-reports.cloudflare.net"
$ dig +short MX it-techo.com
95 route2.mx.cloudflare.net.
45 route3.mx.cloudflare.net.
11 route1.mx.cloudflare.net.
見るのは3点です。v=spf1 の行が1つだけであること。_dmarc が v=DMARC1 で始まり、p= と rua= があること。MXが、使っているメールサービス(ここではCloudflareのメール転送)の名前を指していること。DMARCは今日入れたばかりなので、上の表でいう「報告だけの段階」です。rua の宛先はDNSサービスが用意した集計用のアドレスで(@ の前の32桁の英数字は、紙面では省いています)、XMLを自分で読まずに管理画面で集計を見られます。DKIMはセレクタ名が分からないと引けないので、ここには並べていません。
セレクタ名はサービスごとに違います。分からなければ、自分が送ったメールを受信側で開き、ヘッダーの DKIM-Signature にある s= の値を見るのが早道です。DKIM-Signature の行そのものが無ければ、署名されていません。
2. 3行は何を確かめているのか
| 仕組み | 確かめる内容 | 書く場所 | 根拠 |
|---|---|---|---|
| SPF | 送ってきたサーバのIPアドレスが、ドメインの持ち主が許可したものか | ドメイン直下のTXT | RFC 7208 |
| DKIM | メールの電子署名が、持ち主が公開した鍵で検証できるか | セレクタ._domainkey.ドメイン | RFC 6376 |
| DMARC | 差出人(From)のドメインが、SPFかDKIMで通ったドメインと一致するか。失敗時の扱いと報告先 | _dmarc.ドメイン | RFC 7489 |
SPFの末尾の all に付ける記号は、-(fail)、~(softfail)、?(neutral)、+(pass)の4種類です。私は ~all で始めます。送信経路の洗い出しに漏れがあっても、即座に拒否されにくいからです。+all は「誰が送ってもよい」の意味になるので、書いてはいけません。include などDNSの問い合わせを伴う項目は、合計10回までです(RFC 7208 4.6.4節)。
DKIMについて、Googleの送信者ガイドラインは鍵長1,024ビット以上を必須、2,048ビットを推奨としています。選べるなら2,048にします。
DMARCは v=DMARC1 が先頭、次に p が必須です。
p の値 | 受信側への依頼 |
|---|---|
none | 特別な扱いを求めない(報告だけ受け取る) |
quarantine | 失敗したメールを疑わしいものとして扱う(迷惑メールフォルダなど) |
reject | 失敗したメールを拒否する |
rua は集計レポートの送り先で、省略するとレポートは届きません。adkim・aspf(一致の厳しさ)は省略時 relaxed、pct は省略時100です。小さな会社なら省略のままで構いません。
Googleのガイドラインは、個人用Gmail宛てに送るすべての送信者にSPFまたはDKIMを求め、1日5,000通以上の送信者にはSPFとDKIMの両方とDMARC、Fromのドメインとの一致まで求めています。「うちは少ししか送らないから関係ない」は通りません。私は通数に関係なく3行とも入れます。入れる手間は同じで、片方が一時的に失敗してももう片方で救われるからです。
3. 設定の順番
- このドメインの名前で送っているものを全部書き出す。 ふだんのメール、問い合わせフォームの自動返信、請求書サービス、予約システム、メール配信
- SPFを1行にまとめて登録する
- 各サービスでDKIMを有効にし、指定のTXTを登録する
- DMARCを
p=noneとrua付きで登録する - 実際にメールを送り、ヘッダーで3つとも pass になっていることを見る
quarantine、次にrejectへ上げる
よくあるのは、1を飛ばして「ふだんのメール」だけを設定する形です。その状態でDMARCを厳しくすると、請求書サービスから送った請求書だけが相手の迷惑メールに入ります。発覚するのは月末、「請求書が来ていません」と言われたときです。1の書き出しに、いちばん時間を使ってください。
4. p=none をいつ上げるか
規格に「何日たったら上げよ」という定めはありません。ここからは私の目安です。
p=noneで1か月。 月に1回しか動かない送信(月次の請求など)を1周ぶん見るためです。- レポートで自分の送信が全部通っていれば
quarantineへ。さらに1か月問題が無ければrejectへ。 - 集計レポートはXMLで届き、そのままでは読めたものではありません。読まずに放置するくらいなら、5の送信テストを全経路で済ませたうえで、1か月で
quarantineに上げるほうがましです。noneのまま何年も置いてあるドメインは珍しくありませんが、それは「なりすましを見つけても何もしないでください」と宣言し続けているのと同じです。
5. メールの置き場所で、この作業の楽さが変わる
| 方式 | 内容 | 私の評価 |
|---|---|---|
| グループウェアのメール | Google Workspace や Microsoft 365 の類。メール・予定・ファイル共有が一体 | こちらを勧めます。 DKIMの鍵の発行と有効化が管理画面で完結し、指定のレコードも公式ヘルプに明記されている |
| メール専用のホスティング | メールだけを提供するサービス | 次点。予定や文書の共有が要らず、人数あたりの費用を抑えたいとき |
| レンタルサーバー付属のメール | Webサーバーの契約に付いてくるメールボックス | 数アドレスで費用を足したくないなら可。ただし下の2点を先に確かめる |
サーバ付属のメールを勧めない理由は2つです。DKIMやDMARCへの対応と設定画面の有無がサーバごとにまちまちなこと。そして、サーバを替えるたびにメールの引っ越しと3行の入れ直しが付いてくることです。メールを分けておけば、サーバを替えてもこの3行は触らずに済みます。付属のまま使うなら、契約前に「DKIM署名に対応しているか」「自分でDNSにTXTを書けるか」を公式の仕様で確かめてください。どちらかが無いなら、そのサーバのメールは使いません。
受信を別のアドレスへ転送するだけの仕組みは、「独自ドメインから送る」ことができない場合があります。名刺に刷るアドレスから返信できないのでは意味がないので、送信の経路まで確かめます。
6. 確認表
| # | 確認すること | 方法 | 済 |
|---|---|---|---|
| 1 | 自分のドメインで送っているサービスを全部書き出した | 請求書・フォーム・予約・配信まで | □ |
| 2 | SPFのTXTが1つだけ | dig +short TXT example.com で v=spf1 が1行 | □ |
| 3 | DKIMの公開鍵が引ける | dig +short TXT セレクタ._domainkey.example.com | □ |
| 4 | DMARCが引ける | dig +short TXT _dmarc.example.com | □ |
| 5 | 実際のメールで3つとも pass | 外部のアドレスへ送り、ヘッダーの Authentication-Results で spf / dkim / dmarc を見る | □ |
| 6 | 差出人ドメインと認証ドメインが一致 | 同じヘッダーで From と、SPF・DKIMのドメインを見比べる | □ |
| 7 | 自動送信するサービスでも5を繰り返した | 請求書・フォーム等からテスト送信 | □ |
| 8 | p=none を上げる日を決めた | カレンダーに1か月後の予定を入れる | □ |
うまくいかなかったときの戻し方
3行を入れた後に「届かなくなった」と言われたら、戻すのは厳しくした順の逆です。
- DMARCの
pをnoneに戻す。quarantineやrejectに上げた直後なら、まずこれです。レコードは消しません。noneなら受信側に特別な扱いを求めないので、害はありません - SPFの末尾が
-allなら~allに緩める - 直前に書き換えたSPFの1行を、控えておいた元の値と見比べ、落とした
includeを書き足す - DKIMのTXTは触らない。DKIMは、置いてあるだけでは失敗の原因になりません。署名が付いていて検証に失敗するときだけ、サービスの管理画面で鍵とセレクタ名を見直します
戻しても即座には効きません。受信側のリゾルバが、レコードのTTL(多くは1時間)の間は前の値を覚えているからです。だから私は、p を上げる前日にDMARCのレコードのTTLを短くしておきます。ここは私の目安で、300秒にします。
SPFやDMARCの行を丸ごと消して戻すのは勧めません。 認証なしの状態に戻り、Gmailあてはかえって届きにくくなります。
業者に送る文面
DNSを制作会社やサーバ会社が管理しているなら、入れてほしい行をこちらで書いて渡します。「SPFを設定してください」とだけ頼むと、相手は include の値を知らないので止まります。【】を置き換えてください。
件名: example.com のDNSにTXTレコードを登録するお願い(メールの認証)
【会社名】【担当者名】様
お世話になっております。【自社名】の【氏名】です。
当社から送るメールが相手先で迷惑メールに分類されることがあり、
送信ドメイン認証(SPF・DKIM・DMARC)のレコードを登録したいと考えています。
example.com のDNSに、次の登録をお願いします。
1. SPF(名前: example.com / 種類: TXT)
【v=spf1 include:… ~all】
※ すでに v=spf1 で始まるTXTがある場合は、追加ではなく、この1行への置き換えをお願いします
2. DKIM(名前: 【セレクタ】._domainkey.example.com / 種類: TXT または CNAME)
【メールサービスの管理画面に表示された値】
3. DMARC(名前: _dmarc.example.com / 種類: TXT)
【v=DMARC1; p=none; rua=mailto:…】
あわせて、現在登録されているTXTレコードの一覧を、作業の前にお送りください。
作業後はこちらで dig と送信テストで確認し、結果をご連絡します。
1の ※ が肝心です。これが無いと、SPFが2行になって返ってきます。
サーバやメールの乗り換えと一緒にやるなら、3行を入れる順番は全体の段取りの中で決まります。
→ サーバを乗り換えたらメールが止まった、を防ぐ。引っ越しはこの順番で動かす
出典(取得日: 2026-09-20)
p=none を上げるまでの期間は、規格の定めではなく筆者の実務上の目安です。
- RFC 7208 Sender Policy Framework (SPF) https://www.rfc-editor.org/rfc/rfc7208.html
- RFC 6376 DomainKeys Identified Mail (DKIM) Signatures https://www.rfc-editor.org/rfc/rfc6376.html
- RFC 7489 Domain-based Message Authentication, Reporting, and Conformance (DMARC) https://www.rfc-editor.org/rfc/rfc7489.html
- Google Workspace 管理者ヘルプ「メール送信者のガイドライン」 https://support.google.com/a/answer/81126?hl=ja