вторник, 31 мая 2011 г.

MS Exchange 2007/2010 - Edge Subscription

imageПри внедрении в организации почтовой системы на базе сервера Microsoft Exchange 2007/2010, компания Microsoft рекомендует использовать в качестве пограничного транспортного сервера, сервер Exchange с ролью Edge. В данной статье мы обсудим вопрос синхронизации данных между пограничным транспортным сервером и основной организацией Exchange.

Будем рассматривать рекомендуемый компанией Microsoft сценарий, когда пограничный транспортный сервер не является членом основного домена Active Directory, а входит в рабочую группу. В этом случае, для успешной обработки входящего и исходящего потока почты ему нужно быть особым образом сконфигурированным. Здесь есть два варианта:

1. Ручное создание отправляющих и получающих соединителей, как на Edge-сервере, так и на Hub`e;

2. Автоматическая настройка при помощи подписки (Edge Subscription) на транспортный сервер (Hub Transport) в основной организации Exchange.

Что касается первого варианта, то это далеко не самый правильный подход и если коротко, то он будет заключаться в ручном создании следующих соединителей (см.рис.1):

1. Получение внешней почты Edge сервером (уже существует);
2. Оправка почты с Edge-сервера на Hub-сервер;
3. Получения Hud-сервером почты с Edge-сервера (уже существует);
4. Отправка локальной почты в Интернет через Edge-сервер;
5. Прием Edge-сервером почты с Hub-сервера (уже существует);
6. Отправка Edge-сервером почты в Интернет.

clip_image001

Рис.1: Маршрутизация сообщений через Edge Transport.

Как вы видите, дело весьма хлопотное, к тому же, лишающее нас некоторых «вкусностей», которые дает непосредственное подключение к базе данных Active Directory (например, функция фильтрации получателей). Следовательно, этим путем мы не пойдем, а сделаем все «по уму», для этого более подробно рассмотрим второй вариант.

Edge Synchronization

Edge Synchronization (EdgeSync) – это процесс синхронизации Edge-сервера с сайтом Active Directory, через сервер HUB Transport. Данный процесс устанавливается в ходе создание пограничной подписки (Edge Subscription). Полученную в ходе синхронизации информацию, сервер хранит в своей собственно базе данных, которой управляет служба облегченного доступа к каталогу AD LDS (Active Directory Lightwight Directory Service). База данных AD LDS работает на том же самом движке ESE (Extensible Storage Engine), что и «настоящая» база данных АД, и содержит в себе очень сильно урезанную её реплику.

Примечание: Для изменения портов и каталогов, используемых службами AD LDS, можно воспользоваться поставляемым с Exchange 2010 сценарием ConfigureAdam.ps1

Нужно заметить, что синхронизация носит отнюдь не односторонний характер. В процессе синхронизации, создается сопоставление членства пограничного транспортного сервера в сайте Active Directory, другими словами, для Edge-сервера создается отдельный объект в базе данных AD, одним из свойств которого является атрибут msExchServerSite равный имени сайта, в который входит Hub Transport, на который произведена подписка (см.рис.2). Это позволяет всем транспортным серверам организации, маршрутизировать сообщения до Edge`a при помощи внутренней таблицы маршрутизации, построенной на базе связей между сайтами Active directory (т.е. отдельный соединитель отправки с Hub`a на Edge не нужен!).

clip_image003

Рис.2: Объект пограничного транспортного сервера (Edge) в базе данных Active Directory.

Подробнее про маршрутизацию сообщений между сайтами можно почитать в статье «Маршрутизация сообщений Microsoft Exchange 2010 в многосайтовой среде Active Directory»

Примечание: К одному сайту может быть подключено несколько Edge-серверов, но один Edge-север может быть связан только с одним сайтом.

Пограничная подписка (Edge Subscription)

Пред конфигурированием подписки необходимо указать на Edge-сервере DNS-суффикс вашего домена!

Создать и активировать подписку Edge сервера совсем не трудно, для этого нужно выполнить два несложных действия:

1. Генерируем XML-файл подписки на Edge-севере при помощи команды:

New-EdgeSubscription –FileName "c:\temp\Edge.xml"

В результате сервер удалит свою конфигурацию маршрутизации (соединители отправки и обслуживаемые домена) и приготовится получить её с Hub Transport`a, также будет заблокирован ряд командлетов. Параметры, которые Edge получает c Hub Transport`a теперь нельзя будет изменять на нем, все настройки нужно будет делать на Hub`e и в ходе синхронизации они автоматически будут применены на Edge`e.

2. Копируем XML-файл на HUB и активируем подписку. Это можно сделать либо через командлет New-EdgeSubscriprion, либо при помощи мастера (рис.3):

clip_image005

Рис.3: Активация подписки при помощи мастера.

Примечание: Не забудьте оставить галочку «Автоматически создать соединитель отправки для этой пограничной подписки»!

После того, как подписка будет создана, Hub Transport предпримет попытку создать защищенную LDAP сессию по TCP порту 50636 с Edge-сервером. Предварительно будет сгенерирован открытый ключ для шифрования LDAP сессии, и этот ключ будет помещен в атрибут msExchEdgeSyncCredential объекта сервера Hub Transport. Спустя непродолжительное время все сервера с ролью Hub Transport в сайте «узнают» из базы данных Active Directory о том, что сайт подключен к Edge-серверу и соответствующим образом изменят свои таблицы маршрутизации.

Примечание: Подписка может быть создана между транспортными серверами с разной версией сервера Exchange (например Hub 2010, а Edge – 2007), но в таком случае каждый раз будет происходить полная синхронизация, а не передача дельты с изменениями.

После завершения первой синхронизации на сервере Hub Transport будет создан специальный конфиг, в рамках которого Hub по расписанию будет синхронизировать изменения. Подробно конфигурацию синхронизации можно посмотреть при помощи команды:

Get-EdgeSyncServiceConfig | FL

clip_image007

Рис.4: Параметры синхронизации.

Как мы видим из рис.4, при помощи командлета Set-EdgeSyncServiceConfig мы можем настроить много различных параметров, например, интервалы синхронизации для конфигурации и получателей (ConfigurationSyncInterval и RecipientSyncInterval), параметры монопольной блокировки прав синхронизации экземпляром службы EdgeSync (LockDuration и LockRenewalDuration) (блокировка делается с той целью, чтобы во время синхронизации никакая другая служба EdgeSync не смогла выполнять синхронизацию), а также включить ведение логов изменив значение LogLevel с None на Low, Medium или High.

Проверка состояния подписки

Первым признаком того, что подписка прошла удачно является появление соединителей отправки и обслуживаемых доменов на Edge-сервере.

Чтобы форсировать процесс синхронизации вы можете в ручном режиме запустить командлет Start-EdgeSynchronization. Если у вас несколько серверов, то можно указать непосредственно, кого с кем синхронизировать, следующим образом:

Start-EdgeSynchronization –TargetServer Edge1 –Server Hub1

Если по каким-либо причинам синхронизация не прошла, то командлет Test-EdgeSynchronization поможет вам локализовать проблему. К нему также применимы различные параметры, подробнее о которых можно почитать в библиотеке TechNet`a (http://technet.microsoft.com/en-us/library/aa996925.aspx)

Кроме того, можно просмотреть данные, которые находятся непосредственно в базе данных AD LDS на Edge-сервере. Для этого на Edge`e запустим оснастку ADSIEdit и подключимся к контексту Конфигурация. Для подключения к базе AD LDS нужно использовать порт 50389, так что настройки будут выглядеть следующим образом (рис.4):

clip_image009

Рис.5: Подключение к базе данных AD LDS на Edge-сервере.

Аналогичным образом можно просмотреть и контекст именования (например, чтобы получить список реплицированных получателей), только тут подключаться придется к OU=MsExchangeGateway (рис.5):

clip_image011

Рис.6: Информация в реплике базы данных Active Directory в службе AD LDS.

На этом процесс конфигурирование подписки можно завершить и далее я предлагаю разобраться с тем, как же будет теперь маршрутизироваться входящая и исходящая почта.

Маршрутизация почты через подписанный Edge Transport сервер

Давайте вспомним рис.1, который утверждает, что для успешной отправки и получения писем через Edge Transport необходимо иметь минимум шесть соединителей. На самом деле так оно и есть, вот только после подписки пограничного транспортного сервера на сайт Active Directory ситуация несколько меняется и часть соединителей модифицируется во внутренние маршруты в таблицах маршрутизации серверов Hub Transport, а часть получают некоторые специфические настройки. Давайте рассмотрим их подробнее, согласно рис.1:

1. Получение внешней почты Edge сервером – здесь остается «штатный» соединитель получения, который управляется непосредственно с Edge сервера и ни как не зависит от пограничной подписки.

2. Оправка почты с Edge-сервера на Hub-сервер – соединитель EdgeSync – Inbound to Default-First-Site-Name создается и конфигурируется на Hub`e. Имеет весьма примечательное адресное пространство и промежуточный узел для маршрутизации. У него эти параметры равны двум минусам «--» (см.рис.7). Такое адресное пространство используется только для соединителей отправки, настроенных на пограничных транспортных серверах (Edge) для отправки сообщений на транспортный сервер-концентратор (Hub). При использовании этого адресного пространства все сообщения, отправляемые в обслуживаемые домены, маршрутизируются через этот соединитель.

clip_image013

Рис.7: Соединитель отправки EdgeSync – Inbound to Default-First-Site-Name.

3. Получение Hud-сервером почты с Edge-сервера происходит через «штатный» соединитель получения, созданный при начальной установке и не требующий дополнительного конфигурирования.

4. Отправка локальной почты в Интернет с Hub`a через Edge-сервер – для отправки письма на Edge, Hub Transport пользуется внутренней таблицей маршрутизации, построенной на базе связей между сайтами.

5. Прием Edge-сервером почты с Hub-сервера – получает почту Edge сервер через тот же соединитель получения, что используется и для входящей Интернет-почты.

6. Отправка Edge-сервером почты в Интернет осуществляется через соединитель отправки EdgeSync – Default-First-Site-Name to Internet, который имеет классические настройки.

Заключение

На этом все, что я хотел рассказать про Edge Subscription и маршрутизацию почты через Edge сервер.

36 комментариев:

Анонимный комментирует...

Алексей, спасибо! Как всегда отличная статья!
1. Вот только на EDGE принимающий коннектор в любом случае создавать не надо. Он создается автоматически при установке роли.
2. Если я не ошибаюсь, после настройки подписки в настройках этого коннектора включается проверка подлинности "exch серверы" и они же добавляются в группы разрешений. Исправьте, если не прав.
3. Хоть Вы и не упомянули, MS рекомендуют размещать edge в DMZ. Очень хотелось бы услышать Ваше мнение на этот счет.

Алексей Богомолов (Alexx) комментирует...

Спасибо! :)
1. Да, совершенно верно, точно также как и на хабе. А я где-то написал, что его надо создавать руками?
2. Да, но самое интересно здесь то, что на принимающем соединителе Edge`a по дефолту разрешены анонимные подключения! (на хабе, как вы знаете, этоа галка по дефолту не стоит)
3. Edge рекомендуется располагать в сети периметра, что собственно и логично. О том каким именно образом Edge будет изолирован от внешней и от локальной сети, т.е. как именно будет организована DMZ-зона, рассуждать можно долго и много. Я считаю, что цель должна оправдывать средства, другими словами в каждой конкретной ситуации нужно решать эту здачу отдельно и общего освета тут нет. На мой взгляд тут важно только то, что Edge НЕ должен входить в домен, а вот каким именно образом сеть периметра организована - это уже другой момент.

Анонимный комментирует...

1. Цитата: "...то он будет заключаться в ручном создании следующих соединителей (см.рис.1):

1. Получение внешней почты Edge сервером;..."

Семен Семеныч комментирует...

Алексей!
Осуществлял преход с 2003 на 2007 exchange, столкнулся с ошибкой:
Ошибка:
Exchange не удается подключить указанную базу данных. Указанная база данных: *\2007StorageGroup\mailbox; код ошибки: MapiExceptionSystemAttendantUnavailable: Unable to mount database. (hr=0x80004005, ec=2430)
видел ссылку на ваш сайт по решению проблемы, но не найду, где ...

ua1wcz комментирует...

вопрос. Если hub не доступен. Edge-transport будет далее работать как smtp-сервер? и еще возможна ли настройка edge-transport только как smtp-сервера без взаимодействия с хабом?

Алексей Богомолов (Alexx) комментирует...

Если HUB не доступен, то Edge будет просто копить у себя в очереди письма и отправит их как только HUB поднимется.
Если не секрет, а зачем делать из Edge`a простой SMTP сервер? Для этого есть другие, более дешевые варианты, например встроенный в винду SMTP-сервер.

ua1wcz комментирует...

что и было сделано. Встроенный smtp (2 сервера + NLB)
Вообще было желание настроить тестовую систему (будущую боевую) без взаимодействия с боевым exchange но с максимальной настройкой. Чтобы потом осталось лишь поднять синхронизацию с HUB и изменить адресацию на серверах.
Думаю перевод на edge будет сделан впоследствии.

Евгений комментирует...

Возник вопросик по поводу интеграции Exchange Edge в существующую почтовую систему. Есть внутренний сервер Exchange и relay в Интернет Unix Sendmail.
Поскольку "Отправка локальной почты в Интернет с Hub`a через Edge-сервер – для отправки письма на Edge, Hub Transport пользуется внутренней таблицей маршрутизации, построенной на базе связей между сайтами.", смогу ли я настроить стоимость или временно отключить send connector на Edge и уже впоследствии постепенно перейти с Sendmail на Exchange Edge?

Unknown комментирует...

А как быть в такой ситуации:
Изначально Edge на TMG был основным mx'ом, а теперь же Cisco IronPort основной mx, а Edge дополнительный.
Планируется использовать Edge только для отправки писем, на получение он должен быть закрыт (может быть открыт при нештатном поведении основного mx).
Отключение штатного Default internal receive connector приведет как я понимаю к невозможности обмена почтой между Hub и Edge и не даст возможность отправлять письма в Инет через Edge.

Алексей Богомолов (Alexx) комментирует...

Ограничьте список IP адресов в настройках Receive Connector`a, с которых он может принимать почту.

Анонимный комментирует...

Алексей, здравствуйте! А не ошиблись ли Вы в своей статье с номером порта для EdgeSync? В статье упоминается порт 50656:
"После того, как подписка будет создана, Hub Transport предпримет попытку создать защищенную LDAP сессию по TCP порту 50656 с Edge-сервером".
По идее, должен быть порт 50636...

Алексей Богомолов (Alexx) комментирует...

Да, верно, правильно 50636, спасибо что заметили, исправлю.

Анонимный комментирует...

ЗДраствуйте.Пожалуйста помогите пишу в командной строке New-EdgeSubscription –FileName "c:\temp\Edge.xml" на что приходит ответ не являеться внутренней или внешней командой??в чем дело?

Unknown комментирует...

Алексей, добрый день. При попытке установить Роль пограничного транспортного сервера выдается ошибка: Полное доменное имя компьютера отсутствует или пусто. Невозможно продолжить установку. Что это может быть?

Анонимный комментирует...

День добрый. Не могу разобраться, почему же входящая почта собирается на edge и дальше не идет. Ошибка 451 4.4.0 dns query failed. Подскажите пожалуйста

Алексей Богомолов (Alexx) комментирует...

Посмотрите в настройках транспорта там указывается External и Internal DNS (по умолчанию из настроек сетевой карты берется). А вообще IP хаба резолвится по полному имени?
Попробуйте в файл Hosts прописать имя хаба - его IP и перестартовать транспорт.

Анонимный комментирует...

Я немного запутался. Правильно ли я понимаю идеологию всю. Поправьте если нет пожалуйста. У меня edge в dmz с внешним gw по дефолту. внешним днс у него указан тот же внешний gw. а внутренним указал днс внутри сети завернув его маршрутами опять же через внешний gw и далее на внутренний gw. ему ведь важно просто чтобы была доступность следующего щага пересылки и разрешение его имени?

Алексей Богомолов (Alexx) комментирует...

вот это вы завернули :) - "завернув его маршрутами опять же через внешний gw и далее на внутренний gw"
Зачем так сложно? У вас два интерфеса, у одного есть Default Gateway, чтобы ходить во внешку, если подсети с локалкой разные, то надо прописать маршрут (persistent), через что ходить в локалку. На внешнем интерфейсе внешний DNS, на внутреннем - локальный. Но можно и везде локальный поставить, у вас же на локальном DNS форвардинг все равно настроен. ВСЁ!
"ему ведь важно просто чтобы была доступность следующего шага пересылки и разрешение его имени?" - да, верно понимаете.

Алексей Богомолов (Alexx) комментирует...

+ надо чтобы внешние имена резолвились (МХ), иначе он не будет знать куда дальше отправлять.

Алимов Александр комментирует...

Алексей здравствуйте. Решил я потихоньку слазить с устаревшего TMG.
Моя задача - заменить старый edge сервер (exchange 2010 PS3) установленный на сервер 2008 r2 с ролью TMG 2010 на новенькую hvшку 2012r2 которая будет в dmz. И проброшена через новый hardware firewall.
Пожалуйста посмотрите все ли я учел?
Итак мой план:
1. Создаем новую HV 2012r2
2. Ставим на нее роль EDGE
3. Подключаем ее к сети dmz (10.10.10.0)
4. Разрешаем на firewall из dmz во внешку и наоборот smtp(25) и 587 порты
5. Разрешаем на firewall из dmz в локальную и наоборот smtp(25) и 50636 порты
6. переносим настройки edge ExportEdgeConfig.ps1 ImportEdgeConfig.ps1
7. отписываемся на старом edge, подписываемся на новом
8. меняем записи на публичном DNS

Алексей Богомолов (Alexx) комментирует...

Выглядит хорошо. Единственный момент Exch 2010 SP3 нельзя поставить на Win 2012 R2 - http://technet.microsoft.com/library/ff728623(v=exchg.150).aspx

Алимов Александр комментирует...

Спасибо за оценку.
По поводу 2010 sp3 - обманывают MS))) все ставится и работает. Проверял в тестовой среде и hub и edge все работает.
Сейчас возникли проблемы при импорте настроек из старого в новый. Завтра спрошу подробней.

Алексей Богомолов (Alexx) комментирует...

"Ставится и работает" не равно "поддерживается и стабильно работает". Из собственного опыта - очень не советую так делать! если потому разные веселые грабли полезут что будете делать?

Алимов Александр комментирует...
Этот комментарий был удален автором.
Алимов Александр комментирует...

Здравствуйте Алексей.
Итак у меня возникли проблемы при создании файла ответов CloneConfigAnswer.xm
1. Я успешно экспортировал файл настроек со старого сервера
2. Скопировал его на новый
3 .Выполнил ImportEdgeConfig с ключом false и получил ошибку при формировании файла ответов:

Validation succeeded for Bindings element of type Bindings
Validation Failed for Fqdn element of type FQDN
Answer File is successfully created: C:\CloneConfigAnswer.xml

В самом файле ответов такой текст:

?xml version="1.0"?>

MachineSpecificSettings>


ReceiveConnector Name="Default internal receive connector ELMSPBR01">

-- Validation failed -->


Fqdn>ELMSPBR01.contoso.ru

/ReceiveConnector>

/MachineSpecificSettings>

Отсюда вопросы:

Нужно ли иметь активное сетевое соединение с чем либо?

И нормально ли что я использую такое же имя для нового сервера как и на старом - ELMSPBR01 ?

Алимов Александр комментирует...

Активоне соединение - я имел ввиду - то что новый edge сейчас не подключен к инфраструктуре, просто виртуалка в рабочей группе в которой я вписал dns суффикс и установил роль edge

Алексей Богомолов (Alexx) комментирует...

полагаю, что сначала надо создать подписку, потом импортировать конфиг, т.к. он фактические едет с HUB-a. Я это процедуру сам ни разу не делал, так что могу ошибаться.

Алимов Александр комментирует...

ок спасибо значит будем побывать в день перехода, опасно, но на крайний случай настройки можно и в ручную повторить)))

Анонимный комментирует...

здравствуйте, Алексей. мне необходимо добавить еще один внешний домен для приема/отправки почты. подскажите, нужно производить к.-н. настройку на едже, или достаточно мастером его добавить на самом екче?

Алексей Богомолов (Alexx) комментирует...

достаточно мастером на Exch`e (если у Вас настроена Edge Subscription)

mika комментирует...

здравствуйте, Алексей!
при выполнении синхронизации на выходе появляется след.ошибка

"Не обнаружены учетные данные EdgeSync для пограничного транспортного сервера ExchangeEdge.rn-dv.ru на локальном транспортном сервере-концентраторе. Удалите пограничную подписку и повторно создайте"

Вячеслав комментирует...

Добрый день.
В организации стоит 2 edge server(а). На Hub Transport организации оба edge сервера настроены на одном Send Coonectors. У меня слетела подписка на одном сервере, а второй работает нормально.
Вопрос, если я заново переподпишу edge сервер, подписка не слетит с работающего?

Александр Крылатов комментирует...

Алексей, спасибо Вам огромное за статьи! Очень помогло!Часто приходиться искать подсказки в интернете. Такие статьи как ваши - это просто кладезь!

Анонимный комментирует...

а сколько всего коннекторов получится ?
на хабе отправляющих останется 2 ( которые от подписки прилетели) - остальные можно грохать ?
ну и дефолтный принимающий остаётся.

Unknown комментирует...

После пограничной подписки на еже останется 3 коннектора:
1. Отправка в инет
2. Отправка внутрь в exchange-организацию
3. Коннектор получения, который будет принимать почту как из интернета, так и изнутри.
Гасит ничего не надо.

Mikel23 комментирует...

Не придумаю как сделать исключение.
Есть EdgeSync - Inbound to Default-First-Site-Name - он обслуживает внутри все *.local
Есть EdgeSync - Default-First-Site-Name to Internet
он все отправляет на smtp.mastermail.ru

Хочу чтоб один адрес test@mydc.ru (который сейчас обрабатывается как *.local) обрабатывался наружу.

Исключение mail contact имеет наш внешний домен но не обрабатывается внутри на exchange а улетвет в smtp.mastermail.ru.

Отправить комментарий