UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

DMARCレポートを分析するdmarc-report-converterをmacOS Montereyにインストール

DMARCレポートを分析するdmarc-report-converterをmacOS Montereyにインストール


概要

更新履歴

  • 2024/02/05 初版

目次

はじめに

 このドキュメントはGoogleやMicrosoftなどから送付されてきたDMARCレポートを読みやすくしてHTMLファイルを作成してくれる dmarc-report-converterをmacOS Montereyにインストールしてレポート生成を実行するまでの手順である.
 執筆時点ではdmarc-report-converterはLinux用のバイナリとして提供されており,そのままでは動作しないので,ソースコードを入手してコンパイル(ビルド)も行う.その為にGO言語や関連するstaticcheckをインストールする.
 なお,この作業を行うためには,予めHomeBrewをセットアップ済みの環境が必要.

事前準備

GO言語をインストールする

  • dmarc-report-conveterをビルドするためにはGO言語が必要なのでインストール.
  • 今回はHomeBrewを利用.
  • まずはパッケージの情報を確認,

$ brew info golang🆑
==> go: stable 1.21.6 (bottled), HEAD
Open source programming language to build simple/reliable/efficient software
https://go.dev/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/g/go.rb
License: BSD-3-Clause
==> Options
--HEAD
    Install HEAD version
==> Analytics
install: 86,915 (30 days), 253,864 (90 days), 886,159 (365 days)
install-on-request: 62,915 (30 days), 186,667 (90 days), 656,116 (365 days)
build-error: 274 (30 days)
$

  • インストールする.

$ brew install golang🆑
==> Downloading https://formulae.brew.sh/api/formula.jws.json
############################################################# 100.0%
==> Downloading https://formulae.brew.sh/api/cask.jws.json
############################################################# 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/go/manifests/1.21.6
############################################################# 100.0%
==> Fetching go
==> Downloading https://ghcr.io/v2/homebrew/core/go/blobs/sha256:2378c819
a723ceafc17954edac3f652ce0e4dd6e37d34b26661e0523a89488cd
############################################################# 100.0%
==> Pouring go--1.21.6.monterey.bottle.tar.gz
🍺  /usr/local/Cellar/go/1.21.6: 12,545 files, 242.7MB
==> Running `brew cleanup go`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
$ which go🆑
/usr/local/bin/go
$
$

  • インストールできたことを確認.

DMARCレポート保存用ディレクトリを作成

  • 入手したDMARCレポートを保存するためのディレクトリと,DMARCレポートの分析結果を保存するためのディレクトリを作成する.

$ mkdir -p /tmp/dmarc_files/🆑
$ mkdir -p /tmp/html/🆑
$

ソースコードを入手する

  • 公式サイトはgithubにある.
    • https://github.com/tierpod/dmarc-report-converter
  • 今回インストールユーザのbinディレクトリ配下に移動する.

$ cd bin🆑
$

  • githubからクローンする.

$ git clone https://github.com/tierpod/dmarc-report-converter🆑
Cloning into 'dmarc-report-converter'...
remote: Enumerating objects: 1120, done.
remote: Counting objects: 100% (339/339), done.
remote: Compressing objects: 100% (205/205), done.
remote: Total 1120 (delta 101), reused 245 (delta 89), pack-reused 781
Receiving objects: 100% (1120/1120), 1.28 MiB | 9.04 MiB/s, done.
Resolving deltas: 100% (416/416), done.
$

  • cloneしたファイルを確認する.

$ cd dmarc-report-converter🆑
$ ls -la🆑
total 32
drwxr-xr-x 18 ujpadmin staff  576  2  5 19:49 .
drwxr-xr-x 44 ujpadmin staff 1408  2  5 19:49 ..
drwxr-xr-x 12 ujpadmin staff  384  2  5 19:49 .git
drwxr-xr-x  3 ujpadmin staff   96  2  5 19:49 .github
-rw-r--r--  1 ujpadmin staff   30  2  5 19:49 .gitignore
-rw-r--r--  1 ujpadmin staff 1073  2  5 19:49 LICENSE
-rw-r--r--  1 ujpadmin staff 1209  2  5 19:49 Makefile🈁
-rw-r--r--  1 ujpadmin staff 6335  2  5 19:49 README.md
-rw-r--r--  1 ujpadmin staff 1532  2  5 19:49 UPGRADING.md
drwxr-xr-x  4 ujpadmin staff  128  2  5 19:49 assets
drwxr-xr-x  3 ujpadmin staff   96  2  5 19:49 cmd
drwxr-xr-x  4 ujpadmin staff  128  2  5 19:49 config
-rw-r--r--  1 ujpadmin staff  501  2  5 19:49 go.mod
-rw-r--r--  1 ujpadmin staff 4064  2  5 19:49 go.sum
drwxr-xr-x  5 ujpadmin staff  160  2  5 19:49 install
drwxr-xr-x  3 ujpadmin staff   96  2  5 19:49 pkg
drwxr-xr-x  5 ujpadmin staff  160  2  5 19:49 screenshots
drwxr-xr-x  6 ujpadmin staff  192  2  5 19:49 vendor
$

  • makeファイルが確認できた.
  • go.modファイルを確認.(理由はまだ理解できてないが...なんとなく大事そうなことが記載されている)

