Hina-Mode

とある呑んだくれエンジニアの気が向いた時に書く戯言

AWSにBounceHammerをインストールする

ググったけど有用な記事が見つからなかったので自分で頑張っていれてみた。
結果ちょこっとばかしハマってしまったので記載。
メールサーバをAWSで自作していて、バウンスメールの解析をしたくなったので、ついやってみた。

ちなみにBounceHammerとはオープンソースのバウンスメール集積ソフトです。

bounceHammer | an open source software for handling email bounces

AMIはAmazon Linux, 2014/7月頃に立ち上げた時点で最新でしたがyum updateしてなかったんで色んなモノが古いので厳密にこうだ、という保証はないです。念のため。

手順書

$ su
$ yum install -y perl-core gcc
$ cd /usr/local/bin
$ wget -O- 'http://cpanmin.us/' > ./cpanm
$ chmod +x ./cpanm
$ cd /usr/local/src
$ wget http://dist.bouncehammer.jp/bouncehammer-2.7.12.tar.gz
$ tar xfz bouncehammer-2.7.12.tar.gz
$ export PERL5LIB=/usr/local/bouncehammer/lib/perl5
$ mkdir -p /usr/local/bouncehammer
$ cd bouncehammer-2.7.12
$ perl ./Modules.PL missing | cut -d' ' -f4 | cpanm -l /usr/local/bouncehammer
# テストエラーで入らなかったモジュールを強制追加
$ cpanm -l /usr/local/bouncehammer/ --force DBIx::Skinny
# WARNになっているモジュールのupdate
$ cpanm -l /usr/local/bouncehammer Getopt::Long
$ ./configure --disable-webui --with-perl-extlib=/usr/local/bouncehammer/lib/perl5
$ make
$ make test
$ make install
$ cp /usr/local/bouncehammer/etc/bouncehammer.cf-example /usr/local/bouncehammer/etc/bouncehammer.cf

無駄な事してる部分もあるかもしれませんが、一応これでインストール出来ました。
事前にperl-coreもそうなんですが、gccが入ってないとperl系のライブラリをcpanmでインストールするときにコンパイルできないでインストール中断していまイます。
※そもそもgccが入ってないことに全く気づかなかった自分がアホといえばアホなのですが。。。

あと、BounceHammer公式ではcpanmに渡すのは-Lオプションにしていますが、一応-lオプションに切り替えています。

cpanm - CPANからモジュールを取得、アンパック、インストールする - perldoc.jp

上記でオプションの意味を調べたのですが、-Lだとperl-coreを先にyum installしても、
「コアでない依存が、それらがインストール済みであっても、 インストールされ」るみたいです。
ExtUtilsなんかが該当して、最初何回cpanmにモジュールリストをわたしても依存関係を解決できずにインストールをスキップしていました。


何かの参考になれば幸いです。