
## この記事でわかること

- 自社ドメインの SPF / DKIM / DMARC を確認する **4 つの手段**（dig / nslookup / 一般的なオンラインツール / 日本語逐語解説ツール）
- それぞれの強みと向き不向き
- DKIM の確認だけはセレクタが必要、という落とし穴と対処
- 「設定はあるけど中身が読めない」状態を解消する手順

## なぜ「確認」だけでひと手間かかるのか

SPF / DKIM / DMARC はすべて DNS の TXT レコードとして公開されているので、コマンド 1 行で取れます。それなのに「確認だけ」でつまずく担当者が多いのは、次の 3 つが重なるからです。

1. **DKIM はホスト名にセレクタが必要**（`<selector>._domainkey.<domain>`）。セレクタを知らないと取れない
2. **取れても記号が読めない**（`~all` / `p=quarantine` / `k=rsa` 等）
3. **複数のレコードがあると違反**（SPF / DMARC とも 1 ドメイン 1 レコードが原則）

「コマンドで取る」と「読めるようにする」は別問題、というのが結論です。

![確認の 4 手段と向き不向き](/blog/spf-dkim-dmarc-check-how-to/four-methods.svg)

## 手段 1: dig（macOS / Linux / WSL）

ターミナルで `dig` を使う方法。素直で速いが、結果は生レコードのまま。

```bash
# SPF
dig +short TXT example.com

# DMARC
dig +short TXT _dmarc.example.com

# DKIM（セレクタが必要。例: Google Workspace なら "google"）
dig +short TXT google._domainkey.example.com
```

向くケース: 自分でコマンドを叩ける Web 担当者・SRE。
向かないケース: 「セレクタが何か分からない」「結果を解釈できない」場合。

## 手段 2: nslookup（Windows / どの OS でも）

Windows 標準コマンド。引数の書き方が dig と少し違います。

```powershell
nslookup -type=TXT example.com
nslookup -type=TXT _dmarc.example.com
nslookup -type=TXT google._domainkey.example.com
```

向くケース: 社内 PC で気軽に確認したい時。
向かないケース: 出力が冗長で「結局どの行が SPF？」と迷うことがある。

## 手段 3: 一般的なオンラインツール（mxtoolbox 等）

ブラウザにドメインを入れて結果を見るタイプ。多くは英語 UI で「pass / fail」までは出ますが、**「~all がどういう意味か」までは教えてくれない**ものが大半です。

向くケース: 海外サービスの英語ドキュメントが読める人が、PASS / FAIL の判定だけ欲しい時。
向かないケース: 日本語で意味を理解したい時。

## 手段 4: 日本語で逐語解説してくれるツール

「設定はある。でも何が書いてあるのか分からない」を解消するために、ドメイン番人では[SPF / DKIM / DMARC 設定確認・日本語解説ツール](/tools/dns-auth-explainer)を公開しています。

- ドメインを入れるだけで SPF / DKIM / DMARC を取得
- 各トークン（`~all` `include:` `p=quarantine` `k=rsa` 等）を **日本語で逐語解説**
- DKIM は主要 15 種のセレクタを自動プローブ、独自セレクタは任意指定で深掘り
- 登録不要・無料

向くケース: 外注先が入れた SPF / DMARC の妥当性を、Web 担当者自身でチェックしたい時。
向かないケース: 採点や改善優先度まで欲しいときは [/diagnose](/diagnose) のほうが向く（こちらは翻訳に特化）。

![翻訳ツールのアウトプット例](/blog/spf-dkim-dmarc-check-how-to/explainer-output.svg)

## DKIM だけは「セレクタ」を知らないと取れない問題

SPF と DMARC は `<domain>` と `_dmarc.<domain>` で一意に取れます。DKIM は `<selector>._domainkey.<domain>` という形で **セレクタごとに別レコード** なので、セレクタが分からないと取得できません。

主要サービスのデフォルトセレクタ:

| サービス | デフォルトセレクタ |
|---|---|
| Google Workspace | `google` |
| Microsoft 365 | `selector1`, `selector2` |
| SendGrid | `s1`, `s2` |
| Mailchimp | `k1`, `k2`, `k3` |
| Resend | `resend` |
| MXroute | `mxvault` |

詳しくは[DKIM セレクタは何個まで持てる？主要 5 サービスで整理](/blog/dkim-selector-explained)を参照。自社で独自セレクタを採用している場合は、送信サービスの管理画面で「DKIM」「認証」セクションを開けば確認できます。

## 目的別の使い分け早見表

| やりたいこと | 推奨手段 |
|---|---|
| サクッと存在確認だけ | dig / nslookup |
| 英語の PASS / FAIL 判定だけ欲しい | 海外オンラインツール |
| **記号の意味も含めて中身を読みたい** | [日本語逐語解説ツール](/tools/dns-auth-explainer) |
| メールが届かない原因を切り分けたい | [メール配送の切り分けツール](/tools/mail-delivery-doctor) |
| 採点・改善優先度・SSL まで含めた総合点検 | [/diagnose](/diagnose) |

## よくある質問

### 設定はあるはずなのに dig で何も出ないのですが？

ドメインが間違っている（`www` を付けてしまった等）、または BIND 系の DNS でゾーン伝搬が遅れているケースが多いです。`_dmarc.www.example.com` ではなく `_dmarc.example.com` を見るのが正しい場所です。

### 複数の SPF レコードを設定したら厳しく拒否されますか？

複数あると DNS 上 `permerror` となり、SPF 認証自体が失敗扱いになります。1 ドメイン 1 SPF が原則です。詳細は[SPF 設定ガイド](/blog/spf-setup-guide)を参照。複数レコードを含む PermError の典型パターンは[SPF が PermError になる5つの原因](/blog/spf-permerror-causes)でまとめています。

### DKIM のセレクタを忘れてしまいました。確認する方法はありますか？

過去に自社から送ったメールの `Authentication-Results` ヘッダの `header.s=` 値を見ると逆引きできます。手元にメールが残っていなければ、送信サービスの管理画面で「DKIM」「ドメイン認証」設定を確認するのが確実です。

## まとめ

- 確認手段は dig / nslookup / 一般オンラインツール / 日本語逐語解説ツールの 4 つ
- 「取れる」と「読める」は別問題。記号の意味まで欲しいときは翻訳ツールが手っ取り早い
- DKIM だけはセレクタが必要。デフォルトセレクタ一覧を使うか、`Authentication-Results` で逆引き
- 採点まで欲しい時は [/diagnose](/diagnose)、翻訳に振り切りたい時は [/tools/dns-auth-explainer](/tools/dns-auth-explainer) と使い分け
