当 require_secure_transport 处于开启状态时,Dovecot 无法连接到 MariaDB

当 require_secure_transport 处于开启状态时,Dovecot 无法连接到 MariaDB

我有一台 Dovecot 服务器,它使用 MariaDB 作为虚拟邮箱。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关闭时使用相同的用户和密码连接可以正常工作,所以 MariaDB 拒绝连接,因为 Dovecot 没有使用 TLS。

连接字符串/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

我可以获取有关错误的更多详细信息吗?例如,如果是 TLS 版本不匹配,我可以将其显示在某处吗?

我需要更改 Dovecot 中的设置吗?

更新:添加ssl_verify_server_cert=no连接字符串/etc/dovecot/dovecot-sql.conf.ext可使连接正常工作。

所以这似乎是证书验证错误。但如果没有更详细的日志记录,我不确定它不喜欢证书的什么地方。

证书由 CA 在连接字符串中签名。最好知道它正在检查什么通用名称,以及 Dovecot 是否会使用证书的任何 SAN 值。

答案1

我通过在本地网络上设置一个 DNS 服务器来使其正常工作,该服务器包含 imap 和 MariaDB 服务器的主机名记录,然后resolv.conf在两台机器上进行设置以使用它。

require_secure_transportDovecot 现在可以通过MariaDB 中的设置和ssl_verify_server_cert=yesDovecot 的连接字符串中的设置顺利进行连接。

在没有更详细的错误消息进行调试的情况下,我最好的猜测是 TLS 实现忽略了中的映射/etc/hosts,并且需要使用实际的 DNS 服务器。

相关内容