Dovecot の認証の設定ではまってしまったので、メモを残しておくことにした。
環境は、CentOS release 6.5だ。
発生したのは、クライアントから Dovecot に POP で接続しても応答が戻ってこないという現象だ。メールサーバー Dovecot の設定が終わって、動作確認を行うために telnet で接続した結果は以下の通り。
[user@server ~]$ telnet localhost 110 Trying ::1... Connected to localhost. Escape character is '^]'.
本来であれば、この後に Dovecot からの応答が戻ってくるはずだ。
+OK Dovecot ready.
応答が戻ってこないので、ユーザー名もパスワードも入力できない。認証の手前で引っかかっているのは明らかだ。CentOS のパッケージで Dovecot を利用している場合、認証の設定で失敗するケースとしては、「/etc/dovecot/conf.d/10-auth.conf」でインクルードしている認証方法を設定したファイルが間違っているケースだが、今回は「!include auth-system.conf.ext」となっており、認証のメカニズムとして利用しているのは pam なので問題ないはずだと思っていた。
ログ(/var/log/maillog)を確認してみると、
Dec 25 12:38:03 server dovecot: master: Dovecot v2.0.9 starting up (core dumps disabled) Dec 25 12:38:22 server dovecot: auth: Fatal: DIGEST-MD5 mechanism can't be supported with given passdbs Dec 25 12:38:22 server dovecot: master: Error: service(auth): command startup failed, throttling
と出ていた。調べてみたところ、Dovecot で「Error: service(auth): command startup failed, throttling」というエラーが出るのは、認証の設定に失敗しているときだとわかるが原因がわからない。
落ち着いてログを見ると、「dovecot: auth: Fatal: DIGEST-MD5 mechanism can’t be supported with given passdbs」というエラーも出ている。たしかに、「/etc/dovecot/dovecot.conf」には、
auth_mechanisms = plain login digest-md5
と書いているが、利用できないメカニズムは無視されると思っていたのが落とし穴だった。サポートされていないメカニズムを外し、
auth_mechanisms = plain login
としたところ無事接続できるようになった。