日々送られてくる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!
まだ頭の中がまとまっていないようです。間違ってたらすみません。




コメント