サブドメイン名におけるDMARC設定について
はじめに
最近徐々に普及し始めたDMARCですが、まだまだ日本語の情報が少ないのも事実です。
今回は、サブドメイン名におけるDMARCの設定について検証してみます。
DMARCで設定したポリシーはサブドメイン名にも適用されます。
ただし、設定したドメイン名とそのサブドメイン名でポリシーを分けることは可能です。
ポリシーの設定はp=
で指定しますが、サブドメイン名のポリシーはsp=
で指定します。
それでは、サブドメイン名毎にポリシーを分けて設定したい場合は、どうすれば良いでしょうか。
おそらくサブドメイン名に対してそれぞれDMARCを設定すれば良さそうですが、その辺りが明記された情報を見つけきれなかったため、今回はそれを検証してみます。
検証方法
検証では以下の様なテストを行うことにします。
- DMARCレコードをfilewo.netに設定します。
- filewo.netのDMARCレコードや、サブドメイン名のDMARCレコードを少しずつ変えて、それぞれのドメイン名からメールを送信します。
- 受信者側で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レコードを設定しましょう。
最近のコメント