Настройте exim4 для использования Microsoft Exchange в качестве smarthost

Моя компания недавно установила управляемую Active Directory среду Microsoft Exchange для консолидации исходящей почты. У нас есть набор промежуточных серверов, которые теперь должны использовать наш MSEXCHG в качестве smarthost для исходящей почты.

Эти серверы расположены в демилитаризованной зоне. Почему именно решение для аутентификации в Exchange 2010 smarthost? это не альтернатива, поскольку мы не можем позволить серверу в демилитаризованной зоне просто отправлять почту по своему усмотрению через наш сервер Exchange.

Вещи, которые мы сделали в MSEXCHG:

  • Добавить пользователя (stagingserver@contoso.com)

Вещи, которые мы сделали в exim4 (8):

  • С помощью update-exim4.conf (8) (ср exim4_files (5)) мы настроили exim для использования exchange.contoso.com:587 как умный хост.
  • В passwd.client (exim4_files (5)) Я добавил следующую строку: exchange.contoso.com:stagingserver@activedirectory.contoso.com:secret123)

После запуска exim с конфигурацией, описанной выше, я получаю следующие две ошибки TLS в mainlog:

  • TLS error on connection to ex.contoso.com [192.168.1.8] (recv): A TLS packet with unexpected length was received.
  • TLS error on connection to ex.contoso.com [192.168.1.8] (send): The specified session has been invalidated for some reason.

Наш MSEXCHG затем отказывается отправлять почту, и появляется следующая (окончательная) запись в журнале:

** kiewiet@contoso.com R=smarthost T=remote_smtp_smarthost: SMTP error from remote mail server after MAIL FROM:<root@contoso-stage.com> SIZE=1538: host ex.contoso.com [192.168.1.8]: 530 5.7.1 Client was not authenticated

Дальнейшие вещи, которые я попробовал:

Итак, обязательный вопрос: как мы можем заставить exim использовать нашу среду MSEXCHG в качестве smarthost?

3 ответа

Решение

Наша проблема была довольно специфичной для нашей установки. У нас есть несколько серверов Exchange, работающих параллельно с балансировщиком нагрузки, действующим как точка доступа. LB был неправильно настроен, из-за чего он пренебрег предложением какой-либо панели методов аутентификации NTLM а также GSSAPI даже после успешного STARTTLS рукопожатие.

Углубленное тестирование через swaks jetmore.org (очень рекомендую этот инструмент) показал это.

Есть ли в вашей организации собственный центр сертификации для внутренних серверов? Возможно, вам нужно добавить сертификаты CA для сервера Exchange в хранилище сертификатов для Exim? Многие продукты не очень хорошо сообщают об этой ошибке (я не знаю, есть ли Exim или нет).

Wireshark (сначала захватить на сервере с tcpdump -p -s0 -w /tmp/foo.pcap затем скопировать на локальную рабочую станцию ​​с Wireshark) должен иметь возможность показать сертификат сервера, отправленный с Exchange, и если клиент зависает после этого, то пропущенный сертификат CA является распространенной причиной.

Проблема связана с сертификатами TLS. Порядок решения:

Установите openssl (если отсутствует)

sudo apt-get установить openssl

Создайте собственные сертификаты

sudo /usr/share/doc/exim4-base/examples/exim-gencert

Добавить TLS в основной SMTP

sudo nano /etc/exim4/exim4.conf.localmacros

или выберите ваш файл.conf по умолчанию

main_tls_enable='1'

Другие вопросы по тегам