Вопрос или проблема
ПРОБЛЕМА:
Экземпляр Exchange Server 2019, работающий за обратным веб-прокси Apache (2.4.6) на CentOS 7. Клиентские машины имели конфигурацию Outlook Anywhere для удаленного доступа к их электронной почте через стандартный Outlook (Outlook для Windows). Конфигурация была стабильной, и всё работало хорошо в течение нескольких лет.
Была развернута новая система Apache (2.4.62), работающая на Rocky Linux 9, и перенесены все детали конфигурации для настройки обратного веб-прокси. Все операции продолжали работать правильно, за исключением того, что пользователи внезапно обнаружили, что Outlook для Windows время от времени запрашивает у них учетные данные – то есть приложение в основном продолжало работать, с отправкой и доставкой почты, но во время регулярного использования соединение произвольно прерывалось, и вновь появлялась форма для ввода учетных данных.
РЕШЕНИЕ:
Более недавние версии Apache по умолчанию используют модуль worker MPM вместо модуля prefork MPM. Редактирование файла /etc/httpd/conf.modules.d/00-mpm.conf
с отключением mod_mpm_worker и включением mod_mpm_prefork восстановило прежнее поведение и позволило соединениям Outlook для Windows работать должным образом.
# Выберите MPM-модуль, который должен быть использован, раскомментировав ровно
# одну из следующих строк LoadModule. См. руководство httpd.conf(5) для
# получения дополнительной информации о смене MPM.
...
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
Согласно этому комментарию, поведение оказывается аналогичным для Sharepoint, что предполагает, что ряд сервисов Microsoft не работает корректно, когда модуль MPM worker включен.
Ответ или решение
Проблема:
Ваша организация использует Exchange Server 2019, размещённый за Apache Reverse Web Proxy на базе CentOS 7. Долгое время это решение функционировало стабильно: Outlook for Windows работал, позволяя пользователям подключаться к электронной почте удалённо. Однако, после развёртывания новой системы на базе Apache 2.4.62 с использованием Rocky Linux 9 и переноса всей конфигурации для обратного прокси-сервера, пользователи начали замечать прерывные запросы на ввод учётных данных. Хоть доставка и отправка электронной почты продолжались как обычно, периодически требовалась повторная авторизация, что снижало производительность и вызывало неудобство.
Теория:
Переход с одной операционной системы на другую, даже при сохранении конфигураций, может привести к неожиданным изменениям в работе сервисов. В данном случае, причиной возникновения проблемы стал используемый по умолчанию модуль MPM (Multi-Processing Module) в более новых версиях Apache. MPM отвечает за многопоточность и управление соединениями. Существует несколько типов MPM, каждый из которых имеет свои особенности:
-
Prefork MPM: Этот модуль использует многопроцессный подход, где каждый процесс обслуживает одно соединение. Он обеспечивает стабильность и предсказуемость, что особенно важно для сервисов, требующих постоянного и надёжного соединения.
-
Worker MPM: Более современный модуль, использующий многопоточный и многопроцессный подход. Он более эффективен с точки зрения ресурсов и может обрабатывать большие нагрузки. Однако его многопоточная природа может вызывать проблемы с определёнными приложениями, не оптимизированными под многопоточность.
-
Event MPM: Улучшенная версия Worker, которая дополнительно оптимизирует обработку постоянных соединений (keep-alive).
Проблема заключается в том, что Microsoft Outlook может некорректно работать с многопоточными MPM, из-за чего происходят прерывания в соединении и повторные запросы на аутентификацию.
Пример:
Ваша ситуация схожа с аналогичными проблемами, возникающими у пользователей SharePoint, когда за Apache установлен Worker или Event MPM. Некоторые службы Microsoft имеют специфичные требования к серверу и демонстрируют некорректное поведение при использовании модулей, отличных от Prefork.
Применение:
Решение проблемы заключается в переключении модуля MPM на сервере Apache. Необходимо:
-
Открыть конфигурационный файл
/etc/httpd/conf.modules.d/00-mpm.conf
на вашем сервере. -
Внести изменения, закомментировав строку, загружающую
mod_mpm_worker
, и раскомментировав строку дляmod_mpm_prefork
. -
Перезапустить службу Apache для применения изменений.
# Откройте файл конфигурации для редактирования
vi /etc/httpd/conf.modules.d/00-mpm.conf
Вот пример того, как должен выглядеть файл после изменений:
# Отключаем модуль worker и включаем prefork
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
#LoadModule mpm_event_module modules/mod_mpm_event.so
Сохраните изменения и перезапустите Apache:
systemctl restart httpd
Эти изменения должны вернуть работу Outlook к предыдущему стабильному состоянию без неожиданных запросов на вход.
Компаниям, чьи ИТ-ландшафты включают Microsoft Exchange или другие специфичные сервисы Microsoft, рекомендуется тщательно выбирать и тестировать MPM в производственных средах, чтобы избежать непрогнозируемых проблем. Важно следовать рекомендациям по конфигурации как от поставщиков серверного ПО, так и от компании Microsoft для обеспечения максимальной совместимости.