bounceHammer をインストールして送信エラーメール(バウンスメール)を分類する
アップルファンならだいたい注目している年1回のイベントWWDCでiOS 8とOS X Yosemiteの発表がありましたね。あまり詳細を見てないのですがiOS/OS Xアプリ用の新しいプログラミング言語Swiftと、サードパーティ製IMEの登場に注目してます。
今日は、送信エラーメール対策が必要になったときのためにbounceHammerをインストールして試してみましたので概要とインストールレポートとしてまとめます。
bounceHammer の概要
bounceHammer はメールを送信したが相手サーバから戻ってきたメール(バウンスメール)を解析・分類するソフトウェアです。株式会社キュービックルートさんがリリースしているOSSで日本の携帯キャリアからのバウンスメールにも対応しています。 ライセンスはGNU GPL v2 または Artistic License の択一ライセンスです。 バウンスメールはメッセージが英語だったり、配送元がどのメール配送ソフトを使っているかでメッセージが異なっていたりするのですが、bounceHammerはその違いを知った上で「配送不能」や「フィルタによる拒否」に分類してくれます。
bounceHammer でいいと思ったところ
インストールするだけでWebブラウザから以下のように状況が見られるようになっています。(公式サイトが用意しているデモ画面です)
実際の画面はbounceHammer/ダッシュボードで見られます。
他にも差し戻し理由や差し戻し元ドメインで分類表示してくれるので、バウンスメールの概要を把握するのに便利なソフトです。
インストール
bounceHammerはドキュメントが充実しているので、今回はそのとおりにインストールしてみて引っかかったところについてまとめておきます。
環境情報
- さくらのVPS
- CentOS 6.5
- remi, remi-php55 リポジトリを有効にしている
yum でのインストールはサポートされてないようですが、ドキュメントが充実しているのでそれに従ってインストールします。
1.アーカイブの入手
問題なし。
2.必要なPerlモジュールを入れる
Perlモジュールも極力yumでインストールしたかったですがないものもあるので、ドキュメントの記述通りcpanmを使います。モジュールは /usr/local/bouncehammer/lib/perl5 にインストールされるので、他のソフトに影響を与えない配慮がされているようです。
インストールする必要があるPerlモジュールをチェック
sudo -s
cd /usr/local/src/bouncehammer-2.7.12
export PERL5LIB=/usr/local/bouncehammer/lib/perl5
perl ./Modules.PL missing
*[ NG ] Class::Accessor::Fast::XS
*[ NG ] Term::ProgressBar
*[ NG ] Time::Piece
*[ NG ] Path::Class::File::Lockable
*[ NG ] CGI::Application
*[ NG ] Email::AddressParser
*[ NG ] CGI::Application::Dispatch
*[ NG ] CGI::Application::Plugin::Session
*[ NG ] Text::ASCIITable
*[ NG ] Perl6::Slurp
*[ NG ] DBIx::Skinny
*[ NG ] Crypt::DES
*[ NG ] CGI::Application::Plugin::TT
*[ NG ] JSON::Syck
*[ NG ] Test::More
*[ NG ] Crypt::CBC
*[ NG ] CGI::Application::Plugin::HTMLPrototype
*[ NG ] Path::Class
perl ./Modules.PL missing | cut -d' ' -f4 | cpanm -L \
> /usr/local/bouncehammer
bash: cpanm: コマンドが見つかりません
/usr/local/bin にパスが通ってませんでした。以後フルパスで進めていきます。
perl ./Modules.PL missing | cut -d' ' -f4 | /usr/local/bin/cpanm -L /usr/local/bouncehammer
==> Found dependencies: ExtUtils::MakeMaker, ExtUtils::Install
--> Working on ExtUtils::MakeMaker
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-6.98.tar.gz ... OK
Configuring ExtUtils-MakeMaker-6.98 ... N/A
Can't locate ExtUtils/Manifest.pm in @INC (@INC contains: CODE(0x1ded4e8) /usr/local/bouncehammer/lib/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /loader/0x1ded4e8/App/cpanminus/script.pm line 99.
ExtUtils-MakeMaker というモジュールがインストールできませんでしたので、yumで入れてみます。
yum install -y perl-ExtUtils-MakeMaker
(略)
Installed:
perl-ExtUtils-MakeMaker.x86_64 0:6.55-136.el6
Dependency Installed:
db4-cxx.x86_64 0:4.7.25-18.el6_4
db4-devel.x86_64 0:4.7.25-18.el6_4
gdbm-devel.x86_64 0:1.8.0-36.el6
perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-136.el6
perl-Test-Harness.x86_64 0:3.17-136.el6
perl-devel.x86_64 4:5.10.1-136.el6
Complete!
perl ./Modules.PL missing | cut -d' ' -f4 | /usr/local/bin/cpanm -L /usr/local/bouncehammer
Can't locate Module/CoreList.pm in @INC (@INC contains: CODE(0x21b54e8) /usr/local/bouncehammer/lib/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /loader/0x21b54e8/App/cpanminus/script.pm line 96.
CoreList というモジュールもyumでインストールします。
yum install perl-Module-CoreList
(略)
Installed:
perl-Module-CoreList.x86_64 0:2.18-136.el6
Complete!
perl ./Modules.PL missing | cut -d' ' -f4 | /usr/local/bin/cpanm -L /usr/local/bouncehammer
(略)
100 distributions installed
perl ./Modules.PL missing
*[ NG ] Class::Accessor::Fast::XS
*[ NG ] CGI::Application
*[ NG ] CGI::Application::Dispatch
*[ NG ] CGI::Application::Plugin::Session
*[ NG ] CGI::Application::Plugin::TT
*[ NG ] CGI::Application::Plugin::HTMLPrototype
まだ入ってないモジュールが…?もう一度インストールを試してみます。
perl ./Modules.PL missing | cut -d' ' -f4 | /usr/local/bin/cpanm -L /usr/local/bouncehammer
(略)
9 distributions installed
perl ./Modules.PL missing
(出力なし)
全部インストールされたようです。ダウンロードに失敗したのか、元々インストールに2段階踏む必要があったのかもしれません。
DBD, DBI::MySQL についてはmysql-serverパッケージをインストールすると依存パッケージとして入る
yum install --enablerepo=remi --enablerepo=remi-php55 mysql-server
(略)
Installed:
mysql-server.x86_64 0:5.5.37-1.el6.remi
Dependency Installed:
perl-DBD-MySQL.x86_64 0:4.013-3.el6 perl-DBI.x86_64 0:1.609-4.el6
Complete!
3. 構築の準備(./configure)
問題なし
4.構築とインストール(make)
問題なし
5. データベースの準備
mysql-serverをインストールしました。
yum install --enablerepo=remi --enablerepo=remi-php55 mysql-server
chkconfig mysqld on
chkconfig --list mysqld
service mysqld start
mysqlのパスを/usr/bin/mysql にした以外は問題ありませんでした。
7. 設定ファイルbouncehammer.cfの作成
- で設定したMySQLの設定を記述 問題なし
8. WebUI設定ファイルwebui.cfの作成
language を ja に。
11. 管理画面(WebUI)の準備
cd /var/www/
mkdir -p vhosts/bouncehammer/public_html
cd /usr/local/bouncehammer/share/script
chmod a+x /var/www/vhosts/bouncehammer/public_html/index.cgi
apacheの設定は /usr/local/bouncehammer/etc/httpd.conf-example を修正して設置します。(省略)
まとめ
今回はbounceHammerの紹介とインストールレポートをお届けしました。このあと、バウンスメールを自動的に分類するには、メールデータを取得する方法を自動化する必要があります。次回fetchmailとprocmailを使った方法を紹介したいと思います。(分析そのものはWeb画面からメールボックスをアップロードしたり、メールの本文をペースト・送信することでも可能です。)