$ cat go.mod🆑
module github.com/tierpod/dmarc-report-converter

go 1.13

require (
    github.com/emersion/go-imap v1.0.0-beta.1.0.20180319181901-b63c7c7011cb
    github.com/emersion/go-message v0.9.2-0.20180321173051-51445bfdc558
    github.com/emersion/go-sasl v0.0.0-20161116183048-7e096a0a6197 // indirect
    github.com/emersion/go-textwrapper v0.0.0-20160606182133-d0e65e56babe // indirect
    github.com/hashicorp/logutils v0.0.0-20150609070431-0dc08b1671f3
    golang.org/x/text v0.3.8 // indirect
    gopkg.in/yaml.v2 v2.2.1
)
$

makeする

  • makeファイルの中身を確認.

$ cat Makefile🆑
NAME       := dmarc-report-converter
DESTDIR    := /opt
INSTALLDIR := $(DESTDIR)/dmarc-report-converter

ifeq ($(GITHUB_REF),)
GIT_VER    := $(shell git describe --abbrev=7 --always --tags)-$(shell git rev-parse --abbrev-ref HEAD)-$(shell date +%Y%m%d)
else
GIT_VER    := $(shell basename $(GITHUB_REF))-$(shell date +%Y%m%d)
endif
LDFLAGS    := -ldflags "-X main.version=$(GIT_VER)"

.PHONY: test
test:
    find ./cmd ./pkg -type f -name '*.go' | xargs gofmt -l -e
    go vet -mod=vendor ./cmd/... ./pkg/...
    $(shell go env GOPATH)/bin/staticcheck ./cmd/... ./pkg/...
    go test -mod=vendor ./cmd/... ./pkg/...

.PHONY: build
build: test $(NAME)

bin/$(NAME):
    go build -mod=vendor -v $(LDFLAGS) -o $@ ./cmd/$(NAME)

