日々送られてくるDMARCレポートメール。とりあえずはDBに登録させることに成功しましたが、実際の解析をしなければなりません。そのためにはレポートの意味を正しく理解しなければなりません。
DMARCレポートをDBに登録する方法はこちら
サンプル
<version>1.0</version> <report_metadata> 略 </report_metadata> <policy_published> 略 </policy_published> <record> <row> <source_ip>XXX.XXX.XXX.XXX(IPアドレス)</source_ip> <count>1</count> <policy_evaluated> <disposition>none</disposition> <dkim>pass</dkim> <spf>fail</spf> </plicy_evaluated> </row> <identifiers> <header_from>papamamameyou.com</header_from> </identifiers> <auth_results> <dkim> <domain>papamamameyou.com</domain> <result>pass</result> <selector>selector1</selector> </dkim> <spf> <domain>example.com</domain> <scope>mfrom</scope> <result>pass</result> </spf> </auth_results> </record>
DMARC判定情報
<row>タグはDMARC判定結果を表しています。以下<row>の下位タグの詳細です。
source_ip | 該当するドメインを利用してメールを送ったサーバーのIPアドレス。(ホスト名がわかるとさらに管理しやすくなりますね) |
count | 送信したメールの回数。 |
disposition | DMARC認証の結果、受信サーバーが処理した内容。 |
dkim | DKIMアライメント判定結果 |
spf | SPFアライメント判定結果 |
<identifiers>タグについてはこちらです。(サンプルはheader_fromのみ記載)
header_from | ヘッダーFROMドメイン。メールソフトで表示されるメールアドレスのドメイン。 |
envelope_to | エンベロープTOドメイン。実際に送信される時に使用される宛先メールアドレスのドメイン。 |
envelope_from | エンベロープFROMドメイン。実際に送信した差出人のメールアドレスのドメイン。 |
<auth_results>タグ内ではSPF認証とDKIM認証の結果が表示されます。
<dkim> | DKIM認証 |
domain | 署名ドメイン。メールヘッダーDKIM-Signatureにあるd=のドメイン |
result | DKIM認証の判定結果 |
selector | セレクタ名(DNSのDKIMレコードで設定した値) |
<spf> | SPF認証 |
domain | エンベロープFROMドメイン。メールヘッダーReturn-Pathのドメイン (scopeの指定によって参照する値は変わる) |
scope | パラメータ値はmfromかhelo mfrom:送信されたメールの”Mail From”アドレス(Return-Pathまたはenvelope-from)がSPF認証の対象となる。(デフォルトはこちら) helo:送信元メールサーバーのHELO/EHLOコマンドで指定されたドメインがSPF認証の対象となる。 |
result | SPF認証の判定結果 |
DMARC判定をpassするには?
DMARC判定は以下の流れで行われます。
- SPF認証とDKIM認証のどちらかの認証をパスしたか?Yesなら2へ。
- 上記認証をパスしたほうのアライメントはパスしたか?Yesなら認証成功。NoならDMARC判定fail。
第一段階でSPFとDKIMの認証がどちらか成功しているか確認します。第二段階でさらにアライメントを行いこれもパスしたらDMARC認証成功です。
アライメントとは?
SPF認証やDKIM認証だけはなくDMARCも独自で判定基準を持っています。これによりSFPやDKIMでは判定できない部分をカバーしています。
SPFアライメント
SPF認証が成功した場合、エンベロープFROMドメインとヘッダーFROMドメインの一致を確認します。一致が確認出来たらDMARC認証成功です。
エンベロープFROMドメイン = ヘッダーFROMドメイン
DMARCレポート エンベロープFROMドメイン = <auth_results><spf><domain> ヘッダーFROMドメイン = <identifiers><header_from>
サンプルでは一致しないため<policy_evaluated><spf>がfailになります。
注意!!
エンベロープFROMドメインとヘッダーFROMドメインが一致していてもSPF認証<auth_results><spf><result>がfailの時があります。
なぜドメインが一致している(正しいドメインが記載されている)のにSPF認証はfailするのか?
エンベロープFROMドメイン<auth_results><spf><domain>は偽装できる。SPF認証はエンベロープFROMドメインのIPアドレスと送信サーバーのIPアドレスが一致しているか確認しています。ドメインが偽装されている場合、送信サーバーのIPアドレスとエンベロープFROMドメインのIPアドレスが一致しないことが判明しfailとなります。
DKIMアライメント
DKIM認証が成功した場合、署名ドメインとヘッダーFROMドメインの一致を確認します。署名ドメインとはメールヘッダーDKIM-Signatureにあるd=のドメインのことです。DMARCレポートにも記載があります。<auth_results><dkim><domain>タグの中にあるのがこのドメインのことです。一致が確認出来たらDMARC認証成功です。
署名ドメイン = ヘッダーFROMドメイン
DMARCレポート 署名ドメイン = <auth_results><dkim><domain> ヘッダーFROMドメイン = <identifiers><header_from>
サンプルでは一致しているので<policy_evaluated><dkim>がpassになります。
まとめ
つまりSPF、DKIMそれぞれが認証するために利用したドメインをヘッダーFROMドメインと一致するか検証するのがDMARC認証です。
結局どこを見ればいいの?
DMARC判定は<policy_evaluated>の<spf><dkim>を確認する。どちらかがpassしているならDMARC判定成功。SFP・DKIMアライメント両方ともfailの場合<policy_evaluated><disposition>の値が実行されたことになります。
サンプルは<dkim>がpassしているのでDMARC判定は成功しています。メールはなりすましではないと判断されました。
まとめ
(SPF認証 or DKIM認証) and DMARC認証 = なりすましではない。OK!
まだ頭の中がまとまっていないようです。間違ってたらすみません。
コメント