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

проблема с использованием 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;[email protected]). Я использую Outlook с той же учетной записью, что и в Postfix, и он может отправлять без проблем. Разница, которую я понял между двумя случаями, заключается в следующем: Outlook отправляет с помощью механизма аутентификации NTLM, Postfix использует механизм LOGIN. Есть идеи?

решение1

Согласно ответу 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.

решение2

У меня та же проблема. И это вызывает проблемы, если письмо отправляется группе, а не отдельному лицу. Сервер Exchange не отправляет сообщения группам, если сообщение не AUTH'ed. Но если postfix настроен на аутентификацию путем входа в систему, почему письмо не AUTH'ed? Подсказка: если вы используете telnet для отправки письма, письмоволябыть AUTH'd. заголовок, который будет иметь электронное письмо, будет X-MS-Exchange-Organization-AuthAs: Internal(в моем случае). И электронное письмо будет отправлено группам!

Вот что я обнаружил (установив уровень ведения журнала одноранговых соединений postfix на 4): postfix отправляет команду SMTP Mail From: ...... AUTH=<>. Оставьте AUTH=<>out и все будет хорошо. Вставьте его и Exchange скажет, .... Anonymous.

Теперь я пытаюсь выяснить, почему постфикс лжет.

Ага. Нашел. Строка 1358 в smtp_proto.cpostfix v2.8. Жестко закодирована. Ну, теперь. Это очень досадно. Код вполне корректен с точки зрения безопасности, но некорректен, если у вас есть контроль над тем, кто получает этот код отправки SMTP в вашем postfix 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и собрать Postfix с нуля. Фу.

Связанный контент