LoginSignup
1
4

この度DNSで、DMARCとDKIMのレコードの設定を行いました。
そしてDMARCレポートが、届くようになりました。

この解析のために、私は、ChatGPT Plusなどを使い、届いた圧縮ファイルを解凍して、XMLファイルの内容を簡易的に表示するコードを作りました。


import json

# レポートファイル名
report_file = "you-fike.xml"

# レポート情報の表示
def display_report_info(report_data):
  print("**レポート情報**")
  print("作成元組織:", report_data["org_name"])
  print("レポートID:", report_data["report_id"])
  print("レポート期間:", report_data["begin"], "", report_data["end"])

# 受信ポリシー情報の表示
def display_policy_info(report_data):
  print("**受信ポリシー**")
  print("ドメイン:", report_data["domain"])
  print("DKIM認証:", report_data["adkim"])
  print("SPF認証:", report_data["aspf"])
  print("受信ポリシー:", report_data["p"])
  print("送信者ポリシー:", report_data["sp"])
  print("拒否率:", report_data["pct"], "%")
  print("適用除外:", report_data["np"])

# 解析結果の表示
def display_records(report_data):
  print("**解析結果**")
  print("{:<20} {:<10} {:<10} {:<10}".format("送信元IPアドレス", "メール件数", "DKIM認証", "SPF認証"))
  for record in report_data["records"]:
    print("{:<20} {:<10} {:<10} {:<10}".format(record["source_ip"], record["count"], record["dkim"], record["spf"]))

# レポートファイルの読み込み
with open(report_file, "r") as f:
  report_data = json.load(f)

# レポート情報の表示
display_report_info(report_data)

# 受信ポリシー情報の表示
display_policy_info(report_data)

# 解析結果の表示
display_records(report_data)

ただ、これでは、単純に表示するだけなので、解析できないです。
また、ファイルも、直接コードを書き替えないと設定できないです。

それで色々探したのですが、無料で使えるサービスが無く困っていました。

DMARCvisualizerを知りました。

その中で、こちらの記事を知りました。

そして、こちらの記事を知りました。
こちらの記事で公開されているリポジトリを使い、表示できました。

気を付ける点は、ローカルのfilesのフォルダにDMARCレポートを配置して表示するときは、下記の設定ファイルの修正が必要な点です。

dmarc-visualizer/parsedmarc.ini
[general]
+save_aggregate = False
+save_forensic = False
-save_aggregate = True
-save_forensic = True
-output = /output/

私は、下記の形で、使いました。
最初に書かれているもので、上記の部分のみ差し替える形で設定しました。

dmarc-visualizer/parsedmarc.ini
[general]
+save_aggregate = False
+save_forensic = False
-save_aggregate = True
-save_forensic = True
-output = /output/

[elasticsearch]
hosts = elasticsearch:9200
ssl = False

私の実行環境は、Windows11 HOMEに、Dockerをインストールしました。
そして、外付けSSDにフォルダを作り、その中に、リポジトリをダウンロードして配置しました。
そして、Dockerのコンテナを起動しました。

下記の記事で、最初に見つけた記事の修正内容が書かれていました。

この修正内容を反映したリポジトリが公開されていたので、とても助かりました。

記事を書いて下さった方に、感謝しています。

こちらの記事も、参考になると思います。

解析例

下記の画像を見ると、黄色い表示がSPFの項目で出ています。
このことから、SPFの設定に問題があると分かります。
今回のケースは、SPFレコードの設定漏れがありました。

DMARCレポートは、送信したメールが、どのように届いているか把握するものです。
この点が、間違えやすいかなと思いました。
スクリーンショット 2024-02-19 214934.png

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4