PAM 可以与 Postfix 和 Dovecot SASL 一起使用吗?

PAM 可以与 Postfix 和 Dovecot SASL 一起使用吗?

我已经设置了后缀使用Dovecot SASL聚丙烯酰胺和 Unix 用户,以及用于本地邮箱存储的 Dovecot LDA (LMTP)。经过一些测试,发现收到的邮件被拒绝,原因是:

错误:[用户] 的 passdb 查找失败:配置的 passdb 不支持凭据查找

这既麻烦又令人困扰——我选择了基于 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 配置。任何建议都将不胜感激。

答案1

我不知道这是否是解决问题的正确方法(现在回来阅读anx 的评论passdb在我的原始帖子上让我怀疑是否如此),但我设法通过在 Dovecot 的配置中添加第二个条目来使查找和身份验证正常工作。

在 Dovecot 配置中,我先PAM 密码数据库带有密码密码数据库入口:

# e.g. /etc/dovecot/conf.d/auth-system.conf.ext
passdb { # This is not a typo
         # Passwd can be used both as a passdb and a userdb
    driver = passwd
}
passdb {
    driver = pam
    args = dovecot
}

这使得用户查找doveadm auth lookup [user]成功。然而,密码数据库无法认证用户,因为密码不再存储在/etc/passwdUnix 系统上的文件中。发生这种情况时,将继续使用 PAM 密码数据库进行查找,从而正确验证用户身份。可以使用以下命令对此进行测试doveadm auth test [user]


我将其添加为可接受的答案,因为解决方案/解决方法目前对我有用。如果有人有任何建议或知道如何以更好的方式解决这个问题,我很乐意接受它。只有 PAM 数据库是默认配置Rocky Linux(实际上是 RHEL),令我惊讶的是它不能开箱即用。

相关内容