我有两个服务器,都运行Ubuntu21.04。我在一个服务器上安装了后缀(v3.5.6),在另一个服务器上安装了MariaDB (v10.5.12-MariaDB-0ubuntu1.00.24.1)。当后缀试图连接到MariaDB时,它会得到一个“不支持的协议”错误:
postfix/trivial-rewrite[15106]: warning: connect to mysql server <name_of_db_server>: SSL connection error: error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol
postfix/trivial-rewrite[15106]: warning: virtual_alias_domains: mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf: table lookup problem
postfix/trivial-rewrite[15106]: warning: virtual_alias_domains lookup failure
postfix/trivial-rewrite[15106]: warning: virtual_alias_domains: mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf: table lookup problemmain.cf:
virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cfmysql_virtual_alias_maps.cf:
user = postfix
password = password
hosts = ip.address.of.db
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'我可以从mariadb/mysql (mysql -u后缀-h dbserver -p)连接,它使用SSL/TLS。
我见过很多关于在一台或另一台机器上降低TLS版本的东西,但这不是一个解决方案。任何帮助都将不胜感激。
发布于 2022-07-22 15:47:00
我遇到了一个类似的问题(尽管在Ubuntu20.04LTS上,以及在MariaDB 10.3.34和PostFix3.4.13上),并且花了两天的大部分时间来了解它。
虽然在您的情况下解决方案可能是不同的,但促成因素可能是相同的。
至关重要的是,您必须理解Postfix通过libmysqlclient库连接到MySQL/MariaDB。也就是说,后缀本身并不实现任何连接详细信息,因此任何类似的问题都可能与应用到连接机器上的MySQL客户端库的设置有关。我特别提到这一点,因为您完全可能在连接机器上安装了与MariaDB服务器本身完全不同的MariaDB客户端版本/配置。因此,在解决此问题时,请记住,相关的客户端设置将取决于连接机器上的mysql --version生成的内容。
当然,MariaDB服务器的设置也是一个因素,因为它可以强制TLS或使其成为可选的,并且可以强制特定的TLS协议版本。
在您的具体情况下,我将在客户机(后缀服务器)端尝试如下所示:
mysql -upostfix -p -h xxx.xxx.xxx.xxx --ssl --tls-version=TLSv1.0(如果命令在不受支持的选项或类似选项中失败,那么使用mysql --version检查版本并相应地根据https://mariadb.com/kb/en/mysql-command-line-client/#options修改它们,或者将MySQL客户端库升级到与MariaDB服务器版本相同的版本。)
此命令既需要通过--ssl进行TLS,又通过--tls-version=TLSv1.0指定TLS版本。
如果连接失败,则通过迭代--tls-version=TLSv1.1、--tls-version=TLSv1.2和--tls-version=TLSv1.3来增加TLS版本,直到它成功为止。
当连接成功时,这将确定MariaDB服务器所需的最小TLS版本,也就是连接(后缀)计算机在连接时必须使用的最低版本。如何在连接机器上强制执行,完全取决于MySQL客户端库版本(同样,使用mysql --version检查它)。在MySQL和MariaDB的过去几个主要版本中,相关的TLS相关选项都发生了变化,因此在不了解MySQL客户端版本的情况下,很难给出更具体的建议。尽管如此,以下资源包含MariaDB的最新版本(客户端和服务器)的所有相关信息:
https://mariadb.com/kb/en/secure-connections-overview/
假设您在后缀机器上运行的MariaDB客户端版本与您为MariaDB服务器运行的版本相同,那么上面的资源包含了应该对您工作的逐字示例:
在MariaDB服务器上:
[mariadb]
tls_version = TLSv1.2,TLSv1.3在MySQL/MariaDB客户机(后缀服务器)上:
[client-mariadb]
tls_version = TLSv1.2,TLSv1.3如果您还没有解决这一问题,请随意添加评论/问题,我会很高兴地更新这篇文章更具体的信息,您的情况。
https://askubuntu.com/questions/1370590
复制相似问题