我越来越
(交付暂时中止:SASL 身份验证失败;服务器 myserver.com[xxx.xxx.xxx.x] 表示:535 5.7.3 身份验证不成功)当我尝试将邮件从 Debian Lenny 盒上的 Postfix 2.5.5-1.1 中继到 Exchange 2010 时。
我想我尝试了所有可能的组合,但肯定遗漏了一些东西。以下是 main.cf 的相关部分:
broken_sasl_auth_clients = 是 smtp_sasl_auth_enable = 是 smtp_sasl_security_options = noanonymous smtp_sasl_password_maps = 哈希:/etc/postfix/sasl_passwd smtp_pix_解决方法 = smtp_sasl_type = cyrus smtp_always_send_ehlo = 是 中继主机 = myserver.com
我安装了 libsasl2-modules。有人成功在 Postfix 和 Exchange 之间中继邮件吗?哦,我已经仔细检查过密码是否正确。
答案1
Exchange 服务器将提供GSSAPI(Kerberos)但似乎为 Postfix 提供身份验证服务的 Cyrus SASL 并未配置为处理 GSSAPI。
man 5 postconf | less +/^smtp_sasl_mechanism_filter
这将告诉您需要设置什么smtp_sasl_mechanism_filter以便能够正确地进行身份验证。
答案2
看来,他们破坏了 AUTH LOGIN 实现。我也遇到过这种不幸的情况。以下是我发现的情况:
在 smtp 对话中,当 postfix 尝试执行登录验证时:
250 OK
AUTH LOGIN
334 VXNlcm5hbWU6
在用户名:字符串的末尾有一个 \0(二进制零),我认为它不应该在那里,无论如何,通过在对用户名和密码进行 base64 处理并发送到 exchange 之前在其末尾添加 \0(二进制零),我能够成功登录,但是我不知道如何告诉 postfix 在登录名和密码末尾附加 \0。
# echo -e 'username\0' | base64
abcdefg
# echo -e 'password\0' | base64
hijklmno
250 OK
AUTH LOGIN
334 VXNlcm5hbWU6
abcdefg
334 UGFzc3dvcmQ6
hijklmno
235 2.7.0 Authentication successful.