メニュー 閉じる

サブドメイン名におけるDMARC設定について

はじめに

最近徐々に普及し始めたDMARCですが、まだまだ日本語の情報が少ないのも事実です。
今回は、サブドメイン名におけるDMARCの設定について検証してみます。

DMARCで設定したポリシーはサブドメイン名にも適用されます。
ただし、設定したドメイン名とそのサブドメイン名でポリシーを分けることは可能です。
ポリシーの設定はp=で指定しますが、サブドメイン名のポリシーはsp=で指定します。

それでは、サブドメイン名毎にポリシーを分けて設定したい場合は、どうすれば良いでしょうか。
おそらくサブドメイン名に対してそれぞれDMARCを設定すれば良さそうですが、その辺りが明記された情報を見つけきれなかったため、今回はそれを検証してみます。

検証方法

検証では以下の様なテストを行うことにします。

  1. DMARCレコードをfilewo.netに設定します。
  2. filewo.netのDMARCレコードや、サブドメイン名のDMARCレコードを少しずつ変えて、それぞれのドメイン名からメールを送信します。
  3. 受信者側でDMARCの検証結果を確認し、どのような結果となるかをまとめます。

テストケース

検証するにあたってテストケースを用意しました。
検証環境ではDKIMの署名をする環境がないためSPFだけでDMARCを検証します。
DMARC的には、SPFアライメントまたはDKIMアライメントの「いずれか」がpassであればDMARCもpassになるため、検証には問題ないと考えています。

表中の表現については以下の通りです。

  • DMARCポリシー:対象のドメイン名のTXTレコードに設定したDMARCレコードのDMARCポリシーです。
  • SPF対応状況:対象のドメイン名のTXTレコードに設定したSPFレコードに含まれるIPアドレスからメールを送信する(対応)、または含まれないIPアドレスからメールを送信します(非対応)
表は横にスクロール出来ます
# DMARCポリシー SPF対応状況
filewo.net sub1.filewo.net sub2.filewo.net filewo.net sub1.filewo.net sub2.filewo.net
1 p=quarantine (指定しない) (指定しない) 対応 対応 (送信しない)
2 p=quarantine (指定しない) (指定しない) (送信しない) 非対応 (送信しない)
3 p=quarantine p=none (指定しない) 対応 対応 対応
4 p=quarantine p=none (指定しない) (送信しない) 非対応 非対応
5 p=quarantine
sp=none
(指定しない) (指定しない) 対応 対応 (送信しない)
6 p=quarantine
sp=none
(指定しない) (指定しない) (送信しない) 非対応 (送信しない)
7 p=quarantine
sp=none
p=quarantine (指定しない) 対応 対応 対応
8 p=quarantine
sp=none
p=quarantine (指定しない) (送信しない) 非対応 非対応

#1~4については、sp=を利用せずp=のみ設定します。
サブドメイン名にp=noneがない場合は親ドメイン名のポリシー(p=quarantine)に従い、ある場合はそのポリシーに従うことが予想されます。

#5~8については、sp=を設定します。
サブドメイン名にp=quarantineがない場合は親ドメイン名のsp=noneに従い、ある場合はそのポリシーに従うことが予想されます。

DMARC検証結果の確認方法

受信者側でDMARCをpassしたかどうかは、Gmailを使って検証します。
Gmailではメールのソースを表示することでDMARC検証結果を確認することが可能です。

これはWeb版Gmailのソースを表示する画面ですが、SPF、DKIM、DMARCの検証結果が表示されています。
このメールはJCBからのメールですが、いずれも問題なくpassしていることが見て取れます。さすがですね。
ちなみにメールヘッダにも検証結果が記載されるので、IMAP等で受信していても確認は可能です。

→と思ったんですが、テストに使っていたサーバのIPアドレスがGmailの受信量制限の対象とされていて、うまくGmailにメールが送れなかったのでGmail以外の秘密のサーバにメールを送って検証しました。

ヘッダーFROMエンベロープFROM

SPFはエンベロープFROMを検証します。
DMARCはヘッダーFROMと、SPFの検証ドメイン名(またはDKIMの検証ドメイン名)が一致していることが必要です。
そのため、SPFがpassであってもDMARC的にはpassにならない可能性があります。
今回の検証では、ヘッダーFROMとエンベロープFROMは同じドメイン名となるようにしています。

検証結果

結果一覧は以下の通りになりました。

表は横にスクロール出来ます
# 受信メールの受信結果
(括弧内はDMARC検証結果)
DMARCポリシー(再掲) SPF対応状況(再掲)
filewo.net sub1.filewo.net sub2.filewo.net filewo.net sub1.filewo.net sub2.filewo.net filewo.net sub1.filewo.net sub2.filewo.net
1 受信
(pass)
受信
(pass)
p=quarantine (指定しない) (指定しない) 対応 対応 (送信しない)
2 隔離
(fail)
p=quarantine (指定しない) (指定しない) (送信しない) 非対応 (送信しない)
3 受信
(pass)
受信
(pass)
受信
(pass)
p=quarantine p=none (指定しない) 対応 対応 対応
4 受信
(fail)
隔離
(fail)
p=quarantine p=none (指定しない) (送信しない) 非対応 非対応
5 受信
(pass)
受信
(pass)
p=quarantine
sp=none
(指定しない) (指定しない) 対応 対応 (送信しない)
6 受信
(fail)
p=quarantine
sp=none
(指定しない) (指定しない) (送信しない) 非対応 (送信しない)
7 受信
(pass)
受信
(pass)
受信
(pass)
p=quarantine
sp=none
p=quarantine (指定しない) 対応 対応 対応
8 隔離
(fail)
受信
(fail)
p=quarantine
sp=none
p=quarantine (指定しない) (送信しない) 非対応 非対応

まぁ想定通りですね。
サブドメイン名にDMARCポリシーを指定した場合は、親ドメインのsp=よりも優先されて適用されるということが分かりました。
サブドメイン名ごとにDMARCポリシーを分けたい場合は、それぞれのサブドメイン名にDMARCレコードを設定しましょう。

コメントを残す