Convert DMARC report files from XML to human-readable HTML formats.
DMARC レポート(XML)を人間が読みやすい HTML 形式に変換するスクリプトです。指定のディレクトリに DMARC レポート(.zip / .gz / .xml)を置いた状態でスクリプトを実行すると、それらすべてから内容を抽出し、まとめた HTML ファイルを生成します。
Install Node.js if you haven't already.
git clone https://github.com/burnworks/dmarc-to-html-converter.git
cd dmarc-to-html-converter
npm installPlease create a report directory in the root directory of the project and save DMARC reports (either .zip or .gz or .xml) there.
report というディレクトリをプロジェクトのルートディレクトリに作成し、そこに DMARC レポート(.zip / .gz / .xml)を保存してください。
npm run devWhen the script is executed successfully, a report.html file will be generated in the root directory of the project. Please open this file in a browser.
スクリプトが正しく実行されると、プロジェクトのルートディレクトリに report.html が生成されます。このファイルをブラウザで開いてください。
AI 寸評機能(AI commentary mode)を使う場合は、プロジェクトルートに .env ファイルを作成し、下記のように設定してください。AIMode=true が設定されていない場合は、OpenAI API は呼び出されず、従来通りの HTML レポートだけを生成します。
AIMode=true
OPENAI_API_KEY=your_openai_api_key
OPENAI_MODEL=gpt-5.4-mini
AICommentaryLanguage=ja
# 推奨: レポートが増えてきたら、どちらか、または両方を設定してください。
ReportLimitCount=30
ReportLimitMonths=3OPENAI_MODEL は、コストと性能のバランスを優先して gpt-5.4-mini を推奨しています。寸評の品質を優先する場合は gpt-5.5、コストを最優先する場合は gpt-5.4-nano も選択肢になります。
AICommentaryLanguage は AI 寸評の本文言語です。ja または en を指定できます。未設定または不正な値の場合は ja になります。
AI 寸評では、DMARC レポートの生 XML ではなく、日付範囲、レポート ID、From、Count、Disposition、DKIM / SPF の結果、送信元 IP を要約したデータだけを OpenAI API に送信します。送信元 IP はデフォルトで末尾がマスクされます。
ReportLimitCount と ReportLimitMonths はデフォルトでは設定されていません。未設定の場合は report ディレクトリ内の全件を処理します。レポートの数が多い状態で AI モードを使うと、OpenAI API へ送信するデータ量とトークン消費が大きくなります。さらに、レポート1件あたりの record 数が多い場合も、AI に渡すデータ量が増えます。
また AI を使わない場合でも、対象ファイルや record が多いほど処理時間が長くなります。長く運用する場合は、なるべく ReportLimitCount または ReportLimitMonths を設定してください。
ReportLimitCount は更新日時が新しい順の最大件数、ReportLimitMonths はファイル更新日時が直近何ヶ月以内かを基準に処理対象を絞ります。両方を設定した場合は、両方の条件を満たすレポートだけを処理します。
# デフォルト: true
AIMaskSourceIp=true送信元 IP をマスクせず AI に渡したい場合のみ、AIMaskSourceIp=false を設定してください。
下記はレポートのサンプル画像です。report ディレクトリに置いてあるファイルを作成日時順(日時が新しいレポートが HTML では上に表示されます)に処理していくはずです。
Google と Microsoft から送信される DMARC レポートのフォーマットを参考に開発しています (DMARC レポートについて)。フォーマットの違いによっては正しく変換されないかもしれません。
また数百件、数千件のレポートを変換することを想定していません。主に、中小企業、あるいは零細企業レベルでの利用しか想定していませんので、大きなレポートを解析したい場合は、専用の有料サービスをご利用ください。
