Я использую postfix для пересылки почты в Exchange 2010. Вот моя конфигурация:
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). С этой конфигурацией я могу ретранслировать электронную почту в Exchange. Проблема в том, что сообщение, отправленное из Postfix, имеет заголовок:
X-MS-Exchange-Organization-AuthAs: Anonymous
и сообщение обрабатывается как неавторизованное сообщение в системе Exchange (т.е. при отправке в группу рассылки требуется аутентификация отправителей, я получил ошибку: # 550 5.7.1 RESOLVER.RST.AuthRequired; аутентификация требуется ## rfc822; group@exchange.2010) . Я использую Outlook с той же учетной записью, что и в Postfix, и он может отправлять без проблем. Различия, которые я понял между двумя случаями, таковы: Outlook отправляет с помощью механизма аутентификации NTLM, Postfix использует механизм LOGIN. Любая идея?
У меня та же проблема. И это вызывает проблемы, если электронное письмо отправляется группе, а не отдельному человеку. Сервер Exchange не будет отправлять сообщения группам, если сообщение не аутентифицировано. Но если postfix настроен на аутентификацию при входе в систему, почему электронная почта не аутентифицируется? Подсказка: если вы используете telnet для отправки почты, электронное письмо воля быть AUTH'd. заголовок электронного письма будет X-MS-Exchange-Organization-AuthAs: Internal
(в моем случае). И письмо пойдет по группам!
Вот что я обнаружил (установив уровень ведения журнала postfix peer равным 4): postfix отправляет команду SMTP Mail From: ...... AUTH=<>
. Оставь AUTH=<>
и все хорошо. Вставьте его, и Exchange говорит: .... Anonymous
.
Я сейчас ищу, чтобы узнать, почему postfix врет.
Ах. Нашел. Строка 1358 из smtp_proto.c
в postfix v2.8. Жестко закодирован. Ну теперь. Это очень прискорбно. Код вполне правильный с точки зрения безопасности, но не правильный, если у вас есть контроль над тем, кто получает этот код отправки SMTP в вашем SMTP-клиенте postfix.
/* 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
и построить постфикс с нуля. Фу.
Согласно ответу 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.