## milter-performance-check milter-performance-check — MTAのパフォーマンスを計るプログラム |

## 名前

milter-performance-check - MTAのパフォーマンスを計るプログラム

## 書式

`milter-performance-check` [ オプション ... ]

## 説明

milter-performance-checkはMTAの性能を計測するSMTPクライアントです。milter-test-serverでmilterのみの性能を計測し、milter-performance-checkでMTAとmilterを合わせた性能を計測するという住み分けです。

同様のツールにはPostfix付属のsmtp-sourceがあります。どちらも、同時に複数のSMTPセッションを張って一斉にメールを送信することができます。機能的にはsmtp-sourceの方が高機能です。

milter-performance-checkが便利なのはSMTPセッションの時間のみを計測してくれることです。smtp-sourceではtimeコマンドと組み合わせるなどして、smtp-source全体の実行時間を計測します。

実際は、SMTPセッションの時間のみでも、ツール全体の実行時間でもそれほど違いはでないと思います。また、テスト用のメール総数を多くすればするほど、SMTPセッションにかかる時間が大きくなり、ツール自体の実行時間による影響は小さくなります。

milter-performance-checkが提供している機能で十分な時は、milter-performance-checkを利用し、それでは不十分な時はsmtp-sourceを利用するとよいでしょう。

## オプション

--help | 利用できるオプションを表示して終了します。
--smtp-server=SERVER | 接続先のSMTPサーバを指定します。 既定値はlocalhostです。
--smtp-port=PORT | 接続先のSMTPサーバのポート番号指定します。 既定値は25です。
--connect-host=HOST | 接続元のホスト名を指定します。 PostfixのXCLIENT SMTP拡張 のNAMEを利用するので smtpd_authorized_xclient_hosts を適切に設定する必要があります。
--connect-address=ADDRESS | 接続元のアドレスを指定します。 PostfixのXCLIENT SMTP拡張 のADDRを利用するので smtpd_authorized_xclient_hosts を適切に設定する必要があります。
--helo-fqdn=FQDN | HELOコマンドでFQDNを使います。 既定値はlocalhost.localdomainです。
--starttls=HOW | 1.6.9から使用可能。 STARTTLSを使うかどうかを指定します。指定可能な `HOW` は以下の通りです。
auto | MTAがSTARTTLSをサポートしている場合はSTARTTLSを使います。（既定値）
always | 常にSTARTTLSを使います。
disable | STARTTLSを使いません。
既定値は auto です。
--auth-user=USER | 1.6.9から使用可能。 SMTP認証のユーザ名として `USER` を使います。 既定値はありません。
--auth-password=PASSWORD | 1.6.9から使用可能。 SMTP認証のパスワードとして `PASSWORD` を使います。 既定値はありません。
--auth-mechanism=MECHANISM | 1.6.9から使用可能。 SMTP認証の方法として `MECHANISM` を使います。指定可能な `MECHANISM` は以下の通りです。
auto | MTAがサポートしている認証方式を検出してそれを使います。（既定値）
plain | 常にPLAINを使用します。
login | 常にLOGINを使用します。
cram_md5またはcram-md5 | 常にCRAM-MD5を使用します。
既定値は auto です。
--auth-map=FILE | 1.6.9から使用可能。 接続するMTAのアドレス・ポート番号ごとにSMTP認証の設定を `FILE` から読み込みます。 `FILE` の書式は以下のようになっており、 Postfixのsmtp_sasl_password_maps でも使えます。
    SERVER1:PORT USER1:PASSWORD1
    SERVER2:PORT USER2:PASSWORD2
    ...
「smtp.example.com」の「submissionポート」（587番ポート）宛てのメールは「send-user」ユーザ・「secret」パスワードを使うという設定は以下の通りです。
    smtp.example.com:587 send-user:secret
