ANVIL(8) ANVIL(8) 名前 anvil - Postfix セッションのカウントと速度の制御 書式 anvil [generic Postfix daemon options] 解説 Postfix anvil(8) サーバは、設定可能な時間間隔のうちに大量の並列接続や大 量の連続接続の試行によってサーバを叩くクライアントに対して防御するた め の、 短期間統計情報を管理します。このサーバはPostfix master(8) サーバに よって制御されて動くように設計されています。 anvil(8) サーバは一貫したデータベースを管理しません。標準的なライブラリ ユー ティ リティは Postfix が要求するパフォーマンスと堅牢性には合いませ ん。 接続数/速度制限 リモートクライアントが接続すると、接続数 (または速度) が制限された サー バは次の要求を anvil(8) サーバに送ります: request=connect ident=string こ れは ident で指定された (service, client) の組に対する新しい接続を登 録します。anvil(8) サーバは (service, client) の組に対する同時接続数 お よび単位時間あたりの接続数を答えます: status=0 count=number rate=number rate は現在の "時間単位" 間隔における、登録された接続数として計算されま す。リモートクライアントが接続カウント (または速度) 制限を超えている か どうかを決めるのは、サーバに委ねられます。 リ モートクライアントが接続を切ると、接続カウント (または速度) 制限サー バは次の要求を anvil(8) サーバに送ります: request=disconnect ident=string これは identで指定された (service, client) の組に対する切断イベント を 登録します。anvil(8) サーバは次のように応答します: status=0 メッセージ速度制限 リ モートクライアントがメッセージ配送要求を送ると、接続速度が制限された サーバは次の要求を anvil(8) サーバに送ります: request=message ident=string これは ident で指定された (service, client) の組に対する新しい配送要 求 を 登録します。anvil(8) サーバは (service, client) の組に対する単位時間 あたりのメッセージ配送要求の数を答えます: status=0 rate=number anvil(8) サーバがクライアント要求速度を破棄するのが早すぎたり遅すぎたり しないようにするため、メッセージ速度が制限されたサーバは接続/切断イベン トも登録します。 受信者速度の制限 リモートクライアントが受信者アドレスを送ると、受信者速度が制限 さ れ た サーバは次の要求を anvil(8) サーバに送ります: request=recipient ident=string こ れは ident で指定された (service, client) の組に対する受信者要求を登 録します。anvil(8) サーバは (service, client) の組に対する単位時間あ た りの受信者要求の数を答えます: status=0 rate=number anvil(8) サーバがクライアント要求速度を破棄するのが早すぎたり遅すぎたり しないようにするため、受信者速度が制限されたサーバは接続/切断イベントも 登録します。 セキュリティ anvil(8) はネットワークやローカルユーザに話しかけることはなく、固定され た低い権限で chroot されて動くことができます。 anvil(8) サーバは接続数 (または速度) が制限されたサービスの最近のクライ ア ント情報を持つメモリ内テーブルを管理します。状態は一時的に記録される だけですが、たくさんのリモートクライアントからの接続を扱うシステムで は 大 量のメモリを必要とするかもしれません。メモリの使用量を減らすには、状 態が保持される時間単位を減らしてください。 診断 問題や処理は syslogd(8) に記録されます。 終了時および anvil_status_update_time 秒ごとに、サーバは 測 定された最大のカウントと速度を (service, client) 情報やそのイベントに対 応する時刻とともにログに記録します。不必要なオーバーヘッドを避 け る た め、同時制限や速度制限されていない活動の測定はおこなわれません。 バグ ネットワークアドレス変換(NAT)ルータやプロキシの後ろにあるシステムは同じ クライアントアドレスを持っているように見えてしまい、間違って接続数や 速 度制限に達することになるかもしれません。 こ の予備的な実装では、接続数 (または速度) が制限されたサーバは同時にリ モートクライアントを一つだけ持つことができます。サーバが同時に複数の ク ラ イ ア ントを報告すると、最後に報告されたクライアント以外は無視されま す。 設定パラメータ 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)