ANVIL(8) ANVIL(8) 名前 anvil - Postfix セッションのカウントと速度の制御 書式 anvil [generic Postfix daemon options] 解説 Postfix anvil(8) サーバはクライアント接続数やクライアントの要求速度に関 する統計情報を管理します。この情報は過剰な同時セッションや設定可能な 時 間 内における過剰な連続要求でサーバを攻撃するクライアントに対して防御す るために使われます。このサーバはPostfix master(8) サーバによって制御 さ れて動くように設計されています。 以 下 の 文では、ident は (サービス, クライアント) の組み合わせを示しま す。この情報の正確な文法はアプリケーションに依存します; anvil(8) サーバ は関知しません。 接続数/速度の管理 新しい接続を登録するには、anvil(8) サーバに以下の要求を送ります: request=connect ident=string anvil(8) サーバは ident で指定された (service, client) の組に対する同時 接続数および単位時間あたりの接続数を答えます: status=0 count=number rate=number 切断イベントを登録するには、anvil(8) サーバに以下の要求を送ります: request=disconnect ident=string anvil(8) サーバは次のように応答します: status=0 メッセージ速度の管理 メッセージ配送要求を登録するには、anvil(8) サーバに以下の要求を送ります: request=message ident=string anvil(8) サーバは ident で指定された (service, client) の組に対する単位 時間あたりのメッセージ配送要求の数を答えます: status=0 rate=number 受信者速度の管理 受信者要求を登録するには、anvil(8) サーバに以下の要求を送ります: request=recipient ident=string anvil(8) サーバは ident で指定された (service, client) の組に対する単位 時間あたりの受信者要求の数を答えます: status=0 rate=number TLSセッションネゴシエーション速度の管理 このセクションに書かれている機能はPostfix 2.3以降で使えます。 新 し い ( キャッシュされていない) TLSセッションの要求を登録するには、 anvil(8) サーバに以下の要求を送ります: request=newtls ident=string anvil(8) サーバは ident で指定された (service, client) の組に対する単位 時間あたりの新しいTLSセッション要求の数を答えます: status=0 rate=number カ ウ ンタ情報を更新せずに新しいTLSセッション要求速度の情報を取得するに は、以下を送ります: request=newtls_report ident=string anvil(8) サーバは ident で指定された (service, client) の組に対する単位 時間あたりの新しいTLSセッション要求の数を答えます: status=0 rate=number セキュリティ anvil(8) はネットワークやローカルユーザに話しかけることはなく、固定され た低い権限で chroot されて動くことができます。 anvil(8) サーバは最近のクライアント要求を持つメモリ内テーブルを管理しま す。 更新が激しいアプリケーションで使えるほど標準システムライブラリルー チンは十分に堅牢ではないため、永続状態は保持しません。 メモリ内状態は一時的に記録されるだけですが、たくさんのリモートクライ ア ン ト か らの接続を扱うシステムでは大量のメモリを必要とするかもしれませ ん。メモリの使用量を減らすには、状態が保持される時間単位を減らしてく だ さい。 診断 問題や処理は syslogd(8) に記録されます。 終了時および anvil_status_update_time 秒ごとに、サーバは 測 定された最大のカウントと速度を (service, client) 情報やそのイベントに対 応する時刻とともにログに記録します。不必要なオーバーヘッドを避 け る た め、同時制限や速度制限されていない活動の測定はおこなわれません。 バグ ネットワークアドレス変換(NAT)ルータやプロキシの後ろにあるシステムは同じ クライアントアドレスを持っているように見えてしまい、間違って接続数や 速 度制限に達することになるかもしれません。 こ の予備的な実装では、接続数 (または速度) が制限されたサーバは同時にリ モートクライアントを一つだけ持つことができます。サーバが同時に複数の ク ラ イ ア ントを報告すると、最後に報告されたクライアント以外は無視されま す。 期 限が切れると anvil(8) サーバは自動的にクライアント要求情報を破棄しま す。anvil(8) サーバのクライアント要求速度情報破棄が早すぎたり遅すぎたり し ないようにするために、速度が制限されたサービスは明示的に速度を制限し ていなくても常に接続・切断イベントを登録します。 設定パラメータ トラフィックの少ないメールシステムでは、anvil(8) プロセスは限られた短時 間 しか動かないため、main.cf への変更は自動的に拾われます。そうではない メールシステムではこの変更を早くするために "postfix reload" コマンド を 使ってください。 以下の文章はパラメータの概要のみを提供します。例を含 む 詳 細 は post- conf(5) を参照してください。 anvil_rate_time_unit (60s) クライアントの接続速度やその他の速度の計算に用いられる単位時間。 anvil_status_update_time (600s) anvil(8) 接続および速度制限サーバがピーク使用量情報をログに記 録 する頻度。 config_directory ('postconf -d' の出力を参照) Postfix main.cf および master.cf 設定ファイルのデフォルトの場 所。 daemon_timeout (18000s) Postfix デーモンプロセスがビルトイン監視タイマーによって終了させ られるまでに要求を扱える時間。 ipc_timeout (3600s) 内部通信チャネルを通して情報を送受信する際の時間制限。 max_idle (100s) Postfix デーモンプロセスが終了するまでに次のサービス要求を待つア イドル時間の最大量。 max_use (100) Postfix デーモンプロセスが終了するまでの接続要求の最大数。 process_id (read-only) Postfix コマンドまたはデーモンプロセスのプロセスID。 process_name (read-only) Postfix コマンドまたはデーモンプロセスのプロセス名。 syslog_facility (mail) Postfix ロギングの syslog facility 名。 syslog_name (postfix) 例えば "smtpd" が "postfix/smtpd" となるようにするために syslog レコードのプロセス名の前に付けられるメールシステムの名前。 関連項目 smtpd(8), Postfix SMTP サーバ postconf(5), 設定パラメータ master(5), 一般的なデーモンオプション READMEファイル TUNING_README, パフォーマンスチューニング ライセンス The Secure Mailer license はこのソフトウェアと一緒に配布されなければ い けません。 歴史 anvil サービスはPostfix 2.2以降で使えます。 作者 Wietse Venema IBM T.J. Watson Research P.O. Box 704 Yorktown Heights, NY 10598, USA ANVIL(8)