Dovecot サービスの制限設定 - ダメ出し Blog

[dovecot] [更新履歴]

サービス毎のデフォルト値

Dovecot 2.2.13 調べ。

$ doveconf -ad |grep '^default_.*_limit'
default_client_limit = 1000
default_process_limit = 100
default_vsz_limit = 256 M
サービス名 client_limit process_limit service_count
aggregator $default_client_limit $default_process_limit 0
anvil $default_client_limit 1 0
auth-worker 1 $default_process_limit 1
auth $default_client_limit 1 0
config $default_client_limit $default_process_limit 0
dict 1 $default_process_limit 0
director $default_client_limit 1 0
dns_client 1 $default_process_limit 0
doveadm 1 $default_process_limit 1
imap-login $default_client_limit $default_process_limit 1
imap-urlauth-login $default_client_limit $default_process_limit 1
imap-urlauth-worker 1 1024 1
imap-urlauth 1 1024 1
imap 1 1024 1
indexer-worker 1 10 0
indexer $default_client_limit 1 0
ipc $default_client_limit 1 0
lmtp 1 $default_process_limit 0
log $default_client_limit 1 0
pop3-login $default_client_limit $default_process_limit 1
pop3 1 1024 1
replicator $default_client_limit 1 0
ssl-params $default_client_limit $default_process_limit 0
stats $default_client_limit 1 0
tcpwrap 1 $default_process_limit 0

上の表の $default_client_limit$default_process_limit の項目は、doveconf の出力上は値が 0 と表示される。 dovecot.conf ファイル中では client_limit=$default_client_limit のようには記述できず、client_limit=0 のように記述する必要がある。

client_limit

サービスの 1 プロセスあたりの最大クライアント数。 サービスあたりの最大クライアント数ではないので注意。 0 に設定すると default_client_limit (デフォルト値 1000)の値になる。

pop3, imap, managesieve サービスでは 1 が推奨値(デフォルト) であり、 同時接続数を調整する場合は process_limit を設定すべき。FIXME

service_count を 1 以上に設定している場合、そちらが優先される。 たとえば service_count = 1 に設定すると client_limit = 1 相当になる。

参考:

process_limit

サービスあたりの最大プロセス数。 0 に設定すると default_process_limit (デフォルト値 100)の値になる。

service_count

サービスの 1プロセスあたりのクライアントの対応数。 サービスプロセスは、指定の数のクライアント接続を完了したあとに終了する。 0 に設定すると無制限を意味する。

Apache HTTPD の MaxRequestsPerChild 相当。 FIXME: 0 か 1 以外を設定することを想定していないっぽい。

0 (無制限) もしくは 2 以上に設定することでプロセスの終了・生成の分の負荷が減らすことができるが、 ほかのユーザー(クライアント接続)とプロセスを共有するため、 脆弱性を突かれた場合のリスクが増大する。

参考:

vsz_limit

サービスの 1 プロセスあたりの最大メモリ量 (データセグメントサイズ)。 ulimit -d の値に相当。

備考

anvil サービスのクライアント数

pop3-login, imap-login, managesieve-login プロセスは、 anvil サービスを利用する。よって、anvil サービスの client_limit の値は全 *-login プロセスの最大数以上に設定する必要がある。

TLS(SSL) / Proxy / Director の制限設定

POP3 / IMAP / ManageSieve プロトコルの TLS (SSL) / Proxy / Director は pop3-login, imap-login, managesieve-login プロセスで実行される。 同機能を利用する場合は pop3-login, imap-login, managesieve-login サービスの設定に注意。

LMTP プロトコルは TLS (SSL) に非対応、Proxy / Director は lmtp プロセスで実行される。