複数アカウントを使っているユーザがPOP3でメールを受信すると、アカウントの内、いくつかがログインに失敗するという事で検証環境で調べたところ、0.99-14のバグという事が判明した。
(かなり古いバージョンで稼働してたけど・・・一度動き出してしまうと、なかなか止められないのです。それなりのユーザ数が居ると)
以下 バージョンアップのメモ
0.99での設定(dovecot.conf)
$ egrep -v '^ *(#|$)' /usr/local/etc/dovecot.conf
base_dir = /var/run/dovecot/
protocols = pop3 imap
imap_listen = 10.1.1.52:143
pop3_listen = 10.1.1.52:110
log_path = /var/log/dovecot
info_log_path = /var/log/dovecot
log_timestamp = "%b %d %H:%M:%S "
login = imap
login_process_size = 32
login_process_per_connection = no
login_processes_count = 8
login_max_processes_count = 500
login = pop3
login_executable = /usr/local/libexec/dovecot/pop3-login
max_mail_processes = 512
first_valid_uid = 90
last_valid_uid = 60099
default_mail_env = maildir:/%h/Maildir
imap_executable = /usr/local/libexec/dovecot/imap
auth = default
auth_mechanisms = plain
auth_userdb = passwd
auth_passdb = pam
auth_user = root
バージョンアップだと、ドキュメント通りというか設定ファイルは引き継がれないのでいくつか修正が必要になる。
エラー(1):起動しない
# Error: Error in configuration file /usr/local/etc/dovecot.conf line 26: Unknown setting: imap_listen
Fatal: Invalid configuration in /usr/local/etc/dovecot.conf
dovecot.confファイルを新規に作成した。
# cp dovecot-example.conf dovecot.conf
変更点は以下の通り・・・
protocols = pop3 imap
listen = 10.1.1.1
ssl_disable = yes
pop3_uidl_format = %v.%u
エラー(2):pop3でログインできず
# telnet 10.1.1.1 110
Trying 10.1.1.1...
Connected to 10.1.1.1.
Escape character is '^]'.
+OK Dovecot ready.
user hogehoge
-ERR Plaintext authentication disallowed on non-secure connections.
変更点は以下の通り
disable_plaintext_auth = no
エラー(3):pop3でログインできず
# telnet 10.1.1.1 110
Trying 10.1.1.1...
Connected to 10.1.1.1.
Escape character is '^]'.
+OK Dovecot ready.
user hogehoge
+OK
pass hogehoge
-ERR [IN-USE] Internal login failure. Refer to server log for more information.
Connection to 10.1.1.1 closed by foreign host.
何が起こっているのかを調べるためにログ出力を追加
log_path = /var/log/dovecot
info_log_path = /var/log/dovecot
log_timestamp = "%b %d %H:%M:%S "
こんなログを確認
Info: Dovecot v1.0.15 starting up
Error: user hoge0001: Logins with UID 103 not permitted (see first_valid_uid in config file).
Info: pop3-login: Internal login failure: user=<hoge0001>, method=PLAIN, rip=10.1.1.11, lip=10.1.1.1
以下の設定を追加
first_valid_uid = 90
last_valid_uid = 60099
Dovecot1.0.15での最終的な設定
protocols = pop3 imap
listen = 10.1.1.52
disable_plaintext_auth = no
log_path = /var/log/dovecot
info_log_path = /var/log/dovecot
log_timestamp = "%b %d %H:%M:%S "
ssl_disable = yes
first_valid_uid = 90
last_valid_uid = 60099
protocol imap {
}
protocol pop3 {
pop3_uidl_format = %v.%u
}
protocol lda {
postmaster_address = postmaster@example.com
}
auth default {
mechanisms = plain
passdb pam {
}
userdb passwd {
}
user = root
}
dict {
}
plugin {
}
一応動きますという程度です。ここからパフォーマンス絡みだったり、セキュリティ絡みの部分で細かいチューニングを行います。
更に検証環境で1.1.2(最新)まで上げてみた。
1.0.15→1.1.2ではファイルディスクリプタ数の上限(ulimit -n)のWARNINGが出るけど、そのままでいけるっぽい。。。
っつーか、0.99.14でこれまで問題なく動いていた環境で何故今更1.0.15まで上げる話になったかと言えば、複数アカウントを使っているユーザがPOP3でメールを受信すると、アカウントの内、いくつかがログインに失敗するという事が原因な訳だけど、そもそもそれも急にやってみたくなったという話で、普通はそんな運用はあまり無いように思う。仮に複数アカウントを使い分けて受信したい!という話になっても、aliasesすればいいだけの話だし。
やっぱり多少は運用にも口出しておかないとダメかな。。。
コメント