メール・サーバー用ベンチマーク・ツール Postal

 Postalプロジェクトが提供するスイートには、メール・サーバーのパフォーマンスを測定するためのプログラムが3本含まれている。その中心となるのは、指定された頻度で指定された宛先リストに電子メールを送るプログラムpostalだ。これを利用すると送られてきた電子メールを処理する速度がわかり、したがってメール・サーバーの強化に先だってソフトウェアやハードウェアの変更によって得られる改善の程度を知ることができる。たとえば、現状のハードウェアのままでIMAPサーバーを変更したとき1秒間に処理可能な電子メール通数が向上するかどうかを予測することができる。

 Postalスイートには、このほか、指定された頻度でメール・サーバーにポーリングし新着電子メールを取り出すPOPクライアントrabidと、送られてきた電子メールをすべて破棄するサーバーとして機能するBlack Hole Mailer(bhm)がある。

 PostalのパッケージはUbuntu Hardy用のものはあるが、FedoraやopenSUSE用はない。そこで、Postalバージョン0.70のソースを使って64ビットFedora 8マシン上でビルドした。手順は通常の「./configure; make; sudo make install」。コンパイルで問題が発生したが、configureオプションに--disable-gnutlsを付けることで解消した。

 postalコマンドの主なパラメーターは4つ、電子メールの宛先を列挙したファイルの名前、電子メールの送信者のアドレスを列挙したファイルの名前(-f)、送信先SMTPサーバーのアドレス、SSLを使って送信する割合(-s 0)だ。補助的なパラメーターとして、起動するスレッドの数(-t 1)、送信する電子メールのサイズ(KB単位)の最小値と最大値(それぞれ-m 10-M 0)、1分間に送信する電子メールの目標通数(-r 24000)がある。

 たとえば、スレッドを2本立て、localhost上のメール・サーバーに、同じマシン上の2つのアドレスを宛先とする電子メールを1分間に30通の頻度で送る場合の例を以下に示す。まず電子メール通数を少なく設定してメールボックスと正常動作を確認する。確認できたら、1分間の電子メール通数を指定する-rパラメーターの値を増やして、SMTPサーバーへの負荷を上げる。コンソールには送信されたデータ量と、正常処理またはエラーとなった電子メール通数が表示される。後者の数字が重要だ。表示は1分ごとに更新される。

# cat user-list-filename
ben@localhost
toast@localhost
# postal -t 2 -r 30  localhost user-list-filename
time,messages,data(K),errors,connections,SSL connections
22:07,2,16,0,4,0
22:08,30,164,0,30,0
22:09,30,149,0,30,0

 コマンドが生成する電子メールのメッセージ本文はランダムなものだが、末尾にMD5:という文字列とメッセージ本文のmd5チェックサムが付く。したがって、これを使ってメール・サーバーが電子メールを正常に処理したかどうかを調べることができる。上の例の場合、電子メールはlocalhost上のbenとtoastから同じ2人に送られる。単にシステムが処理可能な電子メール負荷を見たいだけの場合は、このように送信者と宛先に同じリストを使っても問題はない。送信者リストを別途指定したい場合は、-fコマンドライン・パラメーターを使って送信者アドレスを列挙したファイルの名前を指定する。