fedora39でdovecotのservice authをinet_listener (tcp socket)で利用するとエラーがでる。
(2024/4/3現在)
動作環境
動作環境について、OSはfedora39で、postfix(postfix-3.8.4-1.fc39.x86_64)およびdovecot(dovecot-2.3.21-1.fc39.x86_64)が動作している。クライアントはwondows版のthunderbird 115.9.0。
postfixのmain.cfには以下のように指定している。(24がlmtp、12345がauth)
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = inet:192.0.2.55:12345
(途中略)
virtual_transport = lmtp:inet:192.0.2.55:24
エラー内容
ログに以下のようなメッセージが表示される。
imap-login: Disconnected: Connection closed: SSL_accept() failed: error:0A000412:SSL routines::sslv3 alert bad certificate:
切り分け
切り分けその1
ubuntu(22.04.4 LTS)でdovecot(2.3.16)をインストールし、上記の設定をしてみた。問題なく動作した。
切り分けその2
同一サーバ(fedora39)でpostfixとdovecotを動作させる場合はUNIX domain socketが利用できる。
dovecotで以下の定義を行って、
service auth {
unix_listener auth-userdb {
}
inet_listener {
port = 12345
}
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
postfixで以下の定義を行うとちゃんと動作する。
smtpd_sasl_path = private/auth
以下の定義では先述のエラーがでて認証できない。
smtpd_sasl_path = inet:127.0.0.1:12345
回避策
fedora39の場合は、unix domain socketを利用するかどうしてもpostfixとdovecotが動作するサーバを分けたい場合はdovecotだけはubuntuにするとよいだろう。もちろん両方をubuntuにしてもよい。
当サイトのような小規模サイトであればpostfixとdovecotを分ける必要性はほぼないので、unix domain socketを利用しようと思う。
コメント