В этой публикации мы поговорим о самой продолжительной части миграции – миграция почтовых ящиков на CommuniGate. Забегаю вперед скажу, что есть двe утилиты – ex2cgp и syncIMAPMail. Причем последняя обладает большей производительностью и позволяет быстрее перенести содержимое почтовых ящиков пользователей. В тоже время утилита ex2cgp поможет перенести вам не почтовые данные – группы рассылки, почтовые контакты и т.д.
В этой публикации я постараюсь выделить достоинства и недостатки каждой из утилит для того, чтобы вы могли самостоятельно выбрать именно ту, которая лучше подойдет под ваши требования и условия.
Сравнение работы утилит является сугубо моей практикой не демонстрационном стенде. Вполне допускаю, что я мог не разобраться с какими-то возможностями утилит, хотя и читал документацию по ним. Если я упустил что-то критичное – поправьте в комментариях.
Предварительные требования
Непосредственно перед началом миграции почтовых ящиков с Exchange на сервер CommuniGate необходимо эти ящики создать (на CommuniGate). Это можно сделать через утилиту ex2cgp, но мы поступим по другому. Ранее мы сконфигурировали утилиту синхронизации учетных записей из Active Directory. Чтобы учетная запись CommuniGate была создана для учетной записи Active Directory необходимо у каждого мигрируемого пользователя заполнить атрибут employeeType (в моем случае).
После завершения работы утилиты синхронизации в системе CommuniGate будут созданы соответствующие учетные записи:
Сравнение производительности ex2cgp и syncIMAPMail
Как я уже говорил ранее для миграции почтовых ящиков вам доступны две утилиты – ex2cgp и syncIMAPMail.
Чтобы не быть голословным я решил провести сравнение скорости миграции некоего синтетического почтового ящика с помощью обоих утилит. И сравнить время миграции.
Я буду использовать почтовый ящик u1@itproblog.ru, который мы создавали на этапе подготовки тетсовой среды.
Параметры тестового почтового ящика Exchange приведены в таблице ниже.
Параметр | Значение |
TotalItemSize | 627,3 MB |
TotalDeletedItemSiz | 144,3 KB |
AssociatedItemCount | 40 |
DeletedItemCount | 16 |
ItemCount | 2344 |
Суммарные качественные характеристики итога работы обоих утилит приведены в таблице ниже:
Параметр | ex2cgp | syncIMAPMail |
Время миграции, мин. | 140 | 2 |
Итоговый размер почтового ящика, МБ | 848 | 761 |
Особенности клиента Outlook
После миграции почтового ящика и его отключения на сервере Exchange gри отправке писем вы можете получить ошибку вида:
Diagnostic information for administrators:
Generating server: MAIL01.itproblog.ru
IMCEAEX-_o=IT+20PRO+20BLOG_ou=Exchange+20Administrative+20Group+20+28FYDIBOHF23SPDLT+29_cn=Recipients_cn=1b50afaee366475cab300b89cb76221f-Distribution@itproblog.ru
Remote Server returned '550 5.1.11 RESOLVER.ADR.ExRecipNotFound; Recipient not found by Exchange Legacy encapsulated email address lookup'
Ка ни странно это звучит, но Outlook при использовании автозавершения адреса ищет адресатов не по SMTP адресам, а по адресам X500. Ошибка говорит о том, что сервер Exchange не нашел у себя адресата с таким X500 адресом.
Что делать? Пока у меня есть только один обходной вариант (да, костыль):
1. Отключаем режим кэширования Outlook. Массово это можно сделать, например, через политики GPO.
2. Создаем почтовый контакт для перенесенного на сервер CommuniGate почтового ящика.
3. В качестве X500 адреса указываем legacyExchangeDN, который вы сохранили ранее. X500 адрес нужно добавить в атрибут “proxyAddresses”. И так для каждого почтового ящика. Пример:
Этот процесс можно заскриптовать, но этот скрипт я оставлю вам в качестве дополнительного самостоятельного факультатива.
Если же вы не сохранили значения legacyExchangeDN, то вы можете взять его их текста ошибки NDR и проделать с ним некоторые операции:
IMCEAEX-_o=IT+20PRO+20BLOG_ou=Exchange+20Administrative+20Group+20+28FYDIBOHF23SPDLT+29_cn=Recipients_cn=1b50afaee366475cab300b89cb76221f-Distribution@itproblog.ru
Какие нужно сделать:
- Замените любой символ подчеркивания (_) символом косой черты (/).
- Замените “+20” пустым пробелом.
- Замените “+28” открывающей скобкой.
- Замените “+29” закрывающей скобкой.
- Удалите строку “IMCEAEX-“.
- Удалите строку “@itproblog.ru”.
- Добавьте “X500:” в начале.
По итогу у вас должна получиться примерно следующая строка:
X500:/o=IT PRO BLOG/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=1b50afaee366475cab300b89cb76221f-Distribution
Вот её и нужно добавить в качестве еще одного значения для атрибута “proxyAddresses” для почтового контакта.
Пример миграции через ex2cgp
Перед миграцией почтовых ящиков настоятельно рекомендую сохранить значение атрибута egacyExchangeDN в Active Directory. Оно понадобится вам при настройке X500 адресов для временных контактов, чтобы избежать массовых NDR при использовании клиента Outlook.
Миграция через утилиту ex2cgp довольно простой процесс:
1. Сначала мы выгружаем список всех учетные записей для миграции:
2. Теперь мы редактируем список и оставляем только нужные нам учетные записи:
account;dn;mailbox;RealName
u1;/o=IT PRO BLOG/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ff0328d330944c39b0e957a37e953ed3-u1;u1@itproblog.ru;u1
u2;/o=IT PRO BLOG/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=331e515dca4e47f791172a502e55859c-u2;u2@itproblog.ru;u2
u3;/o=IT PRO BLOG/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=063226cae20f494bb27b1a7c2a92d133-u3;u3@itproblog.ru;u3
u4;/o=IT PRO BLOG/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=9260e7e8e23741039ec456463d7bab12-u4;u4@itproblog.ru;u4
3. Повторно запускаем утилиту ex2cgp, но уже с параметрами для миграции содержимого наших почтовых ящиков:
4. Запустится процесс миграции.
Это может быть не очень быстрый процесс. Дождитесь его завершения.
5. После завершения процедуры миграции мы можем видеть письма в почтовом ящике пользователя.
6. После переноса почтового ящика на сервере CommuniGate вы можете отключить почтовый ящик пользователя на сервере Exchange (при необходимости).
Get-Mailbox -Identity u1 | Disable-Mailbox
7. Теперь нужно создать почтовый контакт для перенесенного ящика, чтобы избежать ошибки с отправкой писем с клиента Outlook.
8. Далее я перенесу все почтовые ящики на сервер CommuniGate от отключу их на сервере Exchange.
Краткие выводы по работе итилиты ex2cgp
Сразу отмечу, что это личное мое мнение и по результатам работы утилиты именно в моей лабораторной среде. Не могу гарантировать, что я не столкнулся с какими то особенностями утилиты, хотя и очень внимательно читал документацию.
Преимущества:
- Позволяет осуществлять миграцию в пакетном режиме, т.е. на основе заранее подготовленного списка.
- Мигрирует контакты пользователя из почтового ящика на Exchange.
- Воссоздает структуру папок аналогично исходной структуре на сервере Exchange.
- Позволяет не прерывать работу уилиты при ошибках миграции писем.
Недостатки:
- Крайне низкая скорость работы.
- Не мигрирует события календаря.
Особенности:
- Переносит только основной адрес почты. Дополнительные алиасы не переносятся.
- Не поддерживается инкрементальный перенос почты.
Пример миграции через syncIMAPMail
Перед миграцией почтовых ящиков настоятельно рекомендую сохранить значение атрибута egacyExchangeDN в Active Directory. Оно понадобится вам при настройке X500 адресов для временных контактов, чтобы избежать массовых NDR при использовании клиента Outlook.
Теперь рассмотрим процесс миграции через утилиту syncIMAPMail.
1. Перед тем, как осуществлять миграцию через IMAP необходимо запустить соответствующие службы на сервере Exchange (если они еще не запущены):
- Microsoft Exchange IMAP4.
- Microsoft Exchange IMAP4 Backend.
2. Поскольку утилита syncIMAPMail не умеет работать через SSL/TLS, то необходимо скорректировать параметры аутентификации для IMAP на сервере Exchange:
Set-ImapSettings -LoginType PlainTextLogin
3. Затем перезапустить службы IMAP:
Restart-Service -Name MSExchangeImap4
Restart-Service -Name MSExchangeIMAP4BE
4. Запустим утилиту миграции для одного пользователя:
syncIMAPMail mail01.itproblog.ru u1@itproblog.ru Qwerty123 com01.itproblog.ru u1@itproblog.ru Qwerty123
Сначала указываем имя сервера Exchange и учетные данные подключения к нему, а затем имя сервера CommuniGate и учетные данные для подключения к нему.
5. Для массового использования утилиты syncIMAPMail вы можете, например, заскриптовать запуск утилиты для перечня пользователей, подгружаемого из файла.
6. После завершения процедуры миграции мы можем видеть письма в почтовом ящике пользователя.
7. После переноса почтового ящика на сервере CommuniGate вы можете отключить почтовый ящик пользователя на сервере Exchange (при необходимости).
Get-Mailbox -Identity u1 | Disable-Mailbox
8. Теперь нужно создать почтовый контакт для перенесенного ящика, чтобы избежать ошибки с отправкой писем с клиента Outlook.
9. Далее я перенесу все почтовые ящики на сервер CommuniGate от отключу их на сервере Exchange.
Краткие выводы по работе итилиты syncIMAPMail
Сразу отмечу, что это личное мое мнение и по результатам работы утилиты именно в моей лабораторной среде. Не могу гарантировать, что я не столкнулся с какими то особенностями утилиты, хотя и очень внимательно читал документацию.
Преимущества:
- Очень высокая скорость работы.
- Поддерживает инкрементальное копирование писем.
Недостатки:
- Не мигрирует почтовые контакты.
- Не мигрирует события календаря.
Особенности:
- Не поддерживает SSL\TLS соединения.
- Почтовые ящики и алиасы на сервере CommuniGate нужно создавать вручную.
Переключение SMTP трафика на сервер CommuniGate
После завершения переноса всех почтовых ящиков с сервера Exchange на сервер CommuniGate мы можем выполнить переключение маршрутизации почтового трафика непосредственно на сервер CommuniGate.
В моем случае я просто скорректирую правило NAT на маршрутизаторе. В вашем случае это может быть более сложная операция – например, изменение параметров решения для фильтрации трафика или изменение параметров балансировщика.
Особенности работы почтовых клиентов
В этом небольшом разделе я бы хотел немного затронуть тему сторонних почтовых клиентов: Microsoft Outlook и Mozilla Thunderbird.
Оба этих клиента в той или иной степени поддерживаются системой CommuniGate. Причем, для клиента Outlook даже есть коннектор MAPI. Почтовый клиент Thunderbird также поддерживает автоматическую настройку.
Однако, при работе с этими почтовыми клиентам я столкнулся с одной особенностью – адресные книги. Точнее отсутсвия их поддержки в этих почтовых клиентах. Да, вы можете настроить адресные книги LDAP, например, в Thunderbird. Но это обособленные адресные книги, которые не имеют ничего общего с адресными книгами CommuniGate.
Я считаю, что это очень важный момент о котором стоит предупредить вас.
(Дополнение) Альтернативные утилиты
Есть еще один способ миграции содержимого почтовых ящиков – утилита MAPISync. Пример её использования я привел вот в этой публикации. Правда, сравнивать скорость её работы с примерами выше не корректно, т.к. там использовался другой набор данных. Но общие цифры по скорости миграции я в статье по MAPISync приводил.
Миграция с Exchange на CommuniGate Pro. Часть 8. Миграция почтовых ящиков на CommuniGate: 5 комментариев
а такой сценарий возможен впринципе, если вначале прогнать через exch2cgp, выбрав только создание ящика и перенос календаря, адресной книги, заметок (хотя не вижу как это можно отдельно выбрать), а затем уже пройтись по всем ящика с помощью syncIMAPmail долить остатки писем, и одномоментно всех переключить на Коммунигейт?
Да, такой сценарий имеет место быть. Детали нужно прорабатывать, но сам подход выглядит рабочим
Да, Роман, спасибо. В тест среде на тест ящике прогнал подобный сценарий, в самой утилите exch2CGP нашел как НЕ копировать письма (все остальное будет скопировано) – это опция –skip-imap
Затем уже добил через syncIMAPmail. Впринципе сценарий рабочий
Так, непонятно немного, если мне нужно допустим перенести Kate@… в Ekaterina@… через ex2CGP то какой опцией это сделать? Или оно всегда создаёт на сервере CommuniGate точную копию ящика? Т.е. Kate@… Вот другие утилиты как понимаю несут сообщения между разными майлбоксами, главное пароли от них знать.
Я бы начала с того, что попробовал в двух последних столбцах в CSV файле (mailbox и RealName) указал имена и адреса ящиков из CGP, т.е. примерно вот так:
account;dn;mailbox;RealName
Kate;/o=IT PRO BLOG/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ff0328d330944c39b0e957a37e953ed3-Kate;Ekaterina@itproblog.ru;Ekaterina
но это мое предположение – могу ошибаться