我已经在 Rocky Linux 9.1 中设置了一个邮件服务器,其中包含 postfix、dovecot 和 mysql(请参阅https://computingforgeeks.com/how-to-setup-mail-server-on-centos/)。
一切都已更新。(postfix-3.5.9、dovecot-2.3.16 和 mariadb-10.5.22)。
我已经正确设置了mysql数据库,并且数据库下有三个表(accounts_table,alias_table,domains_table)(名为:postfix_accounts)
我已经在 /etc/dovecot/conf.d/10-mail.conf 中设置了“mail_home = /var/vmail/%d/%n”,并通过运行 [doveconf | grep mail] 对其进行了测试。
在我重新启动 postfix 和 dovecot 服务后,它们似乎都运行正常。
当我尝试使用用户名/密码从邮件客户端连接时,出现了身份验证失败错误。当我通过运行 [journalctl -u dovecot -f] 检查 dovecot 日志时,我发现
.......
auth-worker(1696): Debug: conn unix:auth-worker (pid=1695,uid=97): auth-worker<1>: sql([email protected],10.0.1.235,<3PNSoagMPfkKAAHr>): Performing passdb lookup
.......
auth: Debug: client passdb out: OK 1 [email protected] [email protected]
.......
auth: Debug: sql([email protected],10.0.1.235,<3PNSoagMPfkKAAHr>): Performing userdb lookup
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
从上面的调试信息我们可以看到,“auth-worker”正在尝试从数据库中提取不存在的用户 id、组 id 和家庭信息(当然不存在,我们没有创建它)。
我试图找出如何配置 dovecot“auth-worker”不使用 mysql 数据库来查找用户数据库信息,但我在这里找不到任何东西。
有没有人遇到过同样的情况,该如何解决?请告诉我。
答案1
我找到了解决方案:
找到文件 /etc/dovecot/conf.d/auth-sql.conf.ext
注释掉:
#userdb {
# driver = sql
# args = /etc/dovecot/dovecot-sql.conf.ext
#}
并取消注释
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/vmail/%u
}
运行[sudo systemctl restart dovecot]