Open DMARC Analyzer + Open Report ParserをCentOSにインストール→諦めた
毎日送られてくるDMARCレポートを可視化したいと調査しているときの覚書。
環境: CentOS Stream 9, Nginx 1.22.1, PHP 8.1.14, MariaDB Server 10.5.16
オープンソースのOpen DMARC Analyzerをインストールしてみた。
1.Open DMARC Analyzerをインストール
GitHubの公式Readmeを参考に。
適当な場所にcloneする。
# cd /home/httpd/httpdocs/
# git clone https://github.com/userjack6880/Open-DMARC-Analyzer.git
# cd Open-DMARC-Analyzer/
config.phpを設定する。
# cp config.php.pub config.php
# less config.php
phpMyAdminで接続用ユーザーを作成して設定する。
これでブラウザからinstall.phpにアクセスしてみる。
http://vm-dev1/Open-DMARC-Analyzer/install.php
エラー
connecting to database... success
opening file... success
→ CREATE VIEW IF NOT EXISTS report_stats AS (
→ SELECT
→ report.serial, domain, rcount, disposition, reason,
→ policy_p, policy_pct, dkimdomain, dkimresult, dkim_align,
→ spfdomain, spfresult, spf_align, mindate, maxdate
→ FROM report RIGHT JOIN rptrecord
→ ON report.serial=rptrecord.serial
→ );
performing query... failed: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dmarc.report' doesn't exist
Open Report Parserのインストールが必要らしい。
2.Open Report Parserをインストール
本当はこっちを先にインストールするべき。
epelはインストール済み。
公式サイトに従って必要なライブラリをインストールする。
# dnf install perl-File-MimeInfo perl-Mail-IMAPClient perl-MIME-tools perl-XML-Simple perl-DBI perl-Socket6 perl-PerlIO-gzip perl-libwww-perl unzip
cloneする。
# cd /home/httpd/httpdocs/
# git clone https://github.com/userjack6880/Open-Report-Parser.git
# cd Open-Report-Parser
設定ファイルを編集する。
# cp report-parser.conf.pub report-parser.conf
# less report-parser.conf
データベースの設定はOpen-DMARC-Analyzerと合わせる。
dmarc用の新しいメールアドレスを作成した。
さくらのメールボックスのIMAP設定方法は公式ヘルプを参考に。
参考: メールソフトの一般的な設定をしたい | さくらのサポート情報
$imapserver = 'imap.server';$imapuser = 'dmarc@hoge.jp';$imappass = 'password';$imapport = '993';$imapssl = '1'; # If set to 1, remember to change server port to 993 and disable imaptls.$imaptls = '0';$tlsverify = '0';
確認のためにOutlookにもアカウントを追加した。
参考: Outlook 2019 / 2021 または Office365 の設定をしたい | さくらのサポート情報
実行してみる。
# ./report-parser.pl
エラー
Can't locate Mail/Mbox/MessageParser.pm in @INC (you may need to install the Mail::Mbox::MessageParser module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./report-parser.pl line 71.BEGIN failed--compilation aborted at ./report-parser.pl line 71.
モジュールがあるか検索してそれらしいのをインストール。
# dnf search perl-Mail
# dnf search "message par"
# dnf install perl-Mail-Message perl-Email-MIME
実行してみる。
# ./report-parser.pl
同じエラー。
分からん。
検索するとソースコードは見つかった。
- Mail::Mbox::MessageParser - A fast and simple mbox folder reader - metacpan.org
- coppit/mail-mbox-messageparser: A fast and simple Perl mbox folder reader
試しにビルドしてみる。
# cd /opt/software/
# curl -O https://cpan.metacpan.org/authors/id/D/DC/DCOPPIT/Mail-Mbox-MessageParser-1.5111.tar.gz
# tar -xzvf Mail-Mbox-MessageParser-1.5111.tar.gz
# cd Mail-Mbox-MessageParser-1.5111/
# perl Makefile.PL
Can't locate FindBin.pm in @INC (you may need to install the FindBin module) (@INC contains: . private-lib /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at inc/Module/Install.pm line 236.BEGIN failed--compilation aborted at Makefile.PL line 9.
必要なモジュールを検索してインストール。
# dnf search FindBin
# dnf install perl-FindBin perl-ExtUtils-MakeMaker
再度Makefileする。
# perl Makefile.PL
# make
# make test
# make install
Manifying 6 pod documentsInstalling /usr/local/share/perl5/5.32/Mail/Mbox/MessageParser.pmInstalling /usr/local/share/perl5/5.32/Mail/Mbox/MessageParser/Grep.pmInstalling /usr/local/share/perl5/5.32/Mail/Mbox/MessageParser/Cache.pmInstalling /usr/local/share/perl5/5.32/Mail/Mbox/MessageParser/Config.pmInstalling /usr/local/share/perl5/5.32/Mail/Mbox/MessageParser/MetaInfo.pmInstalling /usr/local/share/perl5/5.32/Mail/Mbox/MessageParser/Perl.pmInstalling /usr/local/share/man/man3/Mail::Mbox::MessageParser.3pmInstalling /usr/local/share/man/man3/Mail::Mbox::MessageParser::Cache.3pmInstalling /usr/local/share/man/man3/Mail::Mbox::MessageParser::Config.3pmInstalling /usr/local/share/man/man3/Mail::Mbox::MessageParser::Grep.3pmInstalling /usr/local/share/man/man3/Mail::Mbox::MessageParser::MetaInfo.3pmInstalling /usr/local/share/man/man3/Mail::Mbox::MessageParser::Perl.3pmAppending installation info to /usr/lib64/perl5/perllocal.pod
Open-Report-Parserに戻って実行。
# cd /home/httpd/httpdocs/Open-Report-Parser/
# ./report-parser.pl
Can't locate FileHandle/Unget.pm in @INC (you may need to install the FileHandle::Unget module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /usr/local/share/perl5/5.32/Mail/Mbox/MessageParser.pm line 6.BEGIN failed--compilation aborted at /usr/local/share/perl5/5.32/Mail/Mbox/MessageParser.pm line 6.Compilation failed in require at ./report-parser.pl line 71.BEGIN failed--compilation aborted at ./report-parser.pl line 71.
モジュールを検索してインストール。
# dnf search FileHandle
# dnf install perl-FileHandle
# ./report-parser.pl
同じエラー。
ソースコードを見つけたので同じようにビルドしてみる。
- FileHandle-Unget-0.1634 - FileHandle which supports multi-byte unget - metacpan.org
- coppit/filehandle-unget: A Perl FileHandle which supports ungetting of multiple bytes
# cd /opt/software/
# curl -O https://cpan.metacpan.org/authors/id/D/DC/DCOPPIT/FileHandle-Unget-0.1634.tar.gz
# tar -xzvf FileHandle-Unget-0.1634.tar.gz
# cd FileHandle-Unget-0.1634/
# perl Makefile.PL
# make
# make test
# make install
Manifying 1 pod documentInstalling /usr/local/share/perl5/5.32/FileHandle/Unget.pmInstalling /usr/local/share/man/man3/FileHandle::Unget.3pmAppending installation info to /usr/lib64/perl5/perllocal.pod
Open-Report-Parserに戻って実行。
# cd /home/httpd/httpdocs/Open-Report-Parser/
# ./report-parser.pl
Can't locate JSON.pm in @INC (you may need to install the JSON module) (@INC contains: /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./report-parser.pl line 77.BEGIN failed--compilation aborted at ./report-parser.pl line 77.
モジュールを検索してインストール。
このあと同じようなエラーでインストールしたのをまとめた。
# dnf search JSON
# dnf install perl-JSON perl-LWP-Protocol-https perl-Time perl-Time-Piece perl-DBD-MySQL
# ./report-parser.pl
動いた。
取得してみる。
# ./report-parser.pl -i
エラー。
report-parser.confで$debug = 1;にしてみてもよくわからない。
メールサーバーにはアクセスできているみたい。
時間切れで諦めた。