コマンドでSPF・DKIM・DMARCを確認する手順
SPF・DKIM・DMARCの設定が正しいかどうかは、ブラウザのチェックツールを使わなくてもコマンドラインだけで確認できます。ここではdigとnslookupを使った具体的な確認方法を、実際のコマンド例つきで解説します。
- SPFはドメイン直下のTXTレコード、DKIMはセレクタ._domainkey.ドメイン、DMARCは_dmarc.ドメインのTXTレコードと、それぞれ登録場所が異なる。
- dig TXT ドメイン名 +shortやnslookup -type=TXT ドメイン名で、コマンドラインからレコードの中身を直接確認できる。
- DKIMの確認にはセレクタ(送信サービスごとに異なる文字列)が必要で、送信元の管理画面やヘッダーから調べる必要がある。
- spf dkim dmarc 確認方法はコマンドとオンラインツールを併用すると、設定ミスの早期発見につながる。
コマンド確認の前提
SPF・DKIM・DMARCはいずれもDNSのTXTレコードとして公開されていますが、登録場所が異なります。SPFはドメイン直下、DMARCは_dmarcというサブドメイン、DKIMは送信サービスごとに異なるセレクタを含むサブドメインに登録されます。コマンドで確認する前に、この違いを押さえておくと迷いません。
確認にはmacOSやLinuxであれば標準でdigコマンドが使え、Windowsの場合はnslookupを使うのが手軽です。
SPFレコードの確認コマンド
SPFはドメイン名そのものに対するTXTレコードを照会します。
- dig TXT ドメイン名 +short(macOS/Linux)
- nslookup -type=TXT ドメイン名(Windows)
- 結果が複数のTXTレコードにまたがっている場合、SPFは1つのドメインに1つしか有効にならない点に注意
dig TXT sakura-shouji.co.jp +short を実行すると、v=spf1 include:_spf.google.com ~all のような文字列が返ってきます。v=spf1で始まっていること、自社が使っている送信サービスがincludeに含まれていることを確認します。
DKIMレコードの確認コマンド
DKIMはセレクタと呼ばれる識別文字列を含むサブドメインに登録されているため、事前にセレクタを調べる必要があります。セレクタは送信サービスの管理画面や、実際に送信されたメールのヘッダー内のDKIM-Signatureフィールド(s=の後ろ)で確認できます。
セレクタが「google」であれば、dig TXT google._domainkey.sakura-shouji.co.jp +short を実行します。v=DKIM1; k=rsa; p=... という公開鍵情報が返ってくれば正しく設定されています。
DMARCレコードの確認コマンド
DMARCは_dmarcサブドメインに登録されているため、以下のコマンドで確認します。
dig TXT _dmarc.sakura-shouji.co.jp +short を実行し、v=DMARC1; p=quarantine; rua=mailto:... のような文字列が返れば設定済みです。何も返らない場合はDMARCレコードが未設定です。
確認結果の読み方と注意点
コマンドの結果を読む際は、単に文字列が返ってきたかどうかだけでなく、内容が想定通りかも確認します。
- SPFのall修飾子が~all(ソフトフェイル)かーall(ハードフェイル)かで、認証失敗時の扱いが変わる
- DKIMのp=の値が空の場合、鍵が無効化されている(送信サービス側で意図的に無効にしていることもある)
- DMARCのp=がまだnoneのままなら、監視段階であることを意味する
- コマンド結果がキャッシュされていることがあるため、変更直後は反映まで時間を置いて再確認する
割合はイメージであり、実際の設定数は利用する送信サービスの数により変わります。
コマンド確認とオンラインツールの使い分け
コマンドでの確認は反映状況をその場で正確に把握できる利点がありますが、セレクタの調査などやや手間がかかる作業もあります。日常的な確認はオンラインのチェッカーツールで済ませ、詳細な調査や自動化されたスクリプトによる定期チェックにはコマンドを使う、という使い分けが実務では効率的です。
よくある質問
dig TXTで何も返ってこない場合はどうすればいいですか。
レコードが未設定か、ドメイン名の入力ミスの可能性があります。まずドメイン名のスペルを確認し、それでも返らなければDNS管理画面でレコードが登録されているか確認してください。
DKIMのセレクタはどこで調べられますか。
利用している送信サービスの管理画面か、実際に送られたメールのヘッダーにあるDKIM-Signatureフィールドのs=の値で確認できます。
nslookupとdigはどちらを使うべきですか。
macOS/LinuxであればdigのほうがTXTレコードを扱いやすく、+shortオプションで結果を簡潔に表示できます。Windows環境ではnslookupが標準で使えて手軽です。
コマンドの結果が古い設定のまま返ってくるのはなぜですか。
DNSサーバーやリゾルバー側にキャッシュが残っていることが原因です。TTLで指定した時間が経過するまで、更新前の内容が返ることがあります。