如何设置 sendmail 以使用 CRAM-MD5 身份验证?

如何设置 sendmail 以使用 CRAM-MD5 身份验证?

我在 RedHat 7.1 机器上运行 sendmail。我想将其配置为使用 PLAIN 或 CRAM-MD5 进行身份验证。我让它与 PLAIN 一起工作(因此我知道客户端工作正常,我的用户名/密码正确,等等),但 CRAM-MD5 总是返回“535 5.7.0 身份验证失败”。为了进行测试,我使用了一个使用 smtplib 模块的简单 python 脚本;我假设他们对 CRAM-MD5 的实现是正确的。

它使用“AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN”响应 EHLO,并在我发送“AUTH CRAM-MD5”时发送质询,因此它确实接受 CRAM-MD5 请求,但拒绝对其进行身份验证。

我知道 CRAM-MD5 要求服务器能够访问明文密码;可能不需要吗?我怎么知道?如果不行,我该如何配置机器才能做到这一点?

我已将用户名 / 密码添加到 /etc/mail/authinfo 并运行map hash /etc/mail/authinfo < /etc/mail/authinfo。 /var/log/maillog 文件中没有错误消息。

答案1

根据sasl 系统管理员文档

For simplicity sake, the Cyrus SASL library stores plaintext
passwords only in the /etc/sasldb2 database. These passwords
are then shared among all mechanisms which choose to use it.
...
The "saslpasswd" utility is provided to change the secrets in
sasldb. It does not affect PAM, /etc/passwd, or any other
standard system library; it only affects secrets stored
in sasldb.

但是,一些供应商可能会在编译时改变事物的位置,因此strings在 sasl 二进制文件上strace可能有必要揭示究竟在saslauthd查找什么位置。

答案2

这可能会对某人有所帮助......

当你运行时sendmailconfig它会说......“不幸的是,没有自动迁移到/etc/sasldb2的方法”

对我来说,这意味着:它出了问题。

所以我刚刚删除了 sasldb2(认为它无论如何都很乱。)也许那没有必要,也许我只需要将我的用户添加到其中?

无论如何,我运行了saslpasswd2它,我假设它创建了一个没有用户的空数据库。用户身份验证直到我运行后才起作用...

saslpasswd2 -c username提示输入密码。

这非常有效 :-)

我正在使用带有 sasl2-bin 的 Debian 9,这是sendmailconfig推荐的。

相关内容