调试 Postfix Saslauthd PAM-PGsql 身份验证失败

调试 Postfix Saslauthd PAM-PGsql 身份验证失败

我已经设置 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/smtpimap?您的日志显示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

来源:[github] 官方仓库

相关内容