この度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レポートを配置して表示するときは、下記の設定ファイルの修正が必要な点です。
[general]
+save_aggregate = False
+save_forensic = False
-save_aggregate = True
-save_forensic = True
-output = /output/
私は、下記の形で、使いました。
最初に書かれているもので、上記の部分のみ差し替える形で設定しました。
[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レポートは、送信したメールが、どのように届いているか把握するものです。
この点が、間違えやすいかなと思いました。