既定値はありません。
--from=FROM | MAILコマンドのアドレスにFROMを使います。 既定値はfrom@example.comです。
--force-from=FROM | 送信するメールファイルを指定した場合でも、ファイル中にあるFrom:の値ではなく、FROMをMAILコマンドのアドレスに使います。 既定値はありません。
--recipient=RECIPIENT | RCPTコマンドのアドレスにRECIPIENTを使います。複数の宛先を指定する場合は複数回このオプションを指定してください。 既定値は[to@example.com]です。
--force-recipient=RECIPIENT | 送信するメールファイルを指定した場合でも、ファイル中にあるTo:の値ではなく、RECIPIENTをRCPTコマンドのアドレスに使います。複数の宛先を指定する場合は複数回このオプションを指定してください。 既定値はありません。
--n-mails=N | 合計でN個のメールを送信します。複数のメールが同時に送信されます。同時に最大で何通送るかは --n-concurrent-connections で指定します。 既定値は100です。
--n-additional-lines=N | メールの本文にN行追加します。 既定値はありません。（追加しません。）
--n-concurrent-connections=N | 同時に最大N接続でメールを送信します。 既定値は10です。
--period=PERIOD | PERIOD（単位は秒、分、時間のどれか）の間に指定されたメールを送信します。各メールは間隔内で平均的に送信します。単位を省略した場合は秒として扱われます 例（送信メール数を100とする）: --period=5 # 0.05秒間隔で送信（5 / 100） --period=50s # 0.5秒間隔で送信（50 / 100） --period=10m # 6秒間隔で送信（60 * 10 / 100） --period=0.5h # 18秒間隔で送信（60 * 60 * 0.5 / 100） 既定値はありません。
--interval=INTERVAL | INTERVAL（単位は秒、分、時間のどれか）間隔で指定されたメールを送信します。単位を省略した場合は秒として扱われます。 例: --interval=5 # 5秒間隔で送信 --interval=0.5s # 0.5秒間隔で送信 --interval=10m # 10分間隔で送信 --interval=0.5h # 30分間隔で送信 既定値はありません。
--flood, --flood[=PERIOD] | PERIOD（単位は秒、分、時間のどれか）の間、ずっと指定されたメールを送信します。PERIODを省略した場合はC-cで終了するまでずっと指定したメールを送信します。単位を省略した場合は秒として扱われます。 既定値はありません。
--shuffle, --no-shuffle | 送信予定のメールを無作為に並び替えてから送信します。 既定値はfalseです。（並び替えません。）
--report-failure-responses, --no-report-failure-responses | SMTPサーバが返した失敗時のメッセージを一番最後に表示します。 既定値はfalseです。（表示しません。）
--report-periodically, --report-periodically=INTERVAL | INTERVAL（単位は秒、分、時間のどれか）間隔で統計情報を表示します。INTERVALを省略した場合は1s（1秒）を指定したと扱われます。単位を省略した場合は秒として扱われます。 既定値はありません。（定期的に統計情報を表示しません。）
--reading-timeout=SECONDS | SMTPサーバからのレスポンスを待つ時間を指定します。 `SECONDS` 秒経ってもレスポンスが返ってこない場合はエラーになります。 既定値は60秒です。

## 終了ステータス

常に0。

## 例

以下の例では、milter-performance-checkはlocalhostの25番ポートで動いているSMTPサーバに接続し、100通のメールを送ります。それぞれのメールの差出人はfrom@example.comで、宛先はwebmaster@localhostとinfo@localhostです。

    % milter-performance-check --recipient=webmaster@localhost --recipient=info@localhost

以下の例では、milter-performance-checkは192.168.1.29の25番ポートで動いているSMTPサーバに接続し、/tmp/test-mails/以下にあるファイルをメールとして送信します。ファイルはRFC 2822のメールフォーマットでなければいけません。各メールは3秒毎（60 * 10 / 100）にuser@localhost宛に送られます。--n-mails=1オプションが指定されているので、それぞれのメールは1通のみ送られます。

    % milter-performance-check --n-mails=1 --smtp-server=192.168.1.102 --force-recipient=user@localhost --period=5m /tmp/test-mails/

## 関連項目

milter-report-statistics.rd.ja (1)