## milter-test-server

milter-test-server — MTA側のmilterプロトコルを実装したプログラム

## 名前

milter-test-server - MTA側のmilterプロトコルを実装したプログラム

## 書式

`milter-test-server` [ オプション ... ]

## 説明

milter-test-serverはMTA側のmilterプロトコルを話します。つまり、MTA無しでmilterに接続することができます。現時点では、同様のツールは存在しないため、mta+milterではなくmilter単体のテストを行うためには有用なツールです。例えば、以下のような用途に利用できます。

- milterの性能計測

- milterの動作確認

milter-test-serverは実行時間を表示するので、簡単な性能計測にも利用できます。このとき、mtaとは関係なくmilter単体での実行時間を確認できるため、MTA経由で試す場合よりも問題点の発見が容易になります。

milter-test-serverはヘッダや本文が変更された場合は、変更された内容を表示します。そのため、ヘッダや本文を変更するmilterのテストも容易に行うことができます。 C言語用テスティングフレームワークCutter などと組み合わせて自動化された単体テストを作成することもできます。

## オプション

--help | 利用できるオプションを表示して終了します。

--connection-spec=SPEC

接続先のmilterのソケットを指定します。SPECの書式は次のうちのどれかです。

- unix:パス

- inet:ポート番号

- inet:ポート番号@ホスト名

- inet:ポート番号@[アドレス]

- inet6:ポート番号

- inet6:ポート番号@ホスト名

- inet6:ポート番号@[アドレス]

例:

- unix:/var/run/milter/milter-manager.sock

- inet:10025

- inet:10025@localhost

- inet:10025@[127.0.0.1]

- inet6:10025

- inet6:10025@localhost

- inet6:10025@[::1]

--negotiate-version=VERSION | クライアントへ送信するmilterプロトコルのバージョンとしてVERSIONを使用します。 デフォルトは8（Sendmail 8.14のデフォルトと同じ）です。
--connect-host=HOST | 接続元のホスト名としてHOSTを使用します。 このホスト名はmilterのxxfi_connect()コールバックに渡ります。
--connect-address=SPEC | 接続元のアドレスとしてSPECを使用します。SPECの書式は--connection-specの書式と同じです。 このアドレスはmilterのxxfi_connect()コールバックに渡ります。
--helo-fqdn=FQDN | HELO/EHLO時の引数としてFQDNを使用します。 このfqdnはmilterのxxfi_helo()コールバックに渡ります。
--from=FROM | MAIL FROM時の引数としてFROMを使用します。 このアドレスはmilterのxxfi_envfrom()コールバックに渡ります。
--recipient=RECIPIENT | RCPT TO時の引数としてRECIPIENTを使用します。複数の宛先を指定したい場合は--recipientオプションを複数回指定してください。 このアドレスはmilterのxxfi_envrcpt()コールバックに渡ります。xxfi_envrcpt()は1つの宛先につき1回呼ばれるので、宛先が複数個ある場合はその分だけxxfi_envrcpt()が呼ばれます。
--header=NAME:VALUE | 名前がNAMEで値がVALUEのヘッダを追加します。複数のヘッダを追加したい場合は--headerオプションを複数回指定してください。 このヘッダはmilterのxxfi_header()コールバックに渡ります。xxfi_header()は1つのヘッダにつき1回呼ばれるので、ヘッダが複数個ある場合はその分だけxxfi_header()が呼ばれます。
--body=CHUNK | 本文の一片としてCHUNKを追加します。複数のまとまりを追加する場合は--bodyオプションを複数回指定してください。 この本文のまとまりはmilterのxxfi_body()コールバックに渡ります。xxfi_body()は1つのまとまりにつき1回呼ばれるので、まとまりが複数個ある場合はその分だけxxfi_body()が呼ばれます。
--unknown=COMMAND | 未知のSMTPコマンドとしてCOMMANDを使います。 このコマンドはmilterのxxfi_unknown()コールバックに渡ります。xxfi_unknown()コールバックは、xxfi_envrcpt()コールバックとxxfi_data()コールバックの間に呼ばれます。
--authenticated-name=NAME | SMTP Authで認証されたユーザ名を指定します。SASLでのログイン名に相当します。このオプションを指定するとMAIL FROMのときに `{auth_authen}` の値として `NAME` を渡します。
--authenticated-type=TYPE | SMTP Authの認証に使用した方法を指定します。SASLでのログインメソッドに相当します。このオプションを指定するとMAIL FROMのときに `{auth_type}` の値として `TYPE` を渡します。
--authenticated-author=AUTHOR | SMTP Authで認証された送信者を指定します。SASL送信者に相当します。このオプションを指定するとMAIL FROMのときに `{auth_author}` の値として `AUTHOR` を渡します。
--mail-file=PATH | メールの内容としてPATHにあるメールを使います。メール中にFrom:やTo:があった場合は、それらの値を送信元や宛先のアドレスとして使用します。
--output-message | milter適用後のメッセージを表示します。ヘッダを追加・削除したり、本文を置換するmilterの動作を確認したい場合はこのオプションを指定してください。
--verbose | 実行時のログをより詳細に出力します。 「MILTER_LOG_LEVEL=all」というように環境変数を設定している場合と同じ効果があります。
--version | バージョンを表示して終了します。

## 終了ステータス

milterセッションが始まった場合は0で、そうでない場合は0以外になります。ソケットの書式が間違っている場合かmilter-test-serverがmilterに接続できない場合は、milterセッションを始めることができません。

## 例

以下の例では、ホスト192.168.1.29上の10025番ポートで待ち受けているmilterに接続します。

    % milter-test-server -s inet:10025@192.168.1.29

## 関連項目

milter-test-client (1), milter-performance-check (1)