Перейти к содержанию

Как импортировать архивные письма и пользовательские фильтры из Exchange

Рекомендации по настройке на стороне Exchange

  • Выделите отдельную учетную запись для миграции архивов и пользовательских правил.
  • До запуска миграции для персональных учетных записей необходимо снять лимиты и ограничения на использование ресурсов EWS, например EwsMaxBurst. После миграции данные ограничения можно вернуть к значениям по умолчанию. Сейчас на уровне серверов Microsoft Exchange запрещено повышенное потребление ресурсов сессиями более чем в течение 5 минут, такие ограничения не позволяют выполнять миграцию с приемлемой скоростью.
  • Количество потоков при миграции не должно превышать количество доступных соединений EWS. Иначе при миграции буду возникать ошибки с кодом 500.

Настройка сервиса в установщике

В Exchange Server есть функциональность In-Place Archiving — она позволяет настроить архивацию старых писем. Эти письма не доступны по протоколу IMAP, поэтому их импортом занимается новый сервис миграции exchange-importer. Миграцией пользовательских правил (фильтров) из Exchange занимается сервис exchange-importer-legacy-rules.

Чтобы включить сервисы миграции из Exchange:

  1. Откройте веб-интерфейс установщика http://server-adress:8888.
  2. Нажмите на кнопку InfoButton в правом верхнем углу, выберите пункт Продукты.
  3. Включите компонент Импорт данных из Microsoft Exchange.

    img

  4. Нажмите кнопку Сохранить.

  5. Следуя подсказкам в интерфейсе, добавьте и запустите новые роли.

Настройка сервиса производится через переменные окружения в панели администратора в разделе Настройки.

Чтобы настроить сервис:

  1. Перейдите в раздел Настройки -> Переменные окружения.
  2. В левом меню найдите сервис exchange-importer.

    img

  3. Нажмите кнопку редактировать edit_icon.

  4. Нажмите на кнопку + Добавить.
  5. Настройте основные параметры для миграции In-Place архивов:

    • 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 — количество одновременно работающих процессов, обрабатывающих задачи из очереди.

      Внимание

      Каждый процесс может создавать отдельное подключение к EWS. Максимальное количество подключение = (Количество контейнеров exchange_importer) * (EXCHANGE_IMPORTER_QUEUE_WORKERS). Если нужно ограничить количество подключений, то измените значение переменной 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 — максимальное допустимое количество попыток сгенерировать задачи на миграцию писем для пользователя.
  6. Нажмите Сохранить.

  7. В левом меню найдите сервис exchange-importer-legacy-rules.
  8. Настройте основные параметры для миграции пользовательских правил:

    • 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 — количество одновременно работающих процессов обрабатывающих задачи из очереди.
  9. Выполните шаг up_container для exchange-importer и exchange-importer-legacy-rules, чтобы перезапустить сервисы.

    img

После того как сервисы созданы и настроены можно начинать процесс импорта архивных писем и правил.

Как импортировать архивные письма

В сервис нужно передать список адресов пользователей, для которых необходимо выполнить импорт.

Загрузить пользователей из CSV файла

Первый способ:

На ВМ с установщиком выполните команду со списком пользователей в запросе:

curl 'http://172.20.4.222:8080/migrate/inplace_archives/csv' \
--data \
'alex.williams36@dev.onprem.ru
emily.brown14@dev.onprem.ru
david.miller16@dev.onprem.ru'

где 172.20.4.222 — адрес сервиса exchange-importer (из веб-интерфейса установщика).

img

Второй способ:

На ВМ с установщиком выполните команду со списком пользователей в файле:

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.ru
emily.brown14@dev.onprem.ru
david.miller16@dev.onprem.ru

Как контролировать процесс импорта

  1. Перейдите в веб-интерфейс Grafana для своей инсталляции: https://biz.<your_domain>/grafana
  2. В списке Dashboards выберите General -> Exchange Importer.

img

  • 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.

