我已经设置 pam-pgsql 来通过 Saslauthd 在我的数据库中查找 Postfix 的密码。
我可以使用命令行测试凭据:
$ sudo testsaslauthd -u [email protected] -p password
0: NO "authentication failed"
身份验证会失败,我不知道为什么。
$ sudo tail /var/log/auth.log
Feb 5 15:33:12 saslauthd[7460]: pam_unix(imap:auth): check pass; user unknown
Feb 5 15:33:12 saslauthd[7460]: pam_unix(imap:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost=
Feb 5 15:33:14 saslauthd[7460]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
Feb 5 15:33:14 saslauthd[7460]: do_auth : auth failure: [[email protected]] [service=imap] [realm=] [mech=pam] [reason=PAM auth error]
我如何知道 pam-pgsql 正在做什么?我如何获得更多有用的消息?
答案1
过去的乔恩!我能解答你所有的问题。
您的日志中有一个线索:
saslauthd[8044]: pam_unix(imap:auth): check pass; user unknown
还记得您是如何输入 PAM 配置的/etc/pam.d/smtp
吗imap
?您的日志显示imap
?是的,您正在尝试在错误的服务上进行身份验证。
我实际上在 Postfix SASL 手册中找到了解决方案,就在在哪里找到 Sasl 测试命令:
测试 saslauthd 身份验证
-s smtp
如果 saslauthd 配置为联系 PAM 身份验证框架,请指定额外的“
是的,你很快就会发现正确的调用是:
$ sudo testsaslauthd -u [email protected] -p password -s smtp
0: OK "Success."
答案2
我假设您已经通过接受调试参数的配置文件 /etc/pam_pgsql.conf 配置了此模块:
database = db
user = user
[...]
debug = 1
您还应该将一个全局调试参数附加到 pam 配置行:
auth required pam_pgsql.so debug