小さな事業のIT手帖

技術メモ担当者・業者向けの記事です。社長向けの入口は トップの困りごと です。

トラブル対応

独自ドメインのメールが迷惑メールに入る。SPF・DKIM・DMARCはこの3行を入れる

公開 更新 読了11分

中身の図の縮小版。色が付いているのは: 住所録(DNS・ネームサーバー)、郵便受け(メール)契約の名義とログイン情報ドメインDNSサイトメールアカウントファイルバックアップ電源・機器回線端末ソフトホームページとメール・パソコンの中身の図の、ここの話です住所録(DNS・ネームサーバー)/郵便受け(メール)中身の図で位置を見る →

見積もりを送ったのに返事が無い。催促したら「迷惑メールに入っていました」と言われた。独自ドメインのメールでこれが起きているなら、まず疑うのは文面ではなく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. 1. まず、いまの状態を見る(3分)
  2. 2. 3行は何を確かめているのか
  3. 3. 設定の順番
  4. 4. p=none をいつ上げるか
  5. 5. メールの置き場所で、この作業の楽さが変わる
  6. 6. 確認表
  7. うまくいかなかったときの戻し方
  8. 業者に送る文面
  9. 出典(取得日: 2026-09-20)

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アドレスが、ドメインの持ち主が許可したものかドメイン直下のTXTRFC 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. 設定の順番

  1. このドメインの名前で送っているものを全部書き出す。 ふだんのメール、問い合わせフォームの自動返信、請求書サービス、予約システム、メール配信
  2. SPFを1行にまとめて登録する
  3. 各サービスでDKIMを有効にし、指定のTXTを登録する
  4. DMARCを p=none と rua 付きで登録する
  5. 実際にメールを送り、ヘッダーで3つとも pass になっていることを見る
  6. 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自分のドメインで送っているサービスを全部書き出した請求書・フォーム・予約・配信まで□
2SPFのTXTが1つだけdig +short TXT example.com で v=spf1 が1行□
3DKIMの公開鍵が引けるdig +short TXT セレクタ._domainkey.example.com□
4DMARCが引けるdig +short TXT _dmarc.example.com□
5実際のメールで3つとも pass外部のアドレスへ送り、ヘッダーの Authentication-Results で spf / dkim / dmarc を見る□
6差出人ドメインと認証ドメインが一致同じヘッダーで From と、SPF・DKIMのドメインを見比べる□
7自動送信するサービスでも5を繰り返した請求書・フォーム等からテスト送信□
8p=none を上げる日を決めたカレンダーに1か月後の予定を入れる□

うまくいかなかったときの戻し方

3行を入れた後に「届かなくなった」と言われたら、戻すのは厳しくした順の逆です。

  1. DMARCの p を none に戻す。 quarantine や reject に上げた直後なら、まずこれです。レコードは消しません。none なら受信側に特別な扱いを求めないので、害はありません
  2. SPFの末尾が -all なら ~all に緩める
  3. 直前に書き換えたSPFの1行を、控えておいた元の値と見比べ、落とした include を書き足す
  4. 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 を上げるまでの期間は、規格の定めではなく筆者の実務上の目安です。

この記事は特定の製品の使用レビューではありません。公式仕様と公的情報をもとに整理しています。 ・仕様の取得日

次にやること