Настройте 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
Дальнейшие вещи, которые я попробовал:
- Положил
MAIN_TLS_ENABLE = 1
вexim4.conf.localmacros
( http://blog.xig.ch/Exim-Smarthost-mit-Authentifizierung-%FCber-STARTTLS_127.html) - Шаги описаны в https://askubuntu.com/questions/167043/how-do-i-configure-exim4-to-send-mail-through-a-password-protected-ssl-smtp-mail
Итак, обязательный вопрос: как мы можем заставить 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'