SASL 身份验证失败:客户端响应与我们生成的响应不匹配

SASL 身份验证失败:客户端响应与我们生成的响应不匹配

以下教程用于设置虚拟邮件服务器:

如何在 GNU / Linux 系统上设置邮件服务器

一切正常,但每次发送消息时都会出现以下错误:

mail postfix/smtpd[10569]: warning: SASL authentication failure: client response doesn't match what we generated (tried bogus)
mail postfix/smtpd[10569]: warning: unknown[so.me.ext.ip]: SASL DIGEST-MD5 authentication failed: authentication failure
mail postfix/smtpd[10569]: 1298562035: client=unknown[so.me.ext.ip], sasl_method=LOGIN, [email protected]

然后它继续并发送消息。

据此,etc/postfix/sasl/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login cram-md5 digest-md5
log_level: 7
allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: mailuser
sql_passwd: mailpassword
sql_database: maildb
sql_select: select crypt from users where id='%u@%r' and enabled = 1

除了digest-md5部分之外工作正常,该部分然后直接移动到登录(并成功发送消息)。

此外,/etc/default/saslauthd(省略 # 文本)

START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="pam"
MECH_OPTIONS=""
THREADS=5
#OPTIONS="-r -c -m /var/spool/postfix/var/run/saslauthd"
OPTIONS="-r -c -m /var/run/saslauthd"

在postfix的chroot环境下工作没有问题,否则会报错

warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory

这是一个旧的设置,已经像魅力一样工作了大约四年,但我仍然想确保这些消息并不意味着中间有什么问题。

答案1

你的问题帮助我挖掘...我最近将我的邮件服务器从 Ubuntu 14.04 LTS 升级到 18.04 LTS,这真是一场噩梦。但最终一切正常:)

你的错误:

SASL authentication failure: client response doesn't match what we generated (tried bogus)

是由我的配置包含以下内容引起的/etc/postfix/sasl/smtpd.conf

mech_list: plain login cram-md5 digest-md5

Postfix SASL 指南声明仅支持普通登录,并且“如果允许客户端选择其他机制,则身份验证将失败”,因此该行应为:

mech_list: plain login

最后一行:

warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory

是由现在在 chroot 中运行的 postfix 引起的,并且/var/run/saslauthd/已移至/var/spool/postfix/var/run/saslauthd/.

这是在末尾设置的/etc/default/saslauthd

OPTIONS="-c -r -m /var/spool/postfix/var/run/saslauthd"

请注意,我添加了 -r 标志以在身份验证时包含领域(例如:它将使用[email protected]而不是进行身份验证aaron)。


最后我还必须/etc/pam.d/smtp使用以下内容进行创建:

auth    required   pam_mysql.so user=mail passwd=******** host=******** db=maildb table=users usercolumn=id passwdcolumn=crypt crypt=1
account sufficient pam_mysql.so user=mail passwd=******** host=******** db=maildb table=users usercolumn=id passwdcolumn=crypt crypt=1

我相信你现在已经明白了这一点,但无论如何我还是要分享,以拯救其他可怜的灵魂免于白发。后灰...:/

相关内容