オープンソースのバウンスメール解析システム BounceHammer

この記事を読むのに必要な時間:およそ 6.5 分

BounceHammerの構築と設定

BounceHammerの動作環境

BounceHammerの動作環境は次のとおりです。動作環境に関する詳細はhttp://bouncehammer.jp/environmentをご覧ください。

  • *BSD,MacOSX,LinuxなどUNIX互換OS
  • Perl5.8.1以上といくつかのPerlモジュール
  • PostgreSQL,MySQL,SQLite3のいずれか

ライセンスはGPLv2またはPerlライセンスのどちらかで,2010年12月時点での最新版は2.6.2です。

BounceHammerの導入

本項では,図4(BounceHammerを組み込んだ一般的な構成例)のような構成のネットワークにBounceHammerを組み込むことを前提とします。自社ドメインexample.jpのMXであるsmtp.example.jp(192.0.2.25)で受け取ったバウンスメールをaliasesでBounceHammerをインストールしたホストbh.example.jp(172.16.0.49)に転送し,解析結果をデータベースdb.example.jp(172.16.0.54)に蓄積するものとします。

図4 BounceHammerを組み込んだ一般的な構成例

図4 BounceHammerを組み込んだ一般的な構成例

なお図4のネットワークは,192.0.2.0/24をグローバルIPアドレスとして,172.16.0.0/24をプライベートIPアドレスとして扱っています。本稿では紙幅の都合上,構築方法の詳細まで説明できていませんので,導入する場合は,http://bouncehammer.jp/setup/installもご覧ください。

BounceHammerの構築

BounceHammerはconfigureを使って構築します。configureをオプションなしで実行すると,インストール先は/usr/local/bouncehammerになります。また複数のバージョンのPerlをインストールしている場合,BounceHammerを動かすためのPerlを--with-perlで明示的に指定できます。おそらく,ほとんどのサーバでBounceHammerが必要とするPerlモジュールがすべて揃っていることはないでしょう。

図5のように,configureを実行した時にエラーメッセージとともに表示されるモジュールをインストールして,再度同じオプションでconfigureを実行してください。必要なモジュールは,ソースアーカイブ同梱のModules.PLでも確認できます。必要なモジュールの他に,使用するデータベース用モジュール注8も忘れずにインストールしてください。

図5 足りないモジュールをインストールしてconfigureを実行

root@172.16.0.49 # ./configure --with-perl=/usr/local/bin/perl
...
*** THE FOLLOWING PERL MODULES ARE REQUIRED ***

Class::Accessor::Fast::XS
Time::Piece
Term::ProgressBar

configure: error: *** 17 perl modules are missing

root@172.16.0.49 # cpan Class::Accessor::Fast::XS Time::Piece
↑足りないモジュールをインストール

root@172.16.0.49 # ./configure --with-perl=/usr/local/bin/perl
↑モジュールをインストール後,もう一度configureを実行
root@172.16.0.49 # make
root@172.16.0.49 # make test ←少し時間がかかります
root@172.16.0.49 # make install
注8)
DBD::Pg,DBD::mysql,DBD::SQLiteのいずれかです。

BounceHammerの設定

データベースの準備

空のデータベースを作る

次にバウンスメールの解析結果データ蓄積用のデータベースを準備します。データベースはPostgreSQL,MySQL,SQLiteに対応しています。図6はユーザ作成とデータベース作成の実行例です。

図6 空のデータベースを作成

postgres@172.16.0.54< createuser bouncehammer
postgres@172.16.0.54< createdb -Obouncehammer bouncehammer
postgres@172.16.0.54< psql -U postgres

postgres=# ALTER USER bouncehammer password '794-uguisu-heiankyo';
ALTER ROLE
テーブル作成と基本データ登録

続いて必要なテーブルの作成を行います。BounceHammerをインストールしたホスト172.16.0.49からデータベースホスト172.16.0.54へのアクセス権限は必要に応じて設定してください。テーブル作成用のSQLファイルはBounceHammerインストール先のshare/scriptにそれぞれ入っていますので,図7を参考にしてください。

図7 PostgreSQLでテーブル作成

root@172.16.0.49 # cd /usr/local/bouncehammer/share/script
root@172.16.0.49 # cat PostgreSQL*.sql mastertable*.sql records-example.sql | \
< psql -U bouncehammer -d bouncehammer -h 172.16.0.54 ←実際は1行

設定ファイルの準備

bouncehammer.cf

bouncehammer.cfはBounceHammerの基本設定ファイル(YAML形式)で必須です。図8の操作でサンプルファイルをコピーして,使用するデータベースにあわせてリスト1のように編集します。データベースの項目以外は,とくに編集する必要はありません。

図8 bouncehammer.cfの準備

root@172.16.0.49 # cd /usr/local/bouncehammer/etc
root@172.16.0.49 # cp ./bouncehammer.cf-example ./bouncehammer.cf

リスト1 bouncehammer.cfの編集個所

database:
dbtype: 'PostgreSQL' ←データベースソフトウェアに合わせる
dbname: 'bouncehammer' ←作成したデータベース名を記述
username: 'bouncehammer' ←作成したデータベースのユーザ名を記述
password: '794-uguisu-heiankyo' ←設定したパスワードを記述
hostname: '172.16.0.54' ←データベースが動いているホスト名またはIPアドレスを記述
port: 5432 ←PostgreSQLがListenしているポート番号を指定
webui.cf

続いてWebブラウザベースの管理画面(WebUI)用の設定ファイルを準備注9します。準備は図9のようにコピーするだけです。WebUIもHTTPベースのAPIも使用しない場合は,このファイルは不要です。

図9 webui.cfの準備

root@172.16.0.49 # cd /usr/local/bouncehammer/etc
root@172.16.0.49 # cp ./webui.cf-example ./webui.cf
注9)
configureスクリプトに--disable-webuiを付けて,BounceHammerを構築/インストールした場合は,この設定ファイルはインストールされていません。

著者プロフィール

東邦之(あずまくにゆき a.k.a azumakuniyuki)

立命館大学大学院中退後,PCインストラクター(Windows),インフラエンジニア(LANケーブル作成からサーバ設置,FirewallやVPNなどなんでも),サーバ管理者(主にDNSとSendmail)を経験。コンテンツプロバイダを退職後,2008年に(株)Cubicrootを設立し,バウンスメール解析システムbouncehammerを開発,公開。普段はVimで開発し,LaTeXで文書を書いています。よく使う言語はPerl,R,sendmail.cf。

バックナンバー

メール

  • オープンソースのバウンスメール解析システム BounceHammer

コメント

コメントの記入