bounceHammer をインストールして送信エラーメール(バウンスメール)を分類する

bounceHammer をインストールして送信エラーメール(バウンスメール)を分類する

アップルファンならだいたい注目している年1回のイベントWWDCでiOS 8OS X Yosemiteの発表がありましたね。あまり詳細を見てないのですがiOS/OS Xアプリ用の新しいプログラミング言語Swiftと、サードパーティ製IMEの登場に注目してます。

今日は、送信エラーメール対策が必要になったときのためにbounceHammerをインストールして試してみましたので概要とインストールレポートとしてまとめます。

bounceHammer の概要

bounceHammer はメールを送信したが相手サーバから戻ってきたメール(バウンスメール)を解析・分類するソフトウェアです。株式会社キュービックルートさんがリリースしているOSSで日本の携帯キャリアからのバウンスメールにも対応しています。 ライセンスはGNU GPL v2 または Artistic License の択一ライセンスです。 バウンスメールはメッセージが英語だったり、配送元がどのメール配送ソフトを使っているかでメッセージが異なっていたりするのですが、bounceHammerはその違いを知った上で「配送不能」や「フィルタによる拒否」に分類してくれます。

bounceHammer でいいと思ったところ

インストールするだけでWebブラウザから以下のように状況が見られるようになっています。(公式サイトが用意しているデモ画面です)

20140605_tanaka_bouncehammer02.png

実際の画面はbounceHammer/ダッシュボードで見られます。

他にも差し戻し理由や差し戻し元ドメインで分類表示してくれるので、バウンスメールの概要を把握するのに便利なソフトです。

インストール

bounceHammerはドキュメントが充実しているので、今回はそのとおりにインストールしてみて引っかかったところについてまとめておきます。

環境情報

  • さくらのVPS
  • CentOS 6.5
  • remi, remi-php55 リポジトリを有効にしている

yum でのインストールはサポートされてないようですが、ドキュメントが充実しているのでそれに従ってインストールします。

bounceHammer のインストール

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の作成

  1. で設定した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画面からメールボックスをアップロードしたり、メールの本文をペースト・送信することでも可能です。)

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