- Выделите отдельную учетную запись для миграции архивов и пользовательских правил.
- До запуска миграции для персональных учетных записей необходимо снять лимиты и ограничения на использование ресурсов EWS, например EwsMaxBurst. После миграции данные ограничения можно вернуть к значениям по умолчанию. Сейчас на уровне серверов Microsoft Exchange запрещено повышенное потребление ресурсов сессиями более чем в течение 5 минут, такие ограничения не позволяют выполнять миграцию с приемлемой скоростью.
- Количество потоков при миграции не должно превышать количество доступных соединений EWS. Иначе при миграции буду возникать ошибки с кодом 500.
В Exchange Server есть функциональность In-Place Archiving — она позволяет настроить архивацию старых писем. Эти письма не доступны по протоколу IMAP, поэтому их импортом занимается новый сервис миграции exchange-importer. Миграцией пользовательских правил (фильтров) из Exchange занимается сервис exchange-importer-legacy-rules.
Чтобы включить сервисы миграции из Exchange:
-
Откройте веб-интерфейс установщика
http://server-address:8888. -
Нажмите на кнопку
в правом верхнем углу, выберите пункт Продукты. -
Перейдите на вкладку Почта.
-
Включите компонент Импорт данных из Microsoft Exchange.
-
Нажмите кнопку Сохранить.
-
Следуя подсказкам в интерфейсе, добавьте и запустите новые роли.
Настройка сервиса производится через переменные окружения в панели администратора в разделе Настройки.
Чтобы настроить сервис:
-
Перейдите в раздел Настройки → Переменные окружения.
-
В левом меню найдите сервис exchange-importer.

-
Нажмите кнопку редактировать
. -
Нажмите на кнопку + Добавить.
-
Настройте основные параметры для миграции In-Place архивов:
-
EXCHANGE_EWS_MAILAPI_ARCHIVE_ROOT_FOLDER — наименование директории в Почте VK WorkSpace. В эту папку попадут все письма после миграции.
-
EWS_CLIENT_CONFIG_POOL_CONFIG_ADDRS — адрес подключения к EWS службе. Можно использовать несколько адресов через запятую.
-
EWS_CLIENT_CONFIG_POOL_CONFIG_LOGIN — имя админа для подключения к EWS.
-
EWS_CLIENT_CONFIG_POOL_CONFIG_PASSWORD — пароль админа для подключения к EWS.
-
EXCHANGE_IMPORTER_QUEUE_WORKERS — количество одновременно работающих процессов, обрабатывающих задачи из очереди.
-
EXCHANGE_IMPORTER_SYSTEM_QUEUE_WORKERS — количество обработчиков, которые берут задачи из дополнительной очереди, например, в случае отложенного обновления статуса при отказе журнала. Рекомендуется небольшое количество обработчиков, так как в нормальных условиях очередь должна быть пустой. 20 обработчиков в сумме на всех инстансах должно быть достаточно.
-
Конфигурация ретраев:
- RETRY_CONFIG_ARCHIVES_MIGRATE_DELAY_SECONDS — минимальное время, после которого задача на миграцию одного письма снова может попасть в работу.
- RETRY_CONFIG_ARCHIVES_MIGRATE_MAX_RETRIES — максимальное допустимое количество попыток мигрировать одно письмо.
- RETRY_CONFIG_ARCHIVES_SFU_DELAY_SECONDS — минимальное время, после которого задача на отложенное проставление статуса миграции письма при сбое журнала снова может попасть в работу.
- RETRY_CONFIG_ARCHIVES_SFU_MAX_RETRIES — максимальное допустимое количество попыток проставить статус миграции письма при сбое журнала.
- RETRY_CONFIG_BOOTSTRAP_DELAY_SECONDS — минимальное время, после которого задача по генерации задач на миграцию писем для пользователя снова может попасть в работу.
- RETRY_CONFIG_BOOTSTRAP_MAX_RETRIES — максимальное допустимое количество попыток сгенерировать задачи на миграцию писем для пользователя.
-
-
Нажмите Сохранить.
-
В левом меню найдите сервис exchange-importer-legacy-rules.
-
Настройте основные параметры для миграции пользовательских правил:
- EXCHANGE_EWS_CLIENT_ADDRS — адрес подключения к EWS службе. Можно использовать несколько адресов через запятую.
- EXCHANGE_EWS_CLIENT_LOGIN — имя администратора для подключения к EWS.
- EXCHANGE_EWS_CLIENT_PASSWORD — пароль администратора для подключения к EWS.
- EXCHANGE_AD_CLIENT_URL — адрес подключения к Active Directory.
- EXCHANGE_AD_CLIENT_USERNAME — имя администратора для подключения к Active Directory.
- EXCHANGE_AD_CLIENT_PASSWORD - пароль админа для подключения к Active Directory.
- EXCHANGE_AD_CLIENT_BASE_DN — DN пользователей.
- EXCHANGE_IMPORTER_QUEUE_WORKERS — количество одновременно работающих процессов обрабатывающих задачи из очереди.
- EXCHANGE_EWS_SERVER — адрес подключения к IMAP-серверу, по которому настраиваются сборщики писем. Например,
imap.domain.ru. Требуется для правил, которые содержат условия с перемещением писем в папку. - EXCHANGE_EWS_SKIP_TLS_VERIFY — пропускать проверку сертификата. По умолчанию - false.
-
Выполните шаг up_container для exchange-importer и exchange-importer-legacy-rules, чтобы перезапустить сервисы.

