DMARCレポートを分析するdmarc-report-converterをmacOS Montereyにインストール
概要
更新履歴
- 2024/02/05 初版
目次
- 概要
事前準備
- GO言語をインストールする
- DMARCレポート保存用ディレクトリを作成
- ソースコードを入手する
- makeする
- make testを実行しGO言語のstaticcheckをインストールする
- make installを実行する
dmarc-report-converterを実行する
はじめに
このドキュメントは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を実行するときに利用するものとのこと.
- よって今回は関係なし.
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か...