我已设置Postfix以将Dovecot SASL用于PAM和 Unix 用户,并将 Dovecot LDA (LMTP) 用于本地邮箱存储。经过一些测试,原来收到的邮件被拒绝,原因是:
错误:[user] 的 passdb 查找失败:配置的 passdbs 不支持凭据查找
这既麻烦又麻烦——我选择了基于 PAM 的身份验证,因为我发现的所有消息来源都表明这是最简单、最可靠的方式。我现在很难解决问题所在 - 我不确定这是否真的是 PAM 的问题,或者我的配置是否有问题。
日志
doveadm
查找测试:
$ doveadm auth lookup [user]
Error: passdb lookup failed for [user]: Configured passdbs don't support credentials lookups
查找测试后的 Dovecot 调试日志:
$ cat /var/log/dovecot/dovecot-debug.log | tail -5
[date][time] auth: Debug: master in: PASS 1 [user] service=doveadm debug
[date][time] auth: Debug: pam([user]): Performing passdb lookup
[date][time] auth: Debug: pam([user]): passdb doesn't support credential lookups
[date][time] auth: Debug: pam([user]): Finished passdb lookup
[date][time] auth: Debug: passdb out: FAIL 1 reason=Configured passdbs don't support credentials lookups
相关配置
/etc/dovecot/conf.d/10-auth.conf
文件:
auth_username_format = %Ln
auth_mechanisms = plain login
!include auth-system.conf.ext
/etc/dovecot/conf.d/auth-system.conf.ext
文件:
passdb {
driver = pam
args = session=yes failure_show_msg=yes dovecot
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/vmail/%n
}
该/etc/pam.d/dovecot
文件是 Rocky Linux(与 RHEL 相同,与 Fedora 相同)Dovecot 软件包附带的默认文件:
#%PAM-1.0
auth required pam_nologin.so
auth include password-auth
account include password-auth
session include password-auth
但是,我也尝试了Dovecot PAM 官方文档建议的配置,但没有产生任何不同的结果。我对我的其余配置很有信心,因为我花了很多时间研究这些选项,但我仍然几乎不了解 PAM 配置......
所有日志都指出问题出在 Dovecot SASL 本身,而不是 Postfix 或 Dovecot 配置。任何建议将不胜感激。
我不知道这是否是问题的正确解决方案(现在回来阅读anx对我原始帖子的评论让我想知道是否是这样),但我设法通过添加第二个
passdb
条目使查找和身份验证工作Dovecot 的配置。在 Dovecot 配置中,我在PAM 密码数据库条目之前添加了一个passwd密码数据库条目:
这使得用户查找
doveadm auth lookup [user]
成功。但是,passwd数据库无法验证用户,因为密码不再存储在/etc/passwd
Unix 系统上的文件中。发生这种情况时,查找将继续使用 PAM 密码数据库,该数据库正确地验证了用户。这可以使用doveadm auth test [user]
命令进行测试。我将此添加为可接受的答案,因为解决方案/解决方法目前对我有用。如果有人有任何建议或知道如何以更好的方式解决此问题,我很乐意接受。只有 PAM 数据库是Rocky Linux (实际上是 RHEL)上的默认配置,这让我很惊讶它不能开箱即用。