生产环境Postfix与Dovecot连接禁用SSL模式的MySQL8失败的解决方案求助
生产环境Postfix与Dovecot连接禁用SSL模式的MySQL8失败的解决方案求助
大家好,我这边生产环境跑着Postfix 3.1和Dovecot,最近把MySQL从5.6升级到了8,还迁移到了新服务器mysql03,结果遇到了SSL相关的连接问题,折腾了半天还是没搞定Dovecot的部分,来求助大家!
问题背景
我用命令行连接新的mysql03服务器时,直接执行:
mysql -hmysql03 -uvimbadmin -p vimbadmin
会报错:
ERROR 2026 (HY000): SSL connection error: unknown error number
后来发现是SSL的问题,加上--ssl-mode=disabled参数就能正常连接了:
mysql --ssl-mode=disabled -hmysql03 -uvimbadmin -p vimbadmin
为了让命令行默认禁用SSL,我在/etc/mysql/conf.d/mysql.cnf里加了配置:
[mysql] ssl-mode=DISABLED [client] ssl-mode=DISABLED
之后再用命令行连接就不用加参数了,正常没问题。
Postfix的临时解决办法
Postfix这边一开始也连不上mysql03,我折腾了半天没找到合适的配置方式,就用了个临时 workaround:把alias和mailboxes的数据库类型从mysql改成了texthash,然后写了个脚本定期生成texthash文件,现在Postfix能正常工作,但这显然不是长久之计。
Dovecot的难题
现在Dovecot还是连的旧服务器mysql02来维持服务,我的目标是切换到mysql03,但改了配置之后连不上。当前/etc/dovecot/dovecot-sql.conf.ext的配置内容如下:
driver = mysql connect = host=mysql02 user=vimbadmin password=*** dbname=vimbadmin default_pass_scheme = MD5 password_query = SELECT username as user, password as password, \ homedir AS userdb_home, maildir AS userdb_mail, \ concat('*:bytes=', quota) AS userdb_quota_rule, uid AS userdb_uid, gid AS userdb_gid \ FROM mailbox \ WHERE username = '%Lu' AND active = '1' \ AND ( access_restriction = 'ALL' OR LOCATE( '%Us', access_restriction ) > 0 ) user_query = SELECT homedir AS home, maildir AS mail, \ concat('*:bytes=', quota) as quota_rule, uid, gid \ FROM mailbox WHERE username = '%u'
现在我有两个疑问想请教大家:
- 有没有办法让Dovecot像Postfix那样,用文件来存储用户、邮箱等信息,不用直接连接数据库?
- 如果没办法用文件替代的话,我该修改Dovecot的哪些配置,才能让它成功连接到禁用SSL模式的MySQL8服务器?
备注:内容来源于stack exchange,提问作者Sergi
相关产品推荐
相关产品推荐

