dovecot のservice authでエラー

dovecot

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を利用しようと思う。

コメント

タイトルとURLをコピーしました