Как и обещал пишу о том как письма маршрутизируются между Exchange серверами. Разговор в этой заметке пойдет только о внутренней почте. Как почта отсылается вне организации или принимается из вне это отдельный разговор.
В случае одного сервера все просто и понятно. Клиенты направляют почту на этот сервер и получают с него.
В случае двух серверов тоже все просто. Если есть сервер С1, на котором пользователи С1П1 и С1П2 и сервер С2 с пользователем С2П1, то если С1П1 посылает письмо С1П2, то письмо остается на том же сервере С1 и ложится в почтовый ящик пользователя С1П2. Если же пользователь С1П1 посылает письмо пользователю С1П1, то письмо сначала попадает на сервер С1, потом пересылается на сервер С2, где попадает в почтовый ящик адресата.
Если у организации есть 2 подразделения, находящиеся на большом расстоянии и соединение между ними медленное и дорогое, то конфигурация из двух серверов выгодна и с точки зрения загрузки канала и с точки зрения скорости доступа пользователя к своему почтовому ящику. Только письма с адресатам из другого подразделения будут пересылаться по медленному соединению. При этом у пользователей каждого подразделения будет свой сервер с быстрым доступом.
Интересное начинается когда есть 3 или более сервера. В этом случае начинаются отличия в том как можно конфигурировать маршрутизацию писем в случае Exchange Server 2007 и в случае Exchange Server 2003.
Exchange Server 2003
В Exchange Server 2003 администратор мог создать группы маршрутизации (routing groups) и описать как они соеденены между собой.
Например, администратор мог определить 3 группы маршрутизации: ГМ1, ГМ2 и ГМ3 и соеденить их следующим образом:
ГМ1 <-> ГМ2 <-> ГМ3
Допустим в каждой из групп по одному серверу: С1 в ГМ1, С2 и С3 соответственно. А также допустим есть следующие пользователи на каждом из серверов: С1П, С2П, С3П.
ГМ1 <-> ГМ2 <-> ГМ3
| | |
С1 С2 С3
| | |
С1П С2П С3П
Если пользователь С1П посылает письмо пользователю С2П, то письмо сначала попадает на сервер С1, потом пересылается на сервер С2, где попадает в почтовый ящик пользователя С2П.
Если пользователь С1П посылает письмо пользователю С3П, то письмо сначала попадает на сервер С1, потом пересылается на сервер С2, потом пересылается с сервера С2 на С3, где и попадает в почтовый ящик пользователся. Т.е. при пересылке писем внутри организации, письмо останавливается на одном из серверов в каждой группе маршрутизации в цепочке ведущей от отправителя к получателю.
Exchange Server 2007
В Exchange Server 2007 мы отказались от использования групп маршрутизации. Вместо этого используется концепция, которая уже существует в Active Directory, - сайты (site).
Я не знаю наверняка какие именно причины привели к этому изменению, но я вижу несколько достоинств в этом переходе от групп маршрутизации к сайтам:
- Упрощение администрирования. В большинстве случаев топология групп маршрутизации была такой же как топология сайтов. В результате администраторам приходилось конфигурировать топологию дважды: используя сайты и используя группы маршрутизации.
- Разделение обязонностей между администраторами Active Directory и администраторами Exchange. В большинстве компаний со сложной инфраструктурой существуют отдельные подразделения занимающиеся администрированием Active Directory и Exchange. Обычно администраторы Active Directory знакомы с топологией сети и занимаются администрированием сайтов. Администраторы же Exchange несут ответственность за все объекты, создаваемые Exchange Server. Переход от групп маршрутизации к сайтам позволяет сделать это разделение обязонностей более четким: администраторам Exchange не надо знать и заботится о топологии сети, а администраторам Active Directory не надо настраивать группы маршрутизации.
Маршрутизация писем тоже изменилась. Вместо того, чтобы пересылать письма от одного сайта к другому в цепочке (так как это было с группами маршрутизации), письмо направляется напрямую в сайт адресата. При этом все остальные сайты в цепочке используются только для отката в случае ошибки.
Проще всего объяснить это на примере. Допустим есть следующая топология:
Сайт1 - Сайт2 - Сайт3
| |
Сайт4 - Сайт5
Допустим пользователь, чей почтовый ящик находится в сайте Сайт1, посылает письмо пользователю, чей почтовый ящик находится в сайте Сайт5.
Для пересылки письма вычисляется самый дешевый путь от сайта Сайт1 к сайту Сайт2 (на межсайтовых соеденениях (inter-site links) в Active Directory можно указать условную стоимость соединения). Допустим самый дешевый путь это Сайт1 -> Сайт2 -> Сайт3 -> Сайт5.
Сначала письмо попадает на сервер отправителя (также как и было раньше). Сервер отправителя сначала попытается отправить письмо напрямую в сайт получателя, т.е. Сайт5. Если это не получилось, то он попытается послать в Сайт3 ближайший сайт к сайту Сайт5 в цепочке построенной ранее. При этом сервер в сайте Сайт3 берет на себя обязанность переслать письмо в Сайт5. Если не получилось послать в Сайт3, то сервер из сайта Сайт1 попытается послать письмо в Сайт2.
Достоинств у такого подхода несколько:
- Письма доставляются быстрее поскольку письмо обычно не будет задерживаться на сайтах в середине пути.
- Уменьшается нагрузка на Exchange серверах поскольку серверам в середине пути в большинстве случаев не надо будет обрабатывать письмо.
Совместимость Exchange Server 2003 и Exchange Server 2007
Естественный вопрос, который возникает при таком значительном изменении в дизайне маршрутизации, - это вопрос совместимости между различными версиями Exchange.
В Exchange Server 2007 вопрос совместимости с Exchange Server 2003 (в плане маршрутизации) решается следующим образом. Создается одна группа маршрутизации (концепция, которую предыдущая версия Exchange прекрасно понимает) и в нее добавляются все сервера Exchange Server 2007.