TXTレコード検索
ドメインやホスト名のTXTレコードをすべて表示。SPF、DMARC、DKIM、BIMI、確認用トークンを判別してチェックします。無料・登録不要。
TXTレコード確認とは
このTXTレコード検索は、1つのホスト名について公開DNSを照会し、そこに公開されたTXT文字列をすべて返して、読み取るプロトコルやサービスごとにラベルを付けます。メール認証はこれらの文字列で動いています。SPFは送信ドメインのTXTレコード、DKIM鍵はセレクタの下のTXTレコード、DMARCは_dmarcのTXTレコードで、BIMI、MTA-STS、TLS-RPTにはそれぞれ専用のホスト名があります。Google、Microsoft、Appleをはじめ多数のサービスが公開を求める確認用文字列も同じです。通常の検索は文字列を表示するだけですが、このツールは各文字列をどのプロトコルが読むか、そのプロトコルが実際に照会するホストにあるか、2つが競合していないかも示します。
結果の見方
| 結果 | 意味 | 対処法 |
|---|---|---|
| SPF | v=spf1で始まる文字列。このドメインとしてメールを送れるホストの一覧と、それ以外を受信側がどう扱うか。 | ~allか-allで終わり、利用する全送信サービスが含まれるか確かめます。SPFチェックはDNSルックアップの数を上限10回と照合します。 |
| DMARC | v=DMARC1の文字列。_dmarc.yourdomain.co.jpでのみ意味があり、他の場所では無視されます。 | p=タグを読みます。noneは報告のみで、quarantineとrejectが実際にドメインを守ります。 |
| DKIM公開鍵 | selector._domainkey.yourdomain.co.jpにあるv=DKIM1かp=の文字列。p=が空なら鍵は失効しています。 | DKIMチェックで鍵を検証します。セレクタが不明なら、主なセレクタも試します。 |
| BIMI、MTA-STS、TLS-RPT | それぞれdefault._bimi、_mta-sts、_smtp._tlsにあるポリシーのレコード。 | どれも専用のチェックがあり、ロゴファイル、HTTPSのポリシー、レポートの送付先など、DNSの文字列だけでは検証できない部分を確かめます。 |
| 確認用トークン | 外部サービスの所有確認用の文字列。接頭辞が既知なら、ツールがサービス名を示します。 | 対応は不要です。使っていないサービスのトークンがあれば別ですが、削除しても確認済みのものは壊れません。 |
| SPFかDMARCが2つある | 1つの名前にv=spf1が複数、または_dmarcにv=DMARC1が複数ある状態です。受信側は選択ではなくエラーとして扱います。 | 1つのレコードにまとめます。それまでSPFはpermerrorを返し、DMARCはないものとして扱われます。 |
| TXTなし | 名前は解決できるがテキストレコードがない、またはまったく解決できません。 | 綴りを確認します。メールを送るルートドメインならSPFを公開し、送らないサブドメインならこれが普通です。 |
各メールレコードの実際の置き場所
TXT検索で最も多い誤読は、ルートドメインで実行してDMARCがないと結論することです。受信側はそこを探さないので、そこにはありません。各プロトコルは特定のホスト名を照会し、検索では指定した名前しか表示されません。
- SPF:
yourdomain.com。エンベロープ送信者のドメイン。 - DMARC:
_dmarc.yourdomain.com - DKIM:
selector._domainkey.yourdomain.com。署名鍵ごとに1つ。 - BIMI:
default._bimi.yourdomain.com - MTA-STS:
_mta-sts.yourdomain.com、TLS-RPT:_smtp._tls.yourdomain.com。
どの結果にも同じドメインの他のホストをクリック1つで照会するリンクがあるため、ホスト名を5回入力しなくても、5回のクリックで全体がわかります。
この検索で証明できること
この検索で証明できるのは、入力した名前について公開DNSが返す内容と、文字列自体に見える構造上の誤りです。2つ目のSPFレコード、誤ったホストに公開されたDMARCレコード、p=タグが空のDKIM鍵、+allで終わるSPFなどです。実際のメールに対するレコードの評価はしません。SPFレコードの形式が完璧でも、請求書を送るサービスが漏れていることがあり、DNSにDKIM鍵があってもサーバーがその鍵で署名している証明にはなりません。公開を確認できたら、SPFチェック、DKIMチェック、DMARCチェックでそれぞれのレコードをタグごとに検証できます。
レコードを読むことから、正しく保つことへ
検索は1つのホスト名のその時点の記録です。メールが信頼されるかを決めるレコードは変わっていきます。部署が新しい送信ツールを導入してSPFが対応しなくなり、送信サービスがDKIMセレクタをローテーションし、誰もレポートを読まないままDMARCポリシーが1年間p=noneのまま、ということが起きます。PalisadeはDMARCの集計レポートを優先順位付きのワークフローに変えます。担当者はドメインとして送信する全送信元を特定し、それぞれに必要なレコードを把握して、推測ではなく根拠をもってドメインのポリシーを強化できます。
MSP向けにはマルチテナントで設計。全顧客ドメインのSPF、DKIM、DMARCレコードのチェック、修正、ポリシー強化を1つの管理画面で行えます。顧客ドメイン単位の料金は管理数が増えるほど単価が下がります。
関連するチェックと用語
メール認証ナレッジベース
TXTレコード確認とは
このTXTレコード検索は、1つのホスト名について公開DNSを照会し、そこに公開されたTXT文字列をすべて返して、読み取るプロトコルやサービスごとにラベルを付けます。TXTレコードには、SPFポリシー、DKIM公開鍵、DMARCポリシー、BIMIの参照先、Google WorkspaceやMicrosoft 365などのサービスがドメインの管理権の証明に使う確認用トークンが入ります。このツールはその照会を実行し、各文字列をどのシステムが読むかでラベル付けします。
ドメインを検索してもDMARCレコードが出ないのはなぜ?
DMARCはドメイン自体には公開されないからです。受信側はホスト名_dmarc.yourdomain.co.jpから読み取るため、yourdomain.co.jpの検索では返りません。ここで_dmarc.yourdomain.co.jpを入力するか、結果の下の関連ホストのリンクを使ってください。DKIMも同様にselector._domainkey.yourdomain.co.jpに、BIMIはdefault._bimi.yourdomain.co.jpにあります。
digやnslookupでTXTレコードを確認するには?
macOSやLinuxではdig TXT example.comを実行し、値だけを表示するには+shortを付けます。Windowsではnslookup -type=TXT example.com、PowerShellならResolve-DnsName -Name example.com -Type TXTを実行します。example.comは、_dmarc.example.comのように必要な正確なホスト名に置き換えてください。出力はこのツールが表示するのと同じ生の文字列で、分類はありません。リゾルバーの指定やPowerShellの書き方を含むコマンドの詳細は、下のdigとnslookupのガイドにあります。
TXTレコードはいくつ置ける?
DNS自体には1つの名前に置けるTXTレコードの数に上限はありませんが、それを使うプロトコルにはあります。SPFはv=spf1で始まるレコードを1つだけ(RFC 7208)、DMARCは_dmarcにv=DMARC1のレコードを1つだけ(RFC 7489を置き換えたRFC 9989)認めます。SPFレコードが2つあるとpermerrorになり、DMARCはそれをSPF失敗と数えます。DMARCレコードが2つあると受信側は照会を破棄し、ドメインをポリシーなしとして扱います。確認用トークンにはそうした上限がなく、利用の多いドメインでは10個以上あることもよくあります。
TXTが複数の引用符付き文字列に分かれる理由は?
TXTの1文字列は、RFC 1035で255オクテットが上限です。それより長いものは1つのレコード内の複数の文字列として公開する必要があり、リゾルバーや受信側がつなぎ直します。長いSPFレコードや2048ビットのDKIM鍵ではよく必要になります。多くのDNSプロバイダーは長い値を自動で分割します。このツールは各レコードがいくつの文字列で公開されたかを表示するため、正しく分割されたレコードと途中で切れたレコードを区別できます。
この検索はどのDNSリゾルバーを使いますか?
照会はGoogleの公開リゾルバー8.8.8.8を通し、予備にCloudflareの1.1.1.1を使います。そのため、社内のリゾルバーがキャッシュした内容ではなく、独立した第三者が見る内容に近いものがわかります。また、直前に行った変更は、それらのリゾルバーでレコードのTTLが切れるまで表示されないことがあります。
TXTレコードにある多数の確認用トークンは何?
google-site-verification=...、MS=ms...、apple-domain-verification=...のような文字列は、所有確認用のトークンです。サービスが公開を求め、それを読み取ってドメインの管理権を確認します。残しても害はなく、このツールは一般的なものについてサービス名を示します。過去にこのドメインにつないだサービスの、目立たない一覧にもなります。
TXT検索で、メールが認証されているかわかりますか?
わかるのは何が公開されているかで、必要ではあっても十分ではありません。完璧なSPFレコードでも、記載されていないサーバーから送ったメールには役立たず、DNSにDKIM鍵があってもメールサーバーがその鍵で署名している証明にはなりません。ここでの指摘はレコード自体の構造上の問題です。実際のメールがパスするかはDMARCの集計レポートで決まり、Palisadeはそれを読み取ります。
TXTレコードが出ないのはなぜ?
ホスト名の綴りが誤っている、ドメインが未登録、ネームサーバーが応答しない、または本当に何も公開していないかのいずれかです。TXTレコードのないルートドメインにはSPFがなく、メールを送るなら問題です。サブドメインになければ普通ですが、そのサブドメイン名義でメールを送るなら別です。まず綴りを確認してください。_dmarcのアンダースコア抜けが最も多い原因です。
DMARC、SPF、DKIMのタグと仕組みを1か所でまとめて解説します。
DMARC
- vバージョン
- バージョンタグはDMARCレコードに必須で、値は「DMARC1」に限られます。値が正しくない場合やタグがない場合、DMARCレコードは無効とみなされ、無視されます。
- pポリシー
- DMARCポリシータグは、DMARCに失敗したメールについて3つの値を取ります。noneは隔離・拒否を求めず、quarantineは不審なメールとしての扱いを、rejectは受信拒否を求めます。最終的な処理は受信側が決め、p=noneでも別の仕組みで振り分けや拒否をする場合があります。集計レポートは、ruaタグで別途要求します。
- rua集計レポートの送信先
- 集計レポートの送信先を「mailto:」形式のURIで指定します。受信側のメールボックスプロバイダーがこの宛先に集計レポートを送ります。必須ではありませんが、省略するとレポートは届きません。
- ruf失敗レポートの送信先
- 失敗(フォレンジック)レポートの送信先を「mailto:」形式のURIで指定します。失敗レポートを送る受信側プロバイダーはここへ届けますが、送らない事業者も多くあります。このタグがないと失敗レポートは届きません。
- spspポリシー
- サブドメインのポリシーは、特に指定がない限り、前述のメインドメインのポリシータグ(p=)を継承します。指定できる値はドメインのポリシーと同じく「none」「quarantine」「reject」です。ただし、現在の運用ではあまり使われていません。
- adkimDKIMアライメント
- DKIM署名のアライメント、つまりDKIMのドメインとヘッダーFromの送信元ドメインとの一致を指定するタグです。値は「r」(relaxed)と「s」(strict)です。既定の「r」はドメインの部分一致を許容し、「s」はドメインの完全一致を求めます。
- aspfSPFアライメント
- SPFアライメント、つまりSPFのドメイン(送信元)とヘッダーFromのドメインとの整合性を指定するタグです。値は「r」(relaxed)と「s」(strict)の2つです。既定は「r」で、ドメインの部分一致を許容します。一方「s」では、ドメインの完全一致が必要です。
- fo失敗レポートの条件
- 失敗レポートのオプションは「0」「1」「d」「s」です。既定の「0」は、SPFとDKIMのアライメントがどちらもパスしない場合にのみ失敗レポートを生成します。「1」は、SPFかDKIMのどちらかがパス以外の結果になった場合に使います。「d」はDKIMの検証失敗、「s」はSPF関連の問題についてレポートを生成します。失敗レポートを実際に受け取るには、「ruf」タグの指定が必要です。
- rf失敗レポートの形式
- 失敗レポートの形式は「afrf」と「iodef」の2つから選べます。
- pct適用割合(旧仕様)
- 旧来の適用割合タグは、DMARCに失敗したメールの一部にだけquarantineやrejectを適用するよう受信側に求めるものでした。受信側の実装がばらついたため、RFC 9989でpctは廃止されました。新しいレコードでは省略し、集計レポート、ポリシー全体の変更、送信量の少ないサブドメインで段階的に移行します。
- riレポート間隔
- レポート間隔は、XMLレポートを受け取る頻度を秒単位で指定します。標準値は86400秒で、1日1回のレポートにあたります。ただし、指定した間隔にかかわらず、インターネットサービスプロバイダー(ISP)は通常、独自のスケジュールでレポートを送ります。多くの場合、それも1日1回です。
SPF
- v
- バージョンタグの値は「spf1」のみです。誤りや欠落があると、SPFレコードは無視されます。
- ip4
- そのドメインでメール送信を許可するIPv4アドレスを指定します。
- ip6
- そのドメインの名義でメール送信を許可するIPv6アドレスを指定します。
- a
- ドメインのIPアドレス(Aレコード)で送信元を検証します。指定がなければ現在のドメインが対象です。
- mx
- メールサーバーのMXレコードで送信元を検証します。指定がなければ現在のドメインが対象です。
- ptr
- 接続元IPのホスト名をPTRで照合します。DNSルックアップが多すぎるため、RFC 7208では非推奨です。
- exists
- 指定したドメインにAレコードが存在するかを確認します。
- include
- 正確なSPFレコードに欠かせないタグです。指定したドメインやサブドメインを、正規の送信元として受信側に示します。
- all
- SPFレコードの末尾に置くメカニズムです。限定子(~、+、-、?)で、記載のない送信元からのメールの扱いを受信側に示します。RFC 7208では必須ではなく、ない場合の結果はneutralです。
DKIM
- v
- 任意のタグです。指定する場合は値を「DKIM1」とし、レコードの先頭に置きます。
- p
- 公開鍵のタグです。DKIMの設定時に生成される文字列で、空のままでは有効になりません。
- t
- フラグをコロン区切りで列挙するタグです。定義済みのフラグは「y」と「s」で、未定義のフラグは無視されます。
- s
- レコードが対象とするサービスの種類を示すタグです。指定がない種類や不明な種類は、受信サーバーが無視します。
- h
- 許可するハッシュアルゴリズムを指定するタグで、既定ではすべて許可します。一覧は送信側が決め、受信側は不明なアルゴリズムを無視します。
- n
- 管理者向けの任意のメモ欄です。必要なときだけ使うことを推奨します。