В этой публикации мы поговорим о том, как выполняется миграция почтовых групп CommuniGate. Пожалуй, это уже активная фаза миграции. До этого времени мы подготавливали инфраструктуру – выполняли настройки сервера CommuniGate, интеграцию с Active Directory и т.д.
Так же на этом этапе мы мигрируем почтовые контакты из Exchange на сервер CommuniGate.
Процесс миграцию выглядит следующим образом:
1. Мы выполняем миграцию почтовых групп на сервера CommuniGate.
2. После завершения миграции, в зависимости от типа группы, мы либо удаляет группу (группу рассылки), либо отключает почтовую составляющую для группы (группы безопасности).
3. Проверяем маршрутизацию почты.
Это если говорить верхнеуровнево. Более детально процесс миграции мы рассмотрим чуть ниже.
Раздел по миграции динамических групп, скорее всего, уже не актуален, т.к. в комментариях ниже коллеги пишут, что в последних версиях CGP динамические группы уже поддерживаются.
Как организованы группы в CommuniGate
Для почтовых групп в CommuniGate есть соответствующий тип объектов – group. Интерфейс настройки группы выглядит следующим образом:
Как видно из скриншота выше интерфейс включает секцию по настройке опции группы и состава участников группы. В секции с составом участников вы просто указываете почтовые адреса адресатов. Если почтовый адрес какого-то адресата совпадает с адресом или алиасом вашего домена, то хвостик адреса можно пропустить. Например, адреса для “adm” и “postmaster” – adm@itproblog.ru и postmaster@itproblog.ru. Соответственно, я могу не указывать суффикc @itproblog.ru. Однако, для адресата test@test.loc я указывают полный адрес электронной почты, т.к. его домен не совпадает с адресом или алиасом моего почтового домена CommuniGate.
Расширенная документация по работе с группами CommuniGate есть на странице документации по продукту.
Предварительные требования
Для миграции почтовых я буду использовать утилиту ex2cgp. Для её работы нужен ПК с установленный пакетом Microsoft Office и созданным профилем Outlook. На этапе подготовки исходной среды мы создавали такую виртуальную машину.
Более подробные требования в виде таблицы:
Параметр | Значение |
Операционная система | Microsoft Windows x64 или x32 |
Пакет Office | Microsoft Outlook 32-bit (2016 or 2019 рекомендуется) без сторонних надстроек |
Требования к учетной записи Windows | Права локального администратора для учетной записи |
Требования к учетной записи Exchange | Разрешения Organization Management для учетной записи |
Загружаем утилиту ex2cgp на рабочую станцию администратора.
Распаковываем архив:
Пример интерфейса графической утилиты:
Миграция почтовых контактов
Пример последовательности действий для миграции групп рассылки:
1. Запустим графическую утилиту ex2cgp.
2. Выбираем профиль Outlook, указываем параметры подключения к серверу CommuniGate и отмечаем опции для экспорта контактов (“Export Mail Contacts to LDIF file” и “Translate attributes using”). В параметре “Target Subtree” нужно указать раздел справочника CommuniGate, в который будут импортированы почтовые контакты. Также необходимо указать файл, в который нужно экспортировать все контакты:
3. Дожидаемся окончания процедуры экспорта данных.
4. По итогу должен сгенерироваться примерно вот такой LDIF файл:
5. Теперь импортируем этот LDIF файл в справочник Communigate. Запускаем веб консоль администрирования CommuniGate и переходим по следующему пути – Directory -> Units.
6. Выбираем сгенерированный LDIF файл и нажимаем кнопку “LDIF Import”.
7. Теперь, если мы перейдем к просмотру справочника CommuniGate (Directory -> Browser), то мы увидим наши почтовые контакты:
8. Последним шагом подключим контейнер с контактами в веб интерфейс пользователей – Users -> Domains -> itproblog.ru -> Account Defaults -> Preferences:
9. Непосредственно в веб интерфейсе контакты будут выглядеть следующим образом:
Миграция почтовых контактов завершена.
Миграция почтовых групп CommuniGate
Как я уже говорил для миграции почтовых групп я буду использовать утилиту ex2cgp. Миграция будет включать несколько этапов:
1. Выгрузка полного списка групп утилитой ex2cgp.
2. Разбиение списка на два – один список будет содержать группы рассылки, второй список будет содержать почтовые группы безопасноти.
3. Миграция групп рассылки и удаление их из Microsoft Exchange.
4. Миграция почтовых групп безопасности и удаление их из Microsoft Exchange.
Хотя вам не обязатльно мигрировать все группы по отдельности – если у вас не сильно большой список групп, то вы можете перести их все разом.
Подготовка списков для миграции
Сначала выгрузим список всех групп:
1. Запустим графическую утилиту ex2cgp.
2. Выбираем профиль Outlook и указываем, что мы хотели бы экспортировать список всех групп:
3. Нажимаем кнопку “Process” и дожидаемся окончания работы утилиты.
4. По итогу в папке с утилитой у нас должен появиться файл со списком и составом групп:
5. Утилита не умеет выделять отдельно группы рассылки и отдельно почтовые группы безопасности. Для наглядности процесса миграции я разделю список на группы безопасности и группы рассылки.
6. Итого я подготовил два файла – sg.list со списком почтовых групп безопасности:
CreateGroup sg1@itproblog.ru { RealName="sg1"; Members=(u1@itproblog.ru,u2@itproblog.ru);}
CreateGroup sg2@itproblog.ru { RealName="sg2"; Members=(u3@itproblog.ru,u4@itproblog.ru);}
CreateGroup sg3@itproblog.ru { RealName="sg3"; Members=(u1@itproblog.ru,u2@itproblog.ru);}
CreateGroup sg4@itproblog.ru { RealName="sg4"; Members=(u3@itproblog.ru,u4@itproblog.ru);}
Второй файл – dg.list, со списком групп рассылки:
CreateGroup dg1@itproblog.ru { RealName="Distribution Group 1"; Members=(u1@itproblog.ru,u2@itproblog.ru);}
CreateGroup dg2@itproblog.ru { RealName="Distribution Group 2"; Members=(u3@itproblog.ru,u4@itproblog.ru);}
CreateGroup dg3@itproblog.ru { RealName="Distribution Group 3"; Members=(u1@itproblog.ru,u2@itproblog.ru);}
CreateGroup dg4@itproblog.ru { RealName="Distribution Group 4"; Members=(u3@itproblog.ru,u4@itproblog.ru);}
В последующем я буду использовать два этих файла.
Миграция групп рассылки
Перед миграцией групп рассылки настоятельно рекомендую сохранить значение атрибута egacyExchangeDN в Active Directory. Оно понадобится вам при настройке X500 адресов для временных контактов, чтобы избежать массовых NDR при использовании клиента Outlook.
Пример последовательности действий для миграции групп рассылки:
1. Запустим графическую утилиту ex2cgp.
2. Выбираем профиль Outlook, указываем параметры подключения к серверу CommuniGate и отмечаем опцию “Create Groups using script file”. Также необходимо указать файл, в котором мы собрали список всех групп рассылки:
3. Нажимаем кнопку “Process”. Дожидаемся окончания работы утилиты:
4. Теперь можем проверить список групп в веб консоли администрирования CommuniGate – Users -> Domains -> itproblog.ru -> Objects:
5. Состав групп также актуален. Пример:
6. После завершения миграции групп на сервер CommuniGate я удалю все группы рассылки с сервера Exchange. Для этого я выполню следующий командлет в Exchange Management Shell:
Get-DistributionGroup -RecipientTypeDetails MailUniversalDistributionGroup | Remove-DistributionGroup
Особенности клиента Outlook
При отправке писем вы можете получить ошибку вида:
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. Создаем почтовые контакты для мигрировавших групп.
3. В качестве X500 адреса указываем legacyExchangeDN, который вы сохранили ранее. X500 адрес нужно добавить в атрибут “proxyAddresses”. И так для каждой группы. Пример для группы dg1:
Этот процесс можно заскриптовать, но этот скрипт я оставлю вам в качестве дополнительного самостоятельного факультатива.
Если же вы не сохранили значения 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” для почтового контакта.
Миграция почтовых групп безопасности
Перед миграцией почтовых групп безопасности настоятельно рекомендую сохранить значение атрибута egacyExchangeDN в Active Directory. Оно понадобится вам при настройке X500 адресов для временных контактов, чтобы избежать массовых NDR при использовании клиента Outlook.
Миграция групп безопасности по большей части выполняется аналогично миграции групп рассылок.
Пример последовательности действий для миграции почтовых групп безопасности:
1. Запустим графическую утилиту ex2cgp.
2. Выбираем профиль Outlook, указываем параметры подключения к серверу CommuniGate и отмечаем опцию “Create Groups using script file”. Также необходимо указать файл, в котором мы собрали список всех почтовых групп безопасности:
3. Нажимаем кнопку “Process”. Дожидаемся окончания работы утилиты:
4. Теперь можем проверить список групп в веб консоли администрирования CommuniGate – Users -> Domains -> itproblog.ru -> Objects:
5. Состав групп также актуален. Пример:
6. После завершения миграции групп на сервер CommuniGate необходимо отключить почтовую составляющую у групп безопасности. Для этого я выполню следующий командлет в Exchange Management Shell:
Get-DistributionGroup -RecipientTypeDetails MailUniversalSecurityGroup | Disable-DistributionGroup
Командлет Disable-DistributionGroup очищает все почтовые атрибуты Exchange, но не удаляет саму группу безопасности.
Особенности клиента Outlook
При отправке писем вы можете получить ошибку вида:
Diagnostic information for administrators:
Generating server: MAIL01.itproblog.ru
IMCEAEX-_o=IT+20PRO+20BLOG_ou=Exchange+20Administrative+20Group+20+28FYDIBOHF23SPDLT+29_cn=Recipients_cn=385f8dc431cd4b1a8b44a2f45814277e-sg1@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. Создаем почтовые контакты для мигрировавших групп.
3. В качестве X500 адреса указываем legacyExchangeDN, который вы сохранили ранее. X500 адрес нужно добавить в атрибут “proxyAddresses”. И так для каждой группы. Пример для группы dg1:
Этот процесс можно заскриптовать, но этот скрипт я оставлю вам в качестве дополнительного самостоятельного факультатива.
Если же вы не сохранили значения legacyExchangeDN, то вы можете взять его их текста ошибки NDR и проделать с ним некоторые операции:
IMCEAEX-_o=IT+20PRO+20BLOG_ou=Exchange+20Administrative+20Group+20+28FYDIBOHF23SPDLT+29_cn=Recipients_cn=385f8dc431cd4b1a8b44a2f45814277e-sg1@itproblog.ru
Какие нужно сделать:
- Замените любой символ подчеркивания (_) символом косой черты (/).
- Замените “+20” пустым пробелом.
- Замените “+28” открывающей скобкой.
- Замените “+29” закрывающей скобкой.
- Удалите строку “IMCEAEX-“.
- Удалите строку “@itproblog.ru”.
- Добавьте “X500:” в начале.
По итогу у вас должна получиться примерно следующая строка:
X500:/o=IT PRO BLOG/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ceb0e404fbd4429aa4243973372eaff7-sg4
Вот её и нужно добавить в качестве еще одного значения для атрибута “proxyAddresses” для почтового контакта.
Миграция динамических групп Exchange
Из коробки CommuniGate не поддерживает миграцию динамических группу рассылки Exchange. В системе даже нет такого типа объекта, как динамическая группа рассылки.
Возможно, если у меня будут светлые мысли на этот счет, то я напишу отдельную статью по миграции динамических групп рассылки, но попозже.
В комментариях ниже коллеги пишут, что последние версии CGP поддерживают концепцию динамических групп. Но, к сожалению, у меня пока нет стенда с CGP и Exchange под рукой, чтобы написать более развернуты ответ.
Миграция с Exchange на CommuniGate Pro. Часть 6. Миграция почтовых групп: 6 комментариев
Доброго времени!
Динамические группы с недавнего времени поддерживаются в CGP. Свяжитесь с ТП CommuniGate и они с радостью предоставят мануал по настройке!
Здравствуйте! Спасибо за уточнение – вынесу в шапку.
Добрый день! Подскажите, а как дела обстоят у CommuniGate Pro с Public Folders? Т.е. можно ли каким то образом перетащить иерархию папок, которая уже много лет использовалась в Exchange?
Добрый день! При миграции почтовых ящиков через ex2cgp вы можете скопировать содержимое общих папок в заданную УЗ Communigate. Есть там такая опция “Map Public Folders to” (Копировать данные общих папок Exchange в учётную запись пользователя CommuniGate Pro.
). Насколько утилита воспроизводит иерархию общих папок сказать не могу. Возможно в ТП CGP вам могут дать более развернутый ответ.
Вот тут есть подробное описание параметров утилиты ex2cgp – http://www.communigate.ru/CGFromExchange/russian.html
Для тех кто встречается с ошибкой доставки NDR при миграции, знакомый программист написал тулзу преобразующую её в нужный атрибут. Всё делает как выше описано. Заменяет (_) символом косой черты (/) ну и так далее. Если что нужно – можно связаться с ним – он допилит. https://disk.yandex.ru/d/biTxldYzpmM5gw
Да, всё, не надо было и программу делать. Утилита ex2cgp создаёт список адресатов в котором и содержится нужный атрибут. Если что – можно просто посмотреть в accounts.csv который она создаёт при работе.