メール・サーバー用ベンチマーク・ツール Postal
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
コマンドライン・パラメーターを使って送信者アドレスを列挙したファイルの名前を指定する。
rabid
postalコマンドが電子メールを送信するためのプログラムだったのに対し、rabidコマンドはそれを取り出すプログラムだ。したがって、コマンドライン・パラメーターの中にはpostalのパラメーターに類似したものがある。1分間の接続数の上限を指定し電子メールを取り出す頻度を一定に保つ-r
。生成するrabidプロセスの数を指定し同時に複数のアカウントの新着電子メールを調べるための-p
。SSLを使って電子メールを取り出す数を指定する-s
。パラメーターにはこのほか、POPサーバーのアドレス、新着電子メールの有無を調べるアカウントを列挙したファイルの名前がある。このファイルの内容はpostalの場合とほぼ同じだが、列挙した各アカウントにはそのアカウントの電子メールを取り出すためのパスワードも指定する(区切りは空白1つ)。なお、このPOPパスワードを含むrabid用ファイルはpostalコマンドでも使うことができる。この場合、postalはパスワードを無視し、各行の始めにある電子メール・アドレスだけを使用する。
たとえば、SSL接続上のPOPを使って2つのアカウントを調べる場合の例を下に示す。-u
オプションを付けると各アカウントのメール・アドレスのユーザー名部分だけが使われるのだが、このオプションを指定しben@localhostのような電子メール・アドレスを使うと認証で問題が発生した。このとき、ファイルの各行から@localhost
を削除すると正常に認証される。ここで、例で使われているオプションについて説明しておこう。-r 5
はメールを取り出すための接続を1分間5回に制限する。-p 2
はプロセスを2本生成し2つのアカウントから同時に電子メールをダウンロードできるようにする。-s 100
はすべての接続にSSLを用いることを指示する。
ポートの指定はhostname:port
とするのが通例だが、このツールではこれと異なり、ホスト名を角括弧で囲みその直後にポート番号を書く。user-list-filename.rabidの各行は、先頭部分はuser-list-filenameと同じだが、その後に空白を1つ置き、そのアカウントの電子メールを取り出すためのPOPパスワードを指定する。
# cat user-list-filename.rabid ben password1 toast password2 # rabid -r 5 -p 2 localhost user-list-filename.rabid time,messages,data(K),errors,connections,SSL connections,IMAP connections ... # rabid -r 5 -p 2 -s 100 [localhost]995 user-list-filename.rabid
postalで生成したメッセージ本文とrabidで取り出したメッセージ本文は一致するはずだが、rabidのメッセージ本文が壊れている例が多数あった。環境は、ほぼ標準的なFedora 8インストール、sendmailバージョン8.14.1-4.2.fc8、uw-imapバージョン2007b-1.fc8だ。原因は現在調査中。
... MD5 mis-match, calculated:bb2e26c3312af5df15615f71ec5fa0bd, expected e42c889641ffdf348ae20d8c8d055dd2! Account name ben ...
Black Hole Mailerプログラムは、メーリングリスト・サーバーの性能を測定する場合など、多数の宛先に送られた電子メールの処理状況を調べるのに便利だ。
まとめ
メール・サーバーの負荷がかなり重い場合に、サーバーの構成を変えて実験したいときや、ハードウェアの増強でパフォーマンスが見込みどおり改善するかどうかを調べたいときなどにpostalは便利だ。電子メールの生成や取得の頻度を指定することができるので、電子メール・サーバーのパフォーマンスに影響するシステムのいろいろな側面について実験することができる。たとえば、サーバーサイド・スパム・フィルタリングのために送られてきた電子メールが拒否されてしまう可能性を調べることができる。
Ben Martin 10年以上にわたってファイルシステムを研究。博士課程を修了し、現在、libferris、ファイルシステム、検索ソリューションを中心にコンサルティングをしている。