我使用的是后缀中继邮件到Exchange 2010.这是我的configuration:
relayhost = [smtp.exchange.2010] smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/relay_passwd smtp_sasl_security_options = #smtp_sasl_mechanism_filter = ntlm
(/ etc / postfix / relay_passwd包含Exchange上某些帐户的login信息)使用此configuration,我可以将电子邮件中继到Exchange。 问题是:从Postfix发送的消息具有头文件:
X-MS-Exchange-Organization-AuthAs: Anonymous
并且在Exchange系统上将邮件视为unAuthenicated邮件(即发送到通讯组时要求发件人进行身份validation,则收到错误:#550 5.7.1 RESOLVER.RST.AuthRequired;需要身份validation## rfc822; [email protected]) 。 我使用与Postfix相同的帐户使用Outlook,它可以发送没有问题。 我认识到的两种情况的不同是:Outlook使用NTLM身份validation机制发送,Postfix使用LOGIN机器。 任何想法?
根据AlexRobinson的回答,问题在于Postfix。 这个固定(默认)在Postfix 2.9和更高版本中: http : //www.postfix.org/postconf.5.html#smtp_send_dummy_mail_auth
[Incompat 20111106] To work around broken remote SMTP servers, the Postfix SMTP client by default no longer appends the "AUTH=<>" option to the MAIL FROM command. Specify "smtp_send_dummy_mail_auth = yes" to restore the old behavior.
我也有同样的问题。 如果电子邮件发送给群组而不是发送给个人,则会导致问题。 如果邮件不是AUTH'd,Exchange服务器将不会发送到组。 但是,如果postfix被设置为通过login进行身份validation,为什么邮件不是AUTH'd? 线索:如果使用telnet发送邮件,邮件将被AUTH'd。 电子邮件的头将是X-MS-Exchange-Organization-AuthAs: Internal (在我的情况下)。 而电子邮件将会去团体!
这是我发现(通过设置后缀对等日志logging级别为4):postfix发送SMTP命令Mail From: ...... AUTH=<> 。 把AUTH=<>出去,一切都很好。 把它放进去,交换说, .... Anonymous 。
我现在看看为什么postfix谎言。
啊。 find了。 postfix v2.8中的smtp_proto.c行1358。 硬编码。 现在好了。 这是最不幸的。 从安全的angular度来看,代码是非常正确的,但是如果您有权控制在您的postfix SMTP客户端中接收此SMTP发送代码的人员,则不正确。
/* postfix: smtp_proto.c #ifdef USE_SASL_AUTH if (var_smtp_sasl_enable && (session->features & SMTP_FEATURE_AUTH)) vstring_strcat(next_command, " AUTH=<>"); #endif
在这一点上,我不知道该怎么做,而不是补丁smtp_proto.c和从头开始构build后缀。 呸。