После того как сервисы созданы и настроены можно начинать процесс импорта архивных писем и правил.
В сервис нужно передать список адресов пользователей, для которых необходимо выполнить импорт.
Первый способ:
На ВМ с установщиком выполните команду со списком пользователей в запросе:
curl 'http://172.20.4.222:8080/migrate/inplace_archives/csv' \--data \'alex.williams36@dev.onprem.ruemily.brown14@dev.onprem.rudavid.miller16@dev.onprem.ru'
где 172.20.4.222 — адрес сервиса exchange-importer (из веб-интерфейса установщика).

Второй способ:
На ВМ с установщиком выполните команду со списком пользователей в файле:
curl 'http://172.20.4.222:8080/migrate/inplace_archives/csv' \--data-binary "@users.csv"
где 172.20.4.222 — адрес сервиса exchange-importer (из веб-интерфейса установщика).
CSV файл не должен содержать заголовков:
alex.williams36@dev.onprem.ruemily.brown14@dev.onprem.rudavid.miller16@dev.onprem.ru
- Перейдите в веб-интерфейс Grafana для своей инсталляции:
https://biz.<your_domain>/grafana - В списке Dashboards выберите General → Exchange Importer.

- Queued Migrare Archive Tasks — количество задач в очереди. Для каждого почтового ящика из списка миграции создается одна задача.
- Runing Workers — количество одновременно работающих процессов, которые обрабатывают задачи из очереди.
- Avg Task Process Time — среднее время обработки одного почтового ящика.
В процессе импорта стоит следить за состоянием Tarantool с очередью и PostgreSQL с журналом:
- Tarantool c очередью: Database → Tarantool Clusters, в выпадающем меню tarantool выберите tarantool211.exchange-importer.
- PostgreSQL с журналом: Database → PostgreSQL, в выпадающем меню instance выберите master инстанс exchange-importer-pgN.qdit, в выпадающем меню database выберите exchange_sync.
-
В веб-интерфейсе установщика перейдите в раздел Настройки → Переменные окружения.
-
В левом меню найдите сервис exchange-importer.

-
Нажмите кнопку редактировать
. -
Нажмите на кнопку + Добавить.
-
Добавьте переменные
EXCHANGE_EWS_ARCHIVE_DATE_FROMиEXCHANGE_EWS_ARCHIVE_DATE_TOв формате:2025-04-19. ЕслиEXCHANGE_EWS_ARCHIVE_DATE_FROMне указана, то по-умолчанию будет применяться значение1970-01-01. Если не указана переменнаяEXCHANGE_EWS_ARCHIVE_DATE_TO, то по умолчанию будет использоваться текущая дата. -
Нажмите Сохранить.
-
Выполните шаг up_container для exchange-importer.
В сервис нужно передать список адресов пользователей, для которых необходимо выполнить импорт.
Первый способ:
На ВМ с установщиком выполните команду со списком пользователей в запросе:
curl 'http://172.20.4.222:8080/migrate/inbox_rules/csv' \--data \'alex.williams36@dev.onprem.ruemily.brown14@dev.onprem.rudavid.miller16@dev.onprem.ru'
где 172.20.4.222 — адрес сервиса exchange-importer-legacy-rules (из веб-интерфейса установщика).
Второй способ:
На ВМ с установщиком выполните команду со списком пользователей в файле:
curl 'http://172.20.4.222:8080/migrate/inbox_rules/csv' \--data-binary "@users.csv"
где 172.20.4.222 — адрес сервиса exchange-importer-legacy-rules (из веб-интерфейса установщика).
CSV файл не должен содержать заголовков:
alex.williams36@dev.onprem.ruemily.brown14@dev.onprem.rudavid.miller16@dev.onprem.ru
- Перейдите в веб-интерфейс Grafana для своей инсталляции:
https://biz.<your_domain>/grafana - В списке Dashboards выберите General → Exchange Importer.
- Прокрутите страницу до раздела Migrate Rules Queue.

