送信ドメイン認証のDNSレコード検索方法(SPF、DKIM、DMARC、ARC) (+BIMI)

当サイトには広告を含みます。

当サイトでは、広告掲載ポリシーに沿って広告を掲載しています。
※広告でなく、単に商品やサービスを自主的に紹介しているだけという場合もあります。

"オススメ" として紹介している商品やサービスは、個人的にそう思えたものだけです。

共感、興味をもっていただけるものがあればご利用ください。

電子メールの送信元ドメインが詐称されていないかを検証する送信ドメイン認証 (Sender Domain Authentication)。

本記事は、動作確認等のために、各送信ドメイン認証のDNSレコードを検索する方法をまとめたものです。

SPF、DKIM、DMARC、ARC、BIMIといった送信ドメイン認証のまとめ記事はこちらです。

目次

サマリ

以下のTXTレコードを検索すればOKです。

  • SPFレコード
    ドメイン名
    ドメイン名はエンベロープFromドメイン
  • DKIMレコード
    セレクタ名._domainkey.ドメイン名
    ドメイン名はDKIM-Signatureヘッダのdタグの値、セレクタ名は同ヘッダのsタグの値
  • DMARCレコード
    _dmarc.ドメイン名
    ドメイン名はヘッダFromドメイン、もしくはその組織ドメイン
  • ARC用のDKIMレコード
    セレクタ名._domainkey.ドメイン名 (DKIMレコードと同様)
    ドメイン名はARC-Message-Signatureヘッダのdタグの値、セレクタ名は同ヘッダのsタグの値
  • BIMIレコード
    セレクタ名._bimi.ドメイン名
    ドメイン名はヘッダFromドメイン、セレクタ名はBIMI-Selectorヘッダの値(ヘッダが無ければ”default”)

届いたメールをもとに検索

今回、InstagramからGmailに届いたメールを例にします。

Instagramから届いたメール
Instagramから届いたメール

Instagramのロゴが表示されているのでBIMI対応済みです。

このメールのソースを表示し、確認していきます。

ARヘッダ
ARヘッダ

Authentication-Results(AR) ヘッダには、”dkim=pass”、”spf=pass”、”dmarc=pass” が記載されています。
DMARC のポリシーは “p=REJECT sp=REJECT” です。

このメールの送信元ドメインは以下の通りです。

  • ヘッダFromドメイン:mail.instagram.com
  • エンベロープFromドメイン:mail.instagram.com (Return-PathヘッダやARヘッダのspfタグより推測)

本記事では、このメールを例に、各DNSレコードを検索する例を記載します。

SFPレコード

SPFレコードを検索する場合、エンベロープFromのドメインを用いてDNS検索する必要性があります。
エンベロープFromのドメインが分からない場合、SPFレコードを検索することはできません。

届いたメールをメーラやWebMailで開く時点では、エンベロープFromドメインを正確には特定できません。100%正確な方法ではありませんが、便宜上以下のようにエンベロープFromドメインを特定しています。

今回は、Return-Path ヘッダや AR (Authentication-Results) ヘッダの spf タグより、エンベロープFromドメインは mail.instagram.com であると推測しました。spf タグについては、spf=pass の後のコメント部分 (reasonspec)に、”smtp.mailfrom=xxxx@mail.instagram.com” というエンベロープFromアドレスと思われる記載があります。

このエンベロープFromドメインをもとに SPF レコードを検索するコマンドは以下です。

  • digコマンドの場合
    dig -t TXT mail.instagram.com
  • nslookupコマンドの場合
    nslookup -q=TXT mail.instagram.com

上記問合せにより得られるレコードは以下です(2022年9月時点)。
“v=spf1 include:facebookmail.com -all”

“include”があるので、include先も検索してみます。

  • digコマンドの場合
    dig -t TXT facebookmail.com
  • nslookupコマンドの場合
    nslookup -q=TXT facebookmail.com

上記問合せにより得られるレコードのうち、SPF用のものは以下です(2022年9月時点)。
“v=spf1 ip4:66.220.144.128/25 ip4:66.220.155.0/24 ip4:66.220.157.0/25 ip4:69.63.178.128/25 ip4:69.63.181.0/24 ip4:69.63.184.0/25”
” ip4:69.171.232.0/24 ip4:69.171.244.0/23 -all”

DKIMレコード

DKIM-Signatureヘッダは以下です。セレクタ名とドメイン名を確認できます。

DKIM-Signatureヘッダ
DKIM-Signatureヘッダ

上記の内容に従い、DKIMレコードを検索するコマンドは以下です。

  • digコマンドの場合
    dig -t TXT s1024-2013-q3._domainkey.mail.instagram.com
  • nslookupコマンドの場合
    nslookup -q=TXT s1024-2013-q3._domainkey.mail.instagram.com

上記問合せにより得られるレコードは以下です(2022年9月時点)。

“k=rsa; t=s; h=sha256; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7twdVo+BW8Pv2poU5129KYmE6npHdxUU8fktUKTE9TNovCvLy5LVjYc3TQcUFjOH”
“VaZ89ZCjmpAcrA2QnTEKZ/2QWV56gn6bWdFW4SFxnQdHjguBZQykfKe5KTxy2a/OxuA0x2dHfdnYfw7RVzr4uednpKcWJy4Rl3gM6XB1zDwIDAQAB”

pタグの部分が公開鍵です。
TXTレコードの255文字の制限があるので、複数の”xxxx”に分割されています。

DMARCレコード

ヘッダFromドメインに従い、DMARCレコードを検索するコマンドは以下です。

  • digコマンドの場合
    dig -t TXT _dmarc.mail.instagram.com
  • nslookupコマンドの場合
    nslookup -q=TXT _dmarc.mail.instagram.com

上記問合せにより得られるレコードは以下です(2022年9月時点)。
“v=DMARC1; p=reject; rua=a@dmarc.facebookmail.com; ruf=fb-dmarc@datafeeds.phishlabs.com; pct=100″

p=rejectです。
DMARCレポートのうち、RUFの方は別ドメインの解析ツール?を利用しているかもしれません。

ARC用のDKIMレコード

今回のメールでは、mail.instagram.comドメインから送信される時点ではARC署名は追加されていません。
Gmailで受信した際に最初のARC署名(i=1)が追加されていますので、このARC署名に対応するDKIMレコードを検索してみます。

ARC用のDKIM(とほぼ同等の)署名が格納されるARC-Message-Signatureヘッダは以下です。セレクタ名とドメイン名を確認できます。

ARC-Message-Signatureヘッダ
ARC-Message-Signatureヘッダ

上記の内容に従い、ARC用のDKIMレコードを検索するコマンドは以下です。

  • digコマンドの場合
    dig -t TXT arc-20160816._domainkey.google.com
  • nslookupコマンドの場合
    nslookup -q=TXT arc-20160816._domainkey.google.com

上記問合せにより得られるレコードは以下です(2022年9月時点)。

“k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1Lztpxs7yUxQEsbDFhjMc9kZVZu5P/COYEUIX4B39IL4SXAbv4viIlT9E6F6iZmTh1go7+9WQLywwgwjXMJx/Dz0RgMoPeyp5NRy4l320DPYibNqVMWa5”
“iQ2WiImQC0en1O9uhLLvzaSZJ03fvGmCo9jMo0GwKzLNe14xMgn/px2L5N/3IKlKX4bqUAJTUt8L993ZlWzvgMnSFSt8B+euSKSrtAiopdy4r1yO4eN5goBASrGW0eLQc1lYouNvCrcTQpos4/GEAqiGzpqueJLmBfOO4clNvVvpPkvQs2BHw9I9LmIjaMxTNGxkGBRaP3utDiKXXqu1K+LRzl0HCNSdQIDAQAB”

BIMIレコード

BIMI-Selectorヘッダは以下です。セレクタ名を確認できます。
(BIMI-SelectorヘッダがDKIM署名に含まれていませんが)

BIMI-Selectorヘッダ
BIMI-Selectorヘッダ

上記の内容に従い、BIMIレコードを検索するコマンドは以下です。

  • digコマンドの場合
    dig -t TXT fb2021q2v1._bimi.mail.instagram.com
  • nslookupコマンドの場合
    nslookup -q=TXT fb2021q2v1._bimi.mail.instagram.com

上記問合せにより得られるレコードは以下です(2022年9月時点)。

“v=BIMI1; l=https://instagram.com/images/bimi/ig-logo.svg; a=https://instagram.com/bimi-vmc.pem;

上記のSVGやPEM(VMC)については、別の記事で触れています。

BIMIレコード(余談)

当初twitter.comから届いたメールを例にしようとレコード確認していたのですが、BIMIレコードを検索できなかったので見送りました。
twitter.comからのメールはGmail上でロゴ表示されているので、BIMI対応はしていると思います。BIMI-Selectorヘッダが無いのでデフォルトのセレクタ名(default)を用いてdefault._bimi.twitter.comで検索したところ、レコードが存在しませんでした。

Instagramからのメールの例より、Gmailは既存のBIMI-SelectorヘッダがDKIM署名対象外であってもヘッダ削除しないようなので、twitter.comからのメールにも最初からBIMI-Selectorヘッダは存在していなかったと推測されます。あるいは、Gmail側のBIMI動作として個別にtwitter.comを信頼する設定というのも考えにくいです。よく分かりませんでした。

まとめ

本記事では、動作確認等のために、各送信ドメイン認証のDNSレコードを検索する方法をまとめてみました。

送信ドメイン認証 関連記事

これらの記事は、個人的に理解を深めるため少しずつ調べてまとめたもので、何かしら不正確な記載等もあるとは思いますがご了承願います。

送信ドメイン認証全般に関する記事
個々の送信ドメイン認証に関する記事
送信ドメイン認証のTIPS

Authentication-Results ヘッダまとめ ※機会があれば作成予定…

送信ドメイン認証の動向
記事作成、サイト管理
プロフ画像 (暫定版)

happynap
(はっぴぃなっぷ)

3人家族で暮らし
ITっぽい仕事をしつつ
ポイ活、投資を趣味的に
スキマ時間に、ゆるく全力でブログ
のんびり昼寝したい

お得情報

出張先、旅行先のホテル予約はお早めに

よろしければシェアいただけると
目次