为什么 dovecot 在用户名/密码验证后使用“postfix_accounts.users”来检索邮件用户信息?

为什么 dovecot 在用户名/密码验证后使用“postfix_accounts.users”来检索邮件用户信息?

我已经在 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]

相关内容