Назад | Перейти на главную страницу

проблема с использованием Postfix в качестве аутентифицированного ретранслятора SMTP-клиента в Exchange 2010

Я использую 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.