postal
postal というソフトで SMTP のベンチマークを取ろうかなと考えているので,そのための個人的メモ.手元では 0.62.1 しか make が通らない.(← gcrypt.h にパッチ当てたら通った)
と言っても,ベンチマークを取るの自体が目的ではなく,それなりに負荷をかけて,対象となる環境がどれぐらい使えるものか?を評価するのが目的.テスト環境にはウィルスチェックゲートウェイと SpamAssassin が入っているので,それなりにメールを送ってやれば,それなりに負荷も高まるだろう,といういい加減な判断.
man によると
postal [-m maximum-message-size] [-p processes] [-c messages-per-connection] [-r messages-per-minute] [-s ssl-percentage] [-l local-address] [-a] [-b [no]netscape] [-[z|Z] debug-file] smtp-server user-list-filename conversion-filename
という使い方."-p" は最新 (0.67) では "-t" となって threads となってます.
以下は man をテキトーに抜粋して翻訳 (誤訳かも? :-p).
- smtp-server
- は文字通り SMTP サーバのアドレス.ここで指定したホストにたいして,直接 SMTP で通信を行いにいきます.25番ポート以外の場合は [hostname]1025 のように括弧でくくった後にポート番号を書きます(未検証).接続のたびに DNS の名前解決をするのなら (ラウンドロビンのテスト等) ホスト名の前に "+" を付けます (+hostnameみたいな)(未検証).カンマ区切りで複数のサーバを指定可能.
- user-list-filename
- は,送信する先のアドレスのリストで,単に 1 行に 1 アドレスを書いたテキストファイルを用意して,ここでファイル名を指定します.機械的に生成するアドレスなんかだと,ここにベースとなるアドレスだけ書いておいて,後で指定する conversion-filename で置換ルールなんかを指定して,アドレスを生成させることも可能です.
- conversion-filename
- 先に述べたように,user-list-filename で指定した中身に対して置換などを行う場合のルールを書きます.1 行にスペース区切りで 2 つの文字列を書きます.その1行の1つ目のフィールド文字列は正規表現です.この正規表現に当てはまるものにたいして,2 つ目の命令のように置換を行います.2 つ目の文字列は,置換したくない文字は "."(ピリオド) で表し,置換する文字の部分は文字の集合を指定します.例えば "userx@example.com" とユーザリストファイルに書いたとして,"^user ....[0-9]" と書くと,"user0@example.com", "user1@example.com", ... , "user9@example.com" と 10 個のアドレスに変換されます.(これも 0.65 以降なくなっているような)
- maximum-message-size
- KByte表記のメッセージの最大サイズ.送信されるメッセージは 0 からここで指定したサイズの間のサイズがランダムに選ばれます.もし,コネクションレートの測定が目的であれば,0 を指定すればヘッダだけが送られます (本文なし).デフォルトは 10.
- processes
- 同時に起動するプロセスの数.デフォルトは 1.デフォルト値はテストのパラメータとしては不適当なので,サーバの設定に合わせて適当な数を指定すること.複数サーバに対するテストでは,ここの数はサーバ毎の数となる.
- messages-per-connection
- 1 つの SMTP 接続でメッセージをいくつ送るか.デフォルトは 1."-1" を指定すると,非常に大きな数のメッセージを送る(~4 billion).
- messages-per-minute
- 文字通り 1 分の間に何通のメッセージを送るか.スループット.デフォルトだと 24000 メッセージ程度は送れるので,負荷を軽減したい場合に使う.
- local-address
- 外部接続の際に使用するローカル(IP)アドレスの指定.
- -a
- すべてのメッセージのロギング.
- -s
- SSL接続の割合を指定する.0 で SSL は使わない.デフォルトは 0.
- -z
- デバッグ出力のファイルのベース.実際のファイル名はここで指定した名前に ":" を付けて,スレッドの番号が付加される (なのでスレッド毎に出力ファイル).
- -Z
- コネクション毎にデバッグ出力ファイルを作成.これも ":" + コネクション ID (って何? ^^;)