Перед тем как говорить о том, как работает маршрутизация, попробуем посмотреть когда сообщения маршрутизируются в Exchange 2007, и что происходит перед и после этого. Маршрутизация - это одна из функций компонента под названием Категоризатор (Categorizer), место которого в системе показано на следующем рисунке.

Как видно из рисунка (сильно упрощенно), Категоризатор отвечает за всю функциональность транспорта, которая не связана с "физическим" приемом и отправкой сообщений (протоколы) и хранением сообщений в очередях. Сообщения попадают в Категоризатор из Очереди входящих сообщений, которая формируется из сообщений, попавших в систему одним из следующих способов:
-
через SMTP от других Hub Transport, Edge Transport или Exchange 2000/2003 серверов, из Internet или от не-Exchange SMTP-серверов
-
через MAPI от Mailbox серверов, находящихся в том же AD Site, что и локальный Hub Transport сервер
-
сообщения могут быть "подобраны" из Pickup Directory
-
сообщения могут быть созданы и помещены в очередь программно (Агентами)
Пройдя через Категоризатор, сообщения помещаются в соответствующие очереди исходящих сообщений в зависимости от способа, которым осуществляется дальнейшая доставка:
-
SMTP очереди для связи с другими Hub Transport, Edge Transport или Exchange 2000/2003 серверами, Internet или не-Exchange SMTP-серверами
-
MAPI очереди для доставки сообщений в почтовые ящики, расположенные на Mailbox серверах, находящихся в том же AD Site, что и локальный Hub Transport сервер
-
сообщения могут быть сохранены в виде файлов в Drop Directory; этот механизм используется для связи с не-SMTP почтовыми системами.
Категоризатор состоит из 6 функциональных Стадий, через которые проходят сообщения, и следующий рисунок отображает их последовательность. Никаких промежуточных очередей сообщений между Стадиями нет.
-
1 Стадия - Событие OnSubmittedMessage: Все входящие сообщения обрабатываются Агентами, подписанными на событие OnSubmittedMessage. Типичный пример Агентов, работающих на этой стадии, это антивирусные программы.
-
2 Стадия - Resolver: Здесь происходит поиск адресов получателей и отправителей сообщений в Active Directory, "раскрытие" списков рассылки (DL expansion), проверка ограничений на отправку/прием сообщений и т.д. После этой стадии сообщения обычно содержат финальный список получателей, готовых к маршрутизации.
-
3 Стадия - Маршрутизация: Здесь принимаются решения, куда и как доставлять сообщения для разных получателей.
-
4 Стадия - Конвертирование: Здесь происходит конвертирование формата сообщений для внешних получателей (например из S/TNEF в HTML).
-
5 Стадия – Событие OnRoutedMessage: Возможность для Агентов обработать сообщения, "зная" информацию о маршрутизации всех получателей. Здесь реализуются такие функции как журнализация и Transport Rules.
-
6 Стадия – Помещение в очереди: Помимо указанной в названии стадии роли, здесь также реализована оптимизация выбранных маршрутов (Delayed Fanout).
Указанная выше информация относится к Hub Transport роли. Edge Transport серверы реализуют подмножество перечисленных функций и не включают прием и отправку сообщений через MAPI и поддержку Drop Directory. Категоризатор в Edge Transport не содержит Стадии 2 (Resolver) и 4 (Конвертирование).