Dovecot认证后因查询不存在的postfix_accounts.users表导致用户验证失败的问题求助
我在Rocky Linux 9.1上搭建了一套邮件服务器,用到了Postfix、Dovecot和MariaDB,所有组件都是最新版本:postfix-3.5.9、dovecot-2.3.16、mariadb-10.5.22。数据库已经配置妥当,postfix_accounts库下面有三张表:accounts_table、alias_table、domains_table。
我已经在/etc/dovecot/conf.d/10-mail.conf里设置了mail_home = /var/vmail/%d/%n,也通过doveconf | grep mail验证过这个配置已经生效。重启Postfix和Dovecot服务后,看起来都运行正常,但用邮件客户端输入用户名密码登录时,总是提示认证失败。
查看Dovecot的实时日志(执行命令journalctl -u dovecot -f),发现了关键的错误信息:
auth-worker(1696): Debug: mysql(127.0.0.1): Finished query 'SELECT home, uid, gid FROM users WHERE username = 'xxxxx' AND domain = 'xxxxxxx.com.au'' in 0 msecs: Table 'postfix_accounts.users' doesn't exist
auth-worker(1696): Warning: sqlpool(mysql): Query failed, retrying: Table 'postfix_accounts.users' doesn't exist
auth: Debug: master userdb out: FAIL 2733244417
从日志能看出来,Dovecot的auth-worker在完成密码验证后,会去查询数据库里的users表,想获取用户的home目录、UID和GID,但我根本没建过这个表。我尝试找配置项,想让Dovecot不要用MySQL来查询userdb信息,或者修改查询语句指向我已有的accounts_table,但找了半天没头绪。
有没有同学遇到过同样的情况?求指点怎么解决!
备注:内容来源于stack exchange,提问作者cidy.long