Как импортировать архивные письма за определенный период

  1. В веб-интерфейсе установщика перейдите в раздел Настройки -> Переменные окружения.
  2. В левом меню найдите сервис exchange-importer.

    img

  3. Нажмите кнопку редактировать edit_icon.

  4. Нажмите на кнопку + Добавить.
  5. Добавьте переменные 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, то по умолчанию будет использоваться текущая дата.
  6. Нажмите Сохранить.
  7. Выполните шаг up_container для exchange-importer.

Как импортировать пользовательские фильтры

В сервис нужно передать список адресов пользователей, для которых необходимо выполнить импорт.

Загрузить пользователей из CSV файла

Первый способ:

На ВМ с установщиком выполните команду со списком пользователей в запросе:

curl 'http://172.20.4.222:8080/migrate/inbox_rules/csv' \
--data \
'alex.williams36@dev.onprem.ru
emily.brown14@dev.onprem.ru
david.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 (из веб-интерфейса установщика).

CSV файл не должен содержать заголовков:

alex.williams36@dev.onprem.ru
emily.brown14@dev.onprem.ru
david.miller16@dev.onprem.ru

Как контролировать процесс импорта

  1. Перейдите в веб-интерфейс Grafana для своей инсталляции: https://biz.<your_domain>/grafana
  2. В списке Dashboards выберите General -> Exchange Importer.
  3. Прокрутите страницу до раздела Migrate Rules Queue.

img

  • Queued Migrate Rules Tasks — количество задач в очереди. Для каждого почтового ящика из списка миграции создается одна задача.
  • Running Workers — количество одновременно работающих процессов, которые обрабатывают задачи из очереди.
  • Avg Rule Process time — среднее время обработки одного почтового ящика.
  • Total Count — агрегированные данные по правилам и пользователям.
  • Rule mapping statuses — количество завершенных задач по статусам.

Задача по миграции правила может завершиться с одним из 4 статусов:

  • success — миграция прошла успешно.
  • error — миграция не прошла из за ошибки, не связанной с маппингом правила. Например, из-за сетевых ошибок.
  • mapping_error — миграция не прошла из за ошибки, связанной с маппингом правила. Hапример, правило содержит неизвестные сервису поля или поля с некорректными данными.
  • partial_mapping — миграция прошла, но в правиле присутствуют поля, которые не поддерживаются в Почте VK WorkSpace.
  • ValidationError — ошибка валидации ответа от Exchange.

Как получить данные по каждому правилу

После миграции фильтров можно получить данные по каждому правилу в CSV формате. Это можно сделать тремя способами:

  • На ВМ с установщиком выполните команду со списком пользователей в запросе:

    curl 'http://172.20.4.222:8080/status/rules/csv' \
    --data \
    'alex.williams36@dev.onprem.ru
    emily.brown14@dev.onprem.ru
    david.miller16@dev.onprem.ru' > tmp.csv
    
  • На ВМ с установщиком выполните команду со списком пользователей в файле:

    curl 'http://172.20.4.222:8080/migrate/inbox_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.ru
    emily.brown14@dev.onprem.ru
    david.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.ru
emily.brown14@dev.onprem.ru
david.miller16@dev.onprem.ru

Как заменить контакты в Почта VK WorkSpace

Чтобы заменить контакты в Почте VK WorkSpace, контактами из MS Exchange, воспользуйтесь одни из следующих способов:

  • Со списком пользователей в запросе:

    curl 'http://172.20.4.222:8080/replace/contacts/csv' \
    --data \
    'alex.williams36@dev.onprem.ru
    emily.brown14@dev.onprem.ru
    david.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.ru
emily.brown14@dev.onprem.ru
david.miller16@dev.onprem.ru

Как получить статус миграции контактов

После миграции фильтров можно получить данные по каждому контакту в CSV формате. Это можно сделать двумя способами:

  • На ВМ с установщиком выполните команду со списком пользователей в запросе:

    curl 'http://172.20.4.222:8080/status/contacts/csv' \
    --data \
    'alex.williams36@dev.onprem.ru
    emily.brown14@dev.onprem.ru
    david.miller16@dev.onprem.ru' > tmp.csv
    
  • На ВМ с установщиком выполните команду со списком пользователей в файле:

    curl 'http://172.20.4.222:8080/status/contacts/csv' \
    --data-binary "@users.csv" > tmp.csv