- Queued Migrate Rules Tasks — количество задач в очереди. Для каждого почтового ящика из списка миграции создается одна задача.
- Running Workers — количество одновременно работающих процессов, которые обрабатывают задачи из очереди.
- Avg Rule Process time — среднее время обработки одного почтового ящика.
- Total Count — агрегированные данные по правилам и пользователям.
- Rule mapping statuses — количество завершенных задач по статусам.
Задача по миграции правила может завершиться с одним из 4 статусов:
- success — миграция прошла успешно.
- error — миграция не прошла из за ошибки, не связанной с маппингом правила. Например, из-за сетевых ошибок.
- mapping_error — миграция не прошла из за ошибки, связанной с маппингом правила. Например, правило содержит неизвестные сервису поля или поля с некорректными данными.
- partial_mapping — миграция прошла, но в правиле присутствуют поля, которые не поддерживаются в Почте VK WorkSpace.
- ValidationError — ошибка валидации ответа от Exchange.
В мастере роли exchange-importer-tnt выполните команду:
docker exec -i exchange-importer-tntN tarantoolctl connect unix/:/var/run/tarantool/tarantool.sock <<< "box.space.per_user_status:update('EMAIL',{{'=', 'status.rules', 'pending'}})"
Где:
- N — номер контейнера exchange-importer-tnt.
- EMAIL — почтовый адрес пользователя.
Команда выше проставит статус pending для почтового ящика, которому требуется повторить процесс миграции.
После миграции фильтров можно получить данные по каждому правилу в CSV формате. Это можно сделать тремя способами:
-
На ВМ с установщиком выполните команду со списком пользователей в запросе:
curl 'http://172.20.4.222:8080/status/rules/csv' \--data \'alex.williams36@dev.onprem.ruemily.brown14@dev.onprem.rudavid.miller16@dev.onprem.ru' > tmp.csv -
На ВМ с установщиком выполните команду со списком пользователей в файле:
curl 'http://172.20.4.222:8080/status/rules/csv' \--data-binary "@users.csv" > tmp.csv -
Получить данные через Active Directory:
curl 'http://172.20.4.222:8080/status/rules/ad' > tmp.csv
В CSV файле есть следующие поля:
- email — ящик пользователя.
- exchange rule_id — ID правила в Exchange.
- workmail ids — список идентификаторов фильтров, добавленных в Почту VK WorkSpace. На данный момент поле будет пустым.
- status — статус миграции правила.
- exchange rule — правило Exchange в формате JSON.
- updated — время последнего обновления записи.
- error — ошибка, возникшая при миграции правила.
На ВМ с установщиком нужно выполнить одну из двух команд:
-
Со списком пользователей в запросе:
curl 'http://172.20.4.222:8080/migrate/contacts/csv' \--data \'alex.williams36@dev.onprem.ruemily.brown14@dev.onprem.rudavid.miller16@dev.onprem.ru' -
Со списком пользователей в файле:
curl 'http://172.20.4.222:8080/migrate/contacts/csv' \--data-binary "@users.csv"
где 172.20.4.222 — адрес сервиса exchange-importer (из веб-интерфейса установщика).
CSV файл не должен содержать заголовков:
alex.williams36@dev.onprem.ruemily.brown14@dev.onprem.rudavid.miller16@dev.onprem.ru
Мигрируют только личные контакты пользователя с сервера Exchange.
Чтобы заменить контакты в Почте VK WorkSpace, контактами из MS Exchange, воспользуйтесь одним из следующих способов:
-
Со списком пользователей в запросе:
curl 'http://172.20.4.222:8080/replace/contacts/csv' \--data \'alex.williams36@dev.onprem.ruemily.brown14@dev.onprem.rudavid.miller16@dev.onprem.ru' -
Со списком пользователей в файле:
curl 'http://172.20.4.222:8080/replace/contacts/csv' \--data-binary "@users.csv"
где 172.20.4.222 — адрес сервиса exchange-importer (из веб-интерфейса установщика).
CSV файл не должен содержать заголовков:
alex.williams36@dev.onprem.ruemily.brown14@dev.onprem.rudavid.miller16@dev.onprem.ru
После миграции фильтров можно получить данные по каждому контакту в CSV формате. Это можно сделать двумя способами:
-
На ВМ с установщиком выполните команду со списком пользователей в запросе:
curl 'http://172.20.4.222:8080/status/contacts/csv' \--data \'alex.williams36@dev.onprem.ruemily.brown14@dev.onprem.rudavid.miller16@dev.onprem.ru' > tmp.csv -
На ВМ с установщиком выполните команду со списком пользователей в файле:
curl 'http://172.20.4.222:8080/status/contacts/csv' \--data-binary "@users.csv" > tmp.csv
Технический писатель: Груздев Никита