PAM 无法通过 mysql 进行身份验证(make_scrambled_pa​​ssword 已弃用)

PAM 无法通过 mysql 进行身份验证(make_scrambled_pa​​ssword 已弃用)

我花了一些时间搜索这个问题,似乎我是唯一一个由于当前更新而遇到 PAM 无法通过 mysql 进行身份验证问题的人,所以我想我将在这里发布我的问题,如果我找到解决方案,我也会在这里发布以供其他人关注。

简而言之 - 我正在使用 saslauthd 和 dovecot 运行 postfix。两者都通过 pam 使用 mysql 作为凭证​​源进行身份验证。

一切都运行正常,直到今天更新 - 我无法再连接到邮件服务器,以下是我在日志中看到的内容:

PAM unable to dlopen(/usr/lib/security/pam_mysql.so): /usr/lib/security/pam_mysql.so:     undefined symbol: make_scrambled_password
PAM adding faulty module: /usr/lib/security/pam_mysql.so
DEBUG: auth_pam: pam_authenticate failed: Module is unknown
do_auth         : auth failure: [user=xxxx] [service=smtp] [realm=xxxx] [mech=pam] [reason=PAM auth error]

所以我可能是错的,但据我了解,pam_mysql.so 使用的是已弃用的 make_scrambled_pa​​ssword,mysql 不再支持该功能。

我不知道解决方案是什么,如果有人能提供建议我将不胜感激。


我检查了项目页面上的源代码,发现正在使用弃用函数。因此,这似乎是 pam_mysql 中的一个错误,需要更新([pam_mysql sourceforge 页面上报告的错误][1] 以及 arch 社区错误跟踪器(https://bugs.archlinux.org/task/39083?project=5&pagenum=1))


我在互联网上看到了一些解决方法补丁(https://lists.fedoraproject.org/pipermail/scm-commits/2011-June/613231.html) 但我不确定这是否适合生产环境。看来我必须自己修补它。我会在这里发布补丁供其他人使用。

非常感谢,格雷格

答案1

由于 pam_mysql 项目已停产近 6 年,因此现已停止对其的支持。解决方案是迁移并使用另一个 pam 后端。

我之前使用的是 cyrus sasl - 现已卸载并替换为 dovecot,它提供 postfix 识别的 smtpd 身份验证后端。我将 dovecot 配置为本机使用 sql(中间没有 pam)。

相关内容