require_secure_transport がオンの場合、Dovecot は MariaDB に接続できません

require_secure_transport がオンの場合、Dovecot は MariaDB に接続できません

仮想メールボックスに MariaDB を使用する Dovecot サーバーがあります。MariaDB サーバーは同じ LAN 内の別のマシン上にあります。

最近、MariaDB マシンで TLS を有効にしました。

Dovecot はrequire_secure_transportオフのときは正常に動作しますが、require_secure_transportMariaDB 構成ファイルでオンにすると接続に失敗します。

エラーは次のとおりです:

Error: mysql(xxx.xxx.xxx.xxx): Connect failed to database (db_name): Access denied for user 'db_user'@'xxx.xxx.xxx.xxx' (using password: YES)

これは認証エラーのように見えますが、がrequire_secure_transportオフのときは同じユーザーとパスワードで接続すると正常に機能するため、Dovecot は TLS を使用していないため MariaDB は接続を拒否しています。

接続文字列は/etc/dovecot/dovecot-sql.conf.ext次のようになります。

connect = host=db0.mydomain.com dbname=my_db user=the_user password=secret ssl_ca=/etc/ssl/authority/authority.crt

設定ファイルには次のように書かれています:

ssl_ca、ssl_ca_path - SSL を有効にするには、いずれか 1 つまたは両方を設定します。

エラーのより詳細な情報を入手できますか? たとえば、TLS バージョンの不一致の場合、それをどこかに表示してもらえますか?

Dovecot で変更する必要がある設定はありますか?

更新:ssl_verify_server_cert=no接続文字列を追加すると、/etc/dovecot/dovecot-sql.conf.ext接続が機能するようになります。

つまり、証明書の検証エラーのようです。しかし、より詳細なログがなければ、証明書の何が問題なのかわかりません。

証明書は、接続文字列内の CA によって署名されます。チェックされている共通名と、Dovecot が証明書に SAN 値のいずれかを使用するかどうかを知っておくとよいでしょう。

答え1

ローカル ネットワーク上に、imap と MariaDB サーバーのホスト名のレコードを含む DNS サーバーを設定し、resolv.conf両方のマシンでそれを使用するように設定することで、これを正しく動作させることができました。

require_secure_transportDovecot は、 MariaDB での設定とssl_verify_server_cert=yesDovecot の接続文字列での設定に問題なく接続できるようになりました。

デバッグ用のより詳細なエラー メッセージがない場合、TLS 実装では のマッピングが無視され/etc/hosts、実際の DNS サーバーの使用が必要になると推測されます。

関連情報