.PHONY: clean
clean:
    rm -f bin/*
    rm -f ./pprof
    rm -rf ./tmp/dmarc-report-converter

.PHONY: install
install: $(INSTALLDIR) bin/$(NAME)
    install -m 0755 bin/$(NAME) $(INSTALLDIR)
    install -m 0600 config/config.dist.yaml $(INSTALLDIR)/config.dist.yaml
    cp -r assets $(INSTALLDIR)
    cp -r install $(INSTALLDIR)

$(INSTALLDIR) dist tmp:
    mkdir -p $@

.PHONY: release
release: clean dist
    make DESTDIR=./tmp install
    tar -cvzf dist/$(NAME)_$(GIT_VER)_x86-64.tar.gz --owner=0 --group=0 -C ./tmp $(NAME)
$

make testを実行しGO言語のstaticcheckをインストールする

  • セオリー通りにmake testして足りない環境を揃えていく.

$ make test🆑
find ./cmd ./pkg -type f -name '*.go' | xargs gofmt -l -e
go vet -mod=vendor ./cmd/... ./pkg/...
/Users/ujpadmin/go/bin/staticcheck ./cmd/... ./pkg/...
make: /Users/ujpadmin/go/bin/staticcheck: No such file or directory
make: *** [test] Error 1🈁
[MacPro2013:ujpadmin 00:51:27 ~/bin/dmarc-report-converter ]
$

  • staticcheckというディレクトリが無いというエラーになった.
  • staticcheckというパッケージを調べる.

$ brew info staticcheck🆑
==> staticcheck: stable 2023.1.6 (bottled), HEAD
State of the art linter for the Go programming language
https://staticcheck.io/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/s/staticcheck.rb
License: MIT
==> Dependencies
Required: go ✔
==> Options
--HEAD
    Install HEAD version
==> Analytics
install: 126 (30 days), 380 (90 days), 2,074 (365 days)
install-on-request: 126 (30 days), 380 (90 days), 2,074 (365 days)
build-error: 0 (30 days)
$

  • 「Goプログラミング言語用の最新リンター」とあるので文法チェックツールの模様.
  • HomeBrewでインストールする.

$ brew install staticcheck🆑
==> Downloading https://formulae.brew.sh/api/formula.jws.json
################################################# 100.0%
==> Downloading https://formulae.brew.sh/api/cask.jws.json
################################################# 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/staticcheck/manifests/2023.1.6
################################################# 100.0%
==> Fetching staticcheck
==> Downloading https://ghcr.io/v2/homebrew/core/staticcheck/blobs/sha256:4736fb3ec1d4c271e32c8212306af9acfe3dd5af4001976e9efa69be5e39d4b2
################################################# 100.0%
==> Pouring staticcheck--2023.1.6.monterey.bottle.tar.gz
🍺  /usr/local/Cellar/staticcheck/2023.1.6: 6 files, 12.4MB
==> Running `brew cleanup staticcheck`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
$

  • インストールディレクトリとバージョンを確認.

$ which staticcheck🆑
/usr/local/bin/staticcheck🈁
$
$ /usr/local/bin/staticcheck -version🆑
staticcheck 2023.1.6 (v0.4.6)
$

  • 再度make testする.

$ make test🆑
find ./cmd ./pkg -type f -name '*.go' | xargs gofmt -l -e
go vet -mod=vendor ./cmd/... ./pkg/...
/Users/ujpadmin/go/bin/staticcheck ./cmd/... ./pkg/...
make: /Users/ujpadmin/go/bin/staticcheck: No such file or directory
make: *** [test] Error 1
$

  • やっぱりエラーになる.
  •  Makefileのtest部分を確認すると,次のようになっている.

.PHONY: test🈁このブロック
test:
    find ./cmd ./pkg -type f -name '*.go' | xargs gofmt -l -e
    go vet -mod=vendor ./cmd/... ./pkg/...
    $(shell go env GOPATH🈁)/bin/staticcheck ./cmd/... ./pkg/...
    go test -mod=vendor ./cmd/... ./pkg/...

  • GOPATHは設定したことがないので,現在の値を確認.

$ echo $GOPATH🆑

$

  • 何も設定されてない.
  • go言語の実行イメージのパスを調査.

$ which  go🆑
/usr/local/bin/go🈁
$

staticcheckとgoは同じディレクトリに収納されている.
よって/usr/localディレクトリをGOPATHとする.

$ export GOPATH=/usr/local🆑
$ echo $GOPATH🆑
/usr/local
$

  • make testを実行する.

$ make test🆑
find ./cmd ./pkg -type f -name '*.go' | xargs gofmt -l -e
go vet -mod=vendor ./cmd/... ./pkg/...
/usr/local/bin/staticcheck ./cmd/... ./pkg/...
warning: "./cmd/..." matched no packages🈁
warning: "./pkg/..." matched no packages🈁
go test -mod=vendor ./cmd/... ./pkg/...
?       github.com/tierpod/dmarc-report-converter/cmd/dmarc-report-converter    [no test files]
ok      github.com/tierpod/dmarc-report-converter/pkg/dmarc    0.310s
$

  • warningは出たけどエラーは無くなった.

make installを実行する

  • make testに成功したので,make installを実行.

$ make install🆑
mkdir -p /opt/dmarc-report-converter
mkdir: cannot create directory ‘/opt/dmarc-report-converter’: Permission denied
make: *** [/opt/dmarc-report-converter] Error 1
$

  • ビルドした実行プログラムを配置するディレクトリへ書き込み権限がなくてエラー.
  • 今回の環境では/optディレクトリは存在する.ない場合は作成.
  • sudoでインストールする.

$ sudo make install🆑
Password:🔑
mkdir -p /opt/dmarc-report-converter
go build -mod=vendor -v -ldflags "-X main.version=v0.6.5-9-g1f6e13e-master-20240206"
 -o bin/dmarc-report-converter ./cmd/dmarc-report-converter
github.com/tierpod/dmarc-report-converter/cmd/dmarc-report-converter
install -m 0755 bin/dmarc-report-converter /opt/dmarc-report-converter
install -m 0600 config/config.dist.yaml /opt/dmarc-report-converter/config.dist.yaml
cp -r assets /opt/dmarc-report-converter
cp -r install /opt/dmarc-report-converter
$

  • インストールしたディレクトリを確認.

$ ls -la /opt/dmarc-report-converter/🆑
total 10292
drwxr-xr-x 6 root wheel      192  2  6 01:24 .
drwxr-xr-x 3 root wheel       96  2  6 01:24 ..
drwxr-xr-x 4 root wheel      128  2  6 01:24 assets
-rw------- 1 root wheel     1032  2  6 01:24 config.dist.yaml
-rwxr-xr-x 1 root wheel 10531808  2  6 01:24 dmarc-report-converter
drwxr-xr-x 5 root wheel      160  2  6 01:24 install🈁
$

installディレクトリを確認.

$ ls -la /opt/dmarc-report-converter/install/🆑
total 12
drwxr-xr-x 5 root wheel 160  2  6 01:24 .
drwxr-xr-x 6 root wheel 192  2  6 01:24 ..
-rw-r--r-- 1 root wheel 292  2  6 01:24 dmarc-report-converter.service
-rwxr-xr-x 1 root wheel  91  2  6 01:24 dmarc-report-converter.sh🈁
-rw-r--r-- 1 root wheel 127  2  6 01:24 dmarc-report-converter.timer
$

シェルプログラムの中身を確認.

$ cat /opt/dmarc-report-converter/install/dmarc-report-converter.sh🆑
#!/bin/bash

cd /opt/dmarc-report-converter
./dmarc-report-converter -config ./config.yaml
$

  • このシェルは毎日dmarc-report-converterを実行するときに利用するものとのこと.
  • よって今回は関係なし.
config.dist.yamlをコピーして設定ファイルのconfig.yamlを作成
dmarc-report-converterの動作はconfigファイルによって設定される.
そのテンプレートがconfig.dist.yamlとしてインストールされたディレクトリに格納されている.

$ ls -la /opt/dmarc-report-converter/🆑
total 10292
drwxr-xr-x 6 root wheel      192  2  6 01:24 .
drwxr-xr-x 3 root wheel       96  2  6 01:24 ..
drwxr-xr-x 4 root wheel      128  2  6 01:24 assets
-rw------- 1 root wheel     1032  2  6 01:24 config.dist.yaml🈁
-rwxr-xr-x 1 root wheel 10531808  2  6 01:24 dmarc-report-converter
drwxr-xr-x 5 root wheel      160  2  6 01:24 install
$

  • テンプレートファイルを,ファイル名を変更してコピーする.

$ sudo cp -p /opt/dmarc-report-converter/config.dist.yaml /opt/dmarc-report-converter/config.yaml🆑
$ ls -la /opt/dmarc-report-converter/config*🆑
-rw------- 1 root wheel 1032  2  6 01:24 /opt/dmarc-report-converter/config.dist.yaml
-rw------- 1 root wheel 1032  2  6 01:24 /opt/dmarc-report-converter/config.yaml🈁
$

  • config.yamlファイルの中身を確認.

$ sudo cat /opt/dmarc-report-converter/config.yaml🆑
input:
  delete: no
  dir: "/tmp/dmarc_files/"🈁
  #imap:
  #  server: ""
  #  username: ""
  #  password: ""
  #  mailbox: ""
  # enable debug messages for imap package?
  #  debug: no
  # delete emails from server after fetch?
  #  delete: no

output:
  # output file
  # should be: string, golang template string or "stdout"
  file: "/tmp/html/{{ .ID }}.html"🈁
  # file: "/tmp/html/{{ .ReportMetadata.Email }}/{{ .PolicyPublished.Domain }}!{{.ReportMetadata.DateRange.Begin}}!{{ .ReportMetadata.ReportID }}.html"

  # output format
  # should be: txt, json, html_static, html, external_template
  format: "html_static"

  # if you configure format to "html" output, don't forget to configure assets_path and your web server
  # assets_path: "./assets"

  # if you configure format to "external_output", don't forget to configure external_template
  external_template: "/path/to/your/txt.gotmpl"

# perform reverse lookups?
lookup_addr: no

# merge multiple similar reports to one?
merge_reports: yes

log_debug: no
log_datetime: no
$

dirで設定された場所にあるDMARCレポートファイルを入力ファイルとし,fileで指定された場所に可読化されたHTMLファイルが保存される.
デフォルト設定は次の通り.


dir: "/tmp/dmarc_files/"
file: "/tmp/html/{{ .ID }}.html"

  • 今回は設定を変更せず,このディレクトリにファイルを配置する方法で実行することにする.
  • なお,/tmpファイルなのでOS再起動などでファイルが消えてしまうことに注意.

Thunderbirdで受け取ったDMARCレポートメールの処理

DMARCレポートのメールをThunderbirdで受け取っていたので,一括で添付ファイルを保存できる方法を調べた.
すると,このImportExportTools NGがヒット.



  • アドオンをThunderbirdに追加後,DMARCレポートのメッセージを選択して右クリック.
  • 次のような順序でメニューを選択.


  • 保存すると次のように添付ファイルはAttachments-1などのディレクトリは以下に保存される.


  • DMARCレポートファイルはGZファイルかZIPで送られてくる模様.

dmarc-report-converterを実行する

  • 設定が終わったので,dmarc-report-converterを実行する.
  • まずは入力ファイル(DMARCレポートファイル)を確認.

$ ls -la /tmp/dmarc_files/🆑
total 148
drwxr-xr-x 38 ujpadmin wheel 1216  2  5 18:29  .
drwxrwxrwt  9 root    wheel  288  2  6 01:31  ..
-rw-r--r--  1 ujpadmin wheel 6148  2  5 18:29  .DS_Store
-rw-r--r--  1 ujpadmin staff  487  2  5 17:29 'docomo.ne.jp!MAILDOMAIN1.jp!1691107200!1691193599!fa366f0cabde6f509867576c7841fec1.xml.gz'
-rw-r--r--  1 ujpadmin staff  489  2  5 17:29 'docomo.ne.jp!MAILDOMAIN1.jp!1691366400!1691452799!c697cdb9c7bbe7a856705e61b23c0d6a.xml.gz'
-rw-r--r--  1 ujpadmin staff  489  2  5 17:29 'docomo.ne.jp!MAILDOMAIN1.jp!1691452800!1691539199!862f12285632d8faabfd988577eba758.xml.gz'
-rw-r--r--  1 ujpadmin staff  488  2  5 17:29 'docomo.ne.jp!MAILDOMAIN1.jp!1697932800!1698019199!8a64c1b7eb335ca304f56f3c4e5fe90b.xml.gz'
-rw-r--r--  1 ujpadmin staff  487  2  5 17:29 'docomo.ne.jp!MAILDOMAIN1.jp!1701388800!1701475199!5ef26f16716912682bac58078bbae850.xml.gz'
-rw-r--r--  1 ujpadmin staff  490  2  5 17:29 'docomo.ne.jp!MAILDOMAIN1.jp!1701734400!1701820799!63374f60648bf9d34aa8d3ceb9901392.xml.gz'
-rw-r--r--  1 ujpadmin staff  533  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1699228800!1699315199!8ae82ea25ef201478f0f2c2a28528c64.xml.gz'
-rw-r--r--  1 ujpadmin staff  515  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1699315200!1699401599!8ebccc48e698276d64154e943a6edc7b.xml.gz'
-rw-r--r--  1 ujpadmin staff  548  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1699574400!1699660799!793e8b708718573342b6fa11a52a77ee.xml.gz'
-rw-r--r--  1 ujpadmin staff  520  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1699660800!1699747199!ba7a362029858eab5bf0d4ec6f3f2b74.xml.gz'
-rw-r--r--  1 ujpadmin staff  497  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1699833600!1699919999!e3f3802cb53ec6a071e22d7bafd49195.xml.gz'
-rw-r--r--  1 ujpadmin staff  476  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1705795200!1705881599!d45a5d7b3d8261d052452cef819b01e8.xml.gz'
-rw-r--r--  1 ujpadmin staff  502  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1705881600!1705967999!f04d5f80e9cdd077c7ac4b571991fafb.xml.gz'
-rw-r--r--  1 ujpadmin staff  554  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1706054400!1706140799!f8bda8861f70ac790f304a4179efe0a8.xml.gz'
-rw-r--r--  1 ujpadmin staff  545  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1706140800!1706227199!09bd1b6e7ffc51a627e73c8c0b84970c.xml.gz'
-rw-r--r--  1 ujpadmin staff  503  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1706227200!1706313599!adc6f58f477d2e070be54b3518e794e4.xml.gz'
-rw-r--r--  1 ujpadmin staff  512  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1706486400!1706572799!03a485cea39ae489b19905bfb790521c.xml.gz'
-rw-r--r--  1 ujpadmin staff  478  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1706659200!1706745599!9b634d55faeccbb0f6a74cf0476ad945.xml.gz'
-rw-r--r--  1 ujpadmin staff  500  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1706832000!1706918399!2c25937c769d66b1fba6a84ee3b331ac.xml.gz'
-rw-r--r--  1 ujpadmin staff  547  2  5 17:29 'docomo.ne.jp!MAILDOMAIN2.jp!1707004800!1707091199!1c28623390a01b4a95281522d721ebc3.xml.gz'
-rw-r--r--  1 ujpadmin staff  570  2  5 17:29 'enterprise.protection.outlook.com!MAILDOMAIN2.jp!1699574400!1699660800.xml.gz'
-rw-r--r--  1 ujpadmin staff  573  2  5 17:29 'enterprise.protection.outlook.com!MAILDOMAIN2.jp!1706572800!1706659200.xml.gz'
-rw-r--r--  1 ujpadmin staff  730  2  5 17:29 'google.com!MAILDOMAIN2.jp!1706486400!1706572799.zip'
-rw-r--r--  1 ujpadmin staff  729  2  5 17:29 'google.com!MAILDOMAIN2.jp!1706572800!1706659199.zip'
-rw-r--r--  1 ujpadmin staff  652  2  5 17:29 'google.com!MAILDOMAIN2.jp!1706659200!1706745599.zip'
-rw-r--r--  1 ujpadmin staff  667  2  5 17:29 'kddi.com!MAILDOMAIN2.jp!1705849707!1705909169.xml.gz'
-rw-r--r--  1 ujpadmin staff  627  2  5 17:29 'kddi.com!MAILDOMAIN2.jp!1706771277!1706779400.xml.gz'
-rw-r--r--  1 ujpadmin staff  694  2  5 17:29 'kddi.com!MAILDOMAIN2.jp!1706832906!1706863528.xml.gz'
-rw-r--r--  1 ujpadmin staff  451  2  5 17:29 'onamae.ne.jp!MAILDOMAIN2.jp!1706713200!1706972400.xml.gz'
-rw-r--r--  1 ujpadmin staff  543  2  5 17:29 'protection.outlook.com!MAILDOMAIN1.jp!1694563200!1694649600.xml.gz'
-rw-r--r--  1 ujpadmin staff  544  2  5 17:29 'protection.outlook.com!MAILDOMAIN1.jp!1696377600!1696464000.xml.gz'
-rw-r--r--  1 ujpadmin staff  543  2  5 17:29 'protection.outlook.com!MAILDOMAIN1.jp!1696636800!1696723200.xml.gz'
-rw-r--r--  1 ujpadmin staff  586  2  5 17:29 'protection.outlook.com!MAILDOMAIN2.jp!1699315200!1699401600.xml.gz'
-rw-r--r--  1 ujpadmin staff  593  2  5 17:29 'protection.outlook.com!MAILDOMAIN2.jp!1699401600!1699488000.xml.gz'
-rw-r--r--  1 ujpadmin staff  548  2  5 17:29 'protection.outlook.com!MAILDOMAIN2.jp!1706400000!1706486400.xml.gz'
$

  • GZとZIPファイルが混在しているが問題ない模様.
  • コマンドを実行する.

$ /opt/dmarc-report-converter/dmarc-report-converter
[INFO] files: found 36 input files in /tmp/dmarc_files/
[ERROR] files: mimetype application/octet-stream not supported in file /tmp/dmarc_files/.DS_Store, skip
[INFO] ReadParseZIP: read file google.com!MAILDOMAIN2.jp!1706486400!1706572799.xml from zip
[INFO] ReadParseZIP: read file google.com!MAILDOMAIN2.jp!1706572800!1706659199.xml from zip
[INFO] ReadParseZIP: read file google.com!MAILDOMAIN2.jp!1706659200!1706745599.xml from zip
[INFO] merge: 1 report(s), grouped by key 'GMO Internet Group Inc.!noreply-dmarc-report@onamae-server.com!MAILDOMAIN2.jp'
[INFO] merge: 3 report(s), grouped by key 'Outlook.com!dmarcreport@microsoft.com!MAILDOMAIN1.jp'
[INFO] merge: 3 report(s), grouped by key 'Outlook.com!dmarcreport@microsoft.com!MAILDOMAIN2.jp'
[INFO] merge: 6 report(s), grouped by key 'docomo.ne.jp!reporting@dmarc25.jp!MAILDOMAIN1.jp'
[INFO] merge: 14 report(s), grouped by key 'docomo.ne.jp!reporting@dmarc25.jp!MAILDOMAIN2.jp'
[INFO] merge: 2 report(s), grouped by key 'Enterprise Outlook!dmarcreport@microsoft.com!MAILDOMAIN2.jp'
[INFO] merge: 3 report(s), grouped by key 'google.com!noreply-dmarc-support@google.com!MAILDOMAIN2.jp'
[INFO] merge: 3 report(s), grouped by key 'kddi.com!noreply-dmarc-support@kddi.com!MAILDOMAIN2.jp'
[INFO] output: write to file /tmp/html/2024-02-01-MAILDOMAIN2.jp/noreply-dmarc-report@onamae-server.com-MAILDOMAIN2.jp.1706713200.1706972400.html
[INFO] output: write to file /tmp/html/2023-09-13-MAILDOMAIN1.jp/dmarcreport@microsoft.com-90b60ff51c1f445e9cd39c89a2d24142.html
[INFO] output: write to file /tmp/html/2023-11-07-MAILDOMAIN2.jp/dmarcreport@microsoft.com-54d478dd0635467bb1a8bdef5d255916.html
[INFO] output: write to file /tmp/html/2023-08-04-MAILDOMAIN1.jp/reporting@dmarc25.jp-fa366f0cabde6f509867576c7841fec1.html
[INFO] output: write to file /tmp/html/2023-11-06-MAILDOMAIN2.jp/reporting@dmarc25.jp-8ae82ea25ef201478f0f2c2a28528c64.html
[INFO] output: write to file /tmp/html/2023-11-10-MAILDOMAIN2.jp/dmarcreport@microsoft.com-088ad042e9f8496f9c358c79a5be05bf.html
[INFO] output: write to file /tmp/html/2024-01-29-MAILDOMAIN2.jp/noreply-dmarc-support@google.com-14643523720959193815.html
[INFO] output: write to file /tmp/html/0001-01-01-MAILDOMAIN2.jp/noreply-dmarc-support@kddi.com-20240122035912061611.html
$

  • macOS独自の.DS_Storeファイルがスキップされているが問題ない.
  • [INFO]だけでエラーが出てないので無事レポートのコンバートができた模様.
  • 作成されがファイルを確認.

$ ls -la  /tmp/html/🆑
total 12
drwxr-xr-x  12 ujpadmin wheel  384  2  5 19:29 .
drwxrwxrwt   9 root    wheel  288  2  6 01:31 ..
-rw-r--r--   1 ujpadmin wheel 8196  2  6 01:51 .DS_Store
drwxr-xr-x   3 ujpadmin wheel   96  2  5 19:29 0001-01-01-MAILDOMAIN2.jp
drwxr-xr-x   3 ujpadmin wheel   96  2  5 19:29 2023-08-04-MAILDOMAIN1.jp
drwxr-xr-x   3 ujpadmin wheel   96  2  5 19:29 2023-09-13-MAILDOMAIN1.jp
drwxr-xr-x   3 ujpadmin wheel   96  2  5 19:29 2023-11-06-MAILDOMAIN2.jp
drwxr-xr-x   3 ujpadmin wheel   96  2  5 19:29 2023-11-07-MAILDOMAIN2.jp
drwxr-xr-x   3 ujpadmin wheel   96  2  5 19:29 2023-11-10-MAILDOMAIN2.jp
drwxr-xr-x   3 ujpadmin wheel   96  2  5 19:29 2024-01-29-MAILDOMAIN2.jp
drwxr-xr-x   3 ujpadmin wheel   96  2  5 19:29 2024-02-01-MAILDOMAIN2.jp
drwxr-xr-x 121 ujpadmin staff 3872  2  5 17:30 input
$




  • 生成されたHTMLファイルをWebブラウザで開くと,次のように表示される.
  • この最初のIPアドレスを調べると次のような結果となった.

  • やはりChina Unicomか...

広告スペース
Google