SPF・DMARC チェッカー
ドメインを入力すると、メール認証に関わる 4 つのレコード(SPF・DKIM・DMARC・MX)をまとめて確認できます。SPF は include と redirect を静的に展開し、RFC 7208 の 10 回上限を超えうる送信経路を見つけるための保守的な上限値を示します。入力名の DMARC レコードはポリシー・アライメント・レポート認可までタグ単位で読み、DKIM は鍵長まで確認、MTA-STS・TLS-RPT・BIMI も同時に確認します。無料・登録不要です。
- SPF の include チェーンを静的に展開し、10 回目を超える項目を番号付きで表示
- DMARC のポリシー・サブドメインポリシー・適用率・2 種類のアライメントをタグごとに解説
- 外部宛て DMARC レポートについて、対応する認可レコードを確認
- 主要な selector で DKIM 鍵を探索し、レコードから RSA 鍵長を復元
- MX の宛先を 1 台ずつ名前解決し、MTA-STS・TLS-RPT・BIMI も同じ実行で確認
ドメイン、メールアドレス、URL のいずれでも構いません。ドメイン部分だけを使います。
常に探索する selector に追加されます。現在の件数: 32
概要
メールが信頼されるかを決める 4 つのレコードは、それぞれ静かに壊れます。以下の各チェックは「何があるか」ではなく「どこがおかしいか」を示します。
- 01
10 回のルックアップ枠を正しく数える
include と redirect を末端まで追跡し、ルックアップを消費する項目を評価順に番号付けするため、10 回目を超えるのがどれか一目で分かります。上限超過のレコードは、展開するまで見た目に異常がありません。
- 02
DMARC をタグ単位で読む
ポリシー、サブドメインポリシー、適用率、2 種類のアライメントを、記号のままにせず意味まで示します。
- 03
レポート認可を実際に検証
集約レポートを他ドメインへ送るには、そのドメイン側の同意が必要です。認可レコードを実際に照会します——欠落時の見え方が「レポートが届かない」と区別できないためです。
- 04
DKIM 鍵は「見つける」だけでなく測る
レコードから RSA モジュラス長を復元するため、動作はするが現在の推奨を下回る 1024 ビット鍵も、失効済みやテストモードの selector と並べて指摘します。
- 05
MX の宛先を最後まで追う
各ホストを名前解決し、典型的な不備——アドレスレコードのない宛先、ホスト名であるべき箇所の CNAME、裸の IP——を個別に指摘します。
- 06
新しめのレコードも同じ実行で
MTA-STS・TLS-RPT・BIMI も基本レコードと同時に確認するため、1 回の実行で全体像が揃い、別のページを 3 つ回る必要がありません。
使い方
ドメインを 1 つ入力すれば、レコードごとに判定が出ます。まず読むべきは SPF のカウンターです。
- 01
ドメインを入力し(メールアドレスや URL でも可、ドメイン部分のみ使用)、診断を押します。
- 02
まず SPF のカウンターを確認します。10 未満なら余裕があり、ちょうど 10 なら追加の余地はありません。10 を超えた場合は、少なくとも 1 つの到達可能な送信経路を実際の送信元 IP で確認してください。
- 03
展開したチェーンを開き、どの include が何回分を占めているか、上限を超えるのがどの項目かを確認します。
- 04
DMARC のポリシーを確認し、レポートが他ドメイン宛てなら、その認可が済んでいるかも見ます。
- 05
DKIM 鍵が見つからない場合は、DKIM-Signature ヘッダーの s= タグから selector を取り、selector 欄に追加します。
詳細
メール認証が壊れる原因の多くは、レコードを眺めるだけでは見えません。以下はそうしたケースを想定した設計です。
- SPF のルックアップ数は、文法上たどれる分岐全体から求めた保守的な上限です。個々のメールは先に一致した時点で止まります
- exists:%{i} のようなマクロは 1 回として数えたうえで明示します。黙って無視することも、誤って展開することもありません
- SPF レコードのないドメインを指す include は「一致しなかった」ではなく、恒久的エラーとして報告します
- all の後ろの項目や all に隠された redirect は、黙って計上せず「評価されない」と明示します
- ループは現在のチェーン上でのみ判定するため、同じ include に 2 つの分岐から到達すれば 2 回として数えます——受信側の数え方と同じです
- DKIM の結果には試した selector 数を併記します。見つからないことは手法の限界であって、そのドメインについての結論ではないためです
活用シーン
メール認証が真剣に見られるのは、たいてい 2 回だけです。設定しているときと、何かがバウンスし始めた翌朝です。
-
SPF の恒久的エラーを切り分ける
何年も通っていたレコードが、送信サービスを 1 つ足した途端に失敗し始める。カウンターが超過幅と、押し出した include を示します。
-
送信サービス追加前の余地を確認
9 回や 10 回に達したレコードにはもう余裕がありません。新しい include が既存分を静かに壊す前に把握できます。
-
DMARC レポートが届かない理由を突き止める
集約レポートを分析ベンダーへ送るには、ベンダー側ドメインの認可レコードが要ります。これがないとレポートは破棄され、その沈黙は「送られていない」ようにしか見えません。
-
DKIM 鍵のローテーションを確認
selector を切り替えた後、新しい方が公開されているかと鍵長を確認し、2048 のつもりが 1024 ビットになる事故を防ぎます。
-
p=none から強制ポリシーへ進む
quarantine や reject へ上げる前に、現在のポリシー・サブドメインポリシー・適用率を一箇所で確認できます。
-
引き継いだドメインの棚卸し
1 回の実行で全体像が分かります。送信するはずのないドメインが -all と null MX で正しく閉じられているかも含めて確認できます。
関連情報
これらの判定の元になった生のレコードを見たい場合や、ルートサーバーから委任を辿りたい場合は DNS 検索をご利用ください。メールサーバーも証明書を提示します。submission ポートや IMAPS ポートの証明書を確認するなら SSL 証明書チェッカーがあります。レポートに現れた送信元アドレスがどのネットワークのものか調べたいときは IP アドレス検索で確認できます。
使い方のヒント
メールドメインを失効へ流されないよう、正しく認証され続けるための習慣です。
- SPF チェーンは 10 回に対して数回の余裕を残しておきます。後から送信サービスを足した当日にレコードが壊れる事態を避けられます。
- 事業者が安定したアドレス範囲を公開しているなら、include より ip4・ip6 を選びます。枠を消費しません。
- 一覧が揃った確信が持てたら -all へ寄せます。~all はそこへ至る慎重な段階であり、?all は何も主張していません。
- DMARC の集約レポート宛先は初日から設定し、自分の管理外ドメインを指す場合は認可レコードの有無を確認します。
- DKIM selector は計画的にローテーションし、2048 ビット鍵を公開します。旧 selector はレコードを削除せず、p タグを空にして廃止します。
- 送受信を一切しないドメイン(防衛目的で保有しているものを含む)には、null MX と -all の SPF レコードを公開します。
制限事項
ここでの情報源はすべて公開 DNS です。その前提が、結果に言えることの範囲を決めています。
- DKIM selector は DNS から列挙できません。よく使われる名前だけを探索するため、ランダムな selector を使うドメインは DKIM が正常でも「見つからない」と表示されます。
- SMTP 接続は行いません。ブラウザーからポート 25 には到達できないため、MX セクションが示すのは設定であって、サーバーが応答するかどうかではありません。
- SPF のマクロは展開できません。送信元 IP ごとに解決が変わるため、1 回として数えたうえで未展開のままにします。
- ルックアップ数は、文法上たどれる経路から求めた保守的な上限です。個々のメールは最初に一致した時点で止まるため、10 回超過でもすべての送信元が失敗するとは限りません。
- MTA-STS は半分しか見えません。TXT レコードは読めますが、ポリシーファイルはブラウザーがクロスオリジンで取得できない HTTPS 上にあります。
- DMARC は入力された名前をそのまま照会します。受信側はサブドメインにレコードがなければ組織ドメインへフォールバックしますが、その再現には公開接尾辞リストが必要です。
- 応答は DevKitLab のサービス経由でパブリックリゾルバーから取得するため、直前に公開したレコードはまだキャッシュされている場合があります。
よくある質問
SPF のルックアップ上限、DMARC ポリシー、DKIM が見つからない理由、そしてこの診断で見えない範囲についてのよくある質問です。
ドメインの SPF・DKIM・DMARC レコードはどうやって確認しますか?
ドメインを入力して診断を押してください。SPF レコードを読み取って include と redirect をすべて展開し、_dmarc.ドメイン の DMARC レコードを読み、よく使われる DKIM selector を探索し、MX ホストを名前解決します。レコードごとに判定が出て、MTA-STS・TLS-RPT・BIMI も同じ実行で確認します。
SPF の「DNS ルックアップが多すぎる」とはどういう意味ですか?
RFC 7208 は評価中に DNS 問い合わせを伴う項目を最大 10 個までと定めています(include・a・mx・ptr・exists と redirect 修飾子)。include は再帰的に数えられるため、事業者をいくつか使うだけで合計が静かに 10 を超えます。評価は最初に一致したメカニズムで止まるので、この合計は 1 通ごとの判定ではなく最悪値です。10 回目より先に到達する送信経路は恒久的エラーとなり DMARC 上は SPF 失敗として扱われますが、より早く一致する送信元はそのまま通ります。超過したレコードが一見まったく正常に見えるのに一部の送信元だけで失敗するのは、このためです。
10 回の上限を超えた SPF レコードはどう直しますか?
まず、もう使っていない事業者の include を削除します。たいていはこれで足ります。事業者が安定したアドレス範囲を公開しているなら、include を ip4・ip6 メカニズムに置き換えます。これらは枠を消費しません。一部のメールを独自の SPF レコードを持つサブドメインへ移せば、枠を 2 つに分けられます。include をアドレスに展開(フラット化)する方法もありますが、事業者が予告なく範囲を変えるため保守が必要です。
-all と ~all の違いは何ですか?
-all はハードフェイルで、一覧にないサーバーは未認可とみなされ、受信側は拒否できます。~all はソフトフェイルで、未認可ではあるものの配送はしてマークを付けます。取りこぼしの送信元を洗い出している段階では ~all が妥当で、最終的に目指すのは -all です。?all は中立で何も主張しないため、これで終わるレコードはレコードがないのとほとんど変わりません。
なぜ DKIM レコードが見つからないのですか?
DNS にはドメインが公開している selector を一覧する手段がないからです。DKIM 鍵は selector._domainkey.ドメイン に置かれるため、selector 名が分からなければ照会先が決まりません。本ツールは主要事業者が使う名前を探索しますが、独自のもの(Amazon SES が発行するランダムな selector を含む)は指定が必要です。そのドメインから届いたメールの DKIM-Signature ヘッダーにある s= タグから取得し、selector 欄に追加してください。
DMARC ポリシーは何を選ぶべきですか。p=none は何をしますか?
p=none は監視のみで、受信側は何もせずレポートだけを送ります。始点としては正しいものの何も保護しないため、目的地ではなく通過点です。p=quarantine は失敗したメールを疑わしいものとして扱わせ、通常は迷惑メール扱いになります。p=reject は拒否します。一般的な流れは、レポートが安定するまで none、その後 quarantine、最後に reject です。
DMARC レポートが届かないのはなぜですか?
もっとも多い原因は認可レコードの欠落です。rua の宛先が対象ドメインと別のドメイン(監視ベンダーなど)にある場合、その側が 自分のドメイン._report._dmarc.相手のドメイン にレコードを公開して受け入れを表明する必要があります。これがないと、仕様に沿ったレポート送信側は何も告げずにレポートを破棄するため、「誰も送っていない」状態と区別がつきません。本ツールは外部宛先ごとにこのレコードを確認します。
メールサーバーが実際に到達可能かどうかも確認できますか?
いいえ。ウェブページから SMTP 接続を開くことはできず、ブラウザーからポート 25 には到達できません。そのため MX セクションは設定のみを確認します。レコードの存在と優先度を読み、各宛先を名前解決し、典型的な不備(アドレスレコードのない宛先、ホスト名であるべき箇所の CNAME、裸の IP アドレス)を指摘します。相手側のサーバーが応答するかどうかは、SMTP を話せるツールが必要です。
SPF は通っているのに、なぜメールが迷惑メールに入るのですか?
SPF が通ることと DMARC が通ることは別です。DMARC はアライメントも要求します。SPF に通ったドメインが、受信者に見える From アドレスと一致していなければなりません。事業者経由で送ると、SPF は事業者自身のドメインで通る一方 From ヘッダーは自社ドメイン、という形になりアライメントが不成立になりがちです。自社ドメインで DKIM 署名すれば解決します。DKIM のアライメントは独立に判定されるためです。レピュテーションや本文、リスト品質は認証の外側の話です。
MTA-STS・TLS-RPT・BIMI とは何ですか?
MTA-STS は、自ドメイン宛の配送で TLS を必須とするよう送信サーバーに指示し、日和見的 TLS が残すダウングレード攻撃の余地を塞ぎます。TLS-RPT はそれが失敗したときの報告を求めるものです。BIMI は表示に対応した受信側向けにロゴを公開する仕組みで、DMARC が強制ポリシーであることが前提です。3 つとも任意で、公開していなくても何ら問題ありません。
サブドメインも確認できますか?
できます。SPF と DKIM は入力された名前をそのまま照会するため、メールを送るサブドメインは確認する価値があります。DMARC は異なり、サブドメインにレコードがなければ受信側は組織ドメインのレコードへフォールバックし、その sp タグを適用します。本ツールは入力された名前だけを読むため、サブドメインで DMARC が空という結果は、実際には親ドメインのポリシーが効いていることを意味する場合が多いです。
DNS ルックアップツールとは違うのですか?
答える問いが違います。DNS ルックアップツールはレコードそのものを見せるもので、任意のタイプ・任意のリゾルバーに対応し、委任の追跡もできます。こちらは特定のレコード群を評価します。SPF は 1 行を表示するのではなくチェーンを展開して上限に照らし、DMARC と DKIM はそれぞれの規則に沿って読み解きます。何が公開されているかを見たいなら前者、正しいかどうかを知りたいなら後者です。
関連ツール
判定の元になったレコードを見る、メール用ポートの証明書を確認する、レポートに現れたアドレスを辿る。