
仮想メールボックスに MariaDB を使用する Dovecot サーバーがあります。MariaDB サーバーは同じ LAN 内の別のマシン上にあります。
最近、MariaDB マシンで TLS を有効にしました。
Dovecot はrequire_secure_transport
オフのときは正常に動作しますが、require_secure_transport
MariaDB 構成ファイルでオンにすると接続に失敗します。
エラーは次のとおりです:
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_transport
Dovecot は、 MariaDB での設定とssl_verify_server_cert=yes
Dovecot の接続文字列での設定に問題なく接続できるようになりました。
デバッグ用のより詳細なエラー メッセージがない場合、TLS 実装では のマッピングが無視され/etc/hosts
、実際の DNS サーバーの使用が必要になると推測されます。