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

Миграция календарей по протоколу EWS

Назначение документа

В документе описан порядок действий для синхронизации календарей между Exchange EWS 2013 и моноинсталляцией Почты. Exchange Web Services (EWS) — протокол на основе SOAP API, разработанный для управления компонентами MS Exchange.

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

Если требуется синхронизация кластерной инсталляции Почты или миграция с Exchange EWS 2019, обратитесь к представителю VK.

Дополнительная документация

Миграция почты и календарей — в документе описана миграция почтовых данных и календарей пользователей:

  • Архитектура электронной почты на базе Почты VK WorkSpace при интеграции старой корпоративной электронной почты и Почты VK WorkSpace.
  • Подготовка и настройка интеграции старой электронной почты и Почты VK WorkSpace.
  • Запуск и мониторинг миграции данных почтовых ящиков и календарей пользователей.
  • Завершение миграции и перенаправление почтовых потоков.
  • Вывод из эксплуатации серверов старой электронной почты.

Предварительные условия

Чтобы начать настройку, вам потребуется:

  1. Доступ к веб-интерфейсу установщика Почты VK WorkSpace (http://<company_domain>:8888).

  2. Доступ на сервер Почты и в административную панель VK WorkSpace (https://biz.<company_domain>).

  3. Навыки системного администрирования Linux, Microsoft Exchange Server и Microsoft Windows Server.

  4. Пользователи из Microsoft Exchange Server должны быть предварительно созданы в Почте VK WorkSpace — вручную или при помощи интеграции с Active Directory.

  5. Адрес сервера Exchange Web Services (далее — EWS).

  6. Если используются старые версии TLS на сервере EWS — готовые сборки RPM и DEB пакетов для использования утилиты socat (необходимо запросить у представителей VK).

Предварительные действия

  1. Обеспечьте сетевой доступ.

    Перед началом синхронизации календарей на сервере EWS обеспечьте свободный порт для Почты. На сервере Почты — свободный порт для Exchange EWS.

  2. Создайте сервисную учетную запись Active Directory для синхронизации календарей.

    Создайте в службе каталога сервисную учетную запись для синхронизации календарей, например, svc_vkmail_collector. Средствами EMS назначьте данной учетной записи роль ApplicationImpersonation. Командлет для назначения роли имеет следующий вид:

    New-ManagementRoleAssignment -Role ApplicationImpersonation -User svc_vkmail_collector
    
  3. Настройте проксирование TLS для синхронизации календарей.

    Так как Почта передает данные по TLS 1.3, а EWS 2013 поддерживает TLS версии 1.1 и 1.2, требуется настройка туннелирования TLS через socat:

    1. На сервере Почты установите RPM- и DEB-пакеты, полученные у представителей VK:

      # RPM
      sudo rpm -Uvh socat-static-1.7.4.4_20230607_223844-x86_64.rpm
      
      # DEB
      sudo dpkg -i socat-static-1.7.4.4-20230607-223844-x86_64.deb
      
    2. Создайте промежуточное соединение.

      В примере ниже будет использоваться порт 9443 на сервере Почты и порт 443 на сервере EWS:

      # Запустите настройку скрипта (exch1 — имя сервиса подключения)
      sudo /usr/local/bin/socat-static-tls-forwarder-install.sh \ 
      exch1 9443 <EWS domain>:443
      
      # Запустите socat TLS forwarder
      sudo systemctl daemon-reload
      sudo systemctl start socat-static-tls-forwarder-exch1 
      
      # Проверьте соединение
      openssl s_client -connect 127.0.0.1:9443
      

      Внимание

      Порты должны быть указаны явно. Первый адрес порта в скрипте принадлежит Почте, второй — Exchange EWS (порт должен быть открыт для Почты). Оба порта должны быть свободны.

Шаг 1. Настройте интеграцию с сервером Exchange Web Services

  1. Подключитесь к веб-интерфейсу установщика Почты по адресу http://<company_domain>:8888.

  2. Чтобы в интерфейсе установщика Почты появилась вкладка с настройками EWS, в списке продуктов должен быть включен флаг Миграция календарей по протоколу EWS. Для включения опции кликните по значку и выпадающем меню нажмите на кнопку Продукты.

    В списке продуктов включите компонент Миграция календарей по протоколу EWS.

  3. В разделе ИнтеграцииМиграция календарей по протоколу EWS нажмите на кнопку Добавить и введите адрес сервера EWS — после этого станут доступны поля для первоначальной настройки синхронизации:

    • Адрес сервера EWS (Exchange Web Services) — введите адрес сервера Почты вместе с портом, заданным при настройке socat.

      Важно

      Противоречие между названием поля в интерфейсе и реально вводимым адресом обусловлено разницей в версиях TLS. Установщик будет воспринимать введенные в поле IP-адрес и порт как адрес сервера EWS. После преобразование в TLS 1.1 c помощью socat соединение будет перенаправлено на реальный адрес EWS.

    • Логин для подключения к серверу EWS — логин пользователя в Active Directory c правами Impersonation.

    • Пароль для подключения к серверу EWS — пароль пользователя Active Directory c правами Impersonation.

    • Тип прав учетной записи в EWS — тип прав установлен по умолчанию.

    • Пропустить проверку SSL-сертификата сервера EWS — включите флаг, если нужно пропустить проверку SSL.

    • SSL-сертификат сервера (или корневой) — вставьте в поле SSL-сертификат сервера Exchange EWS или корневой сертификат MS Exchange. Также доступно добавление сертификата в виде файла.

  4. После сохранения изменений перейдите к списку контейнеров повторите нужные шаги (они уже отмечены желтым). Также можно нажать на кнопку Play в общей строке состояния.

Шаг 2. Настройте перенос событий из Почты в MS Exchange

Если необходимо, чтобы события переносились не только из MS Exchange в Почту, но и наоборот, выполните шаги:

  1. Перейдите в раздел Переменные окружения и найдите вкладку calendar-cexsy*.

  2. Нажмите на кнопку редактирования, а затем на кнопку Добавить. В выпадающем меню выберите переменную CEXSY_ACCESS_LIST_MODE (первая в списке):

    Если выставить значение black, будут синхронизироваться все почтовые ящики, если white — ни один.

  3. Сохрание изменения и перейдите к списку контейнеров для повторения нужных шагов. Также можно нажать на кнопку Play в общей строке состояния.

Шаг 3. Добавьте домен EWS-сервера в административной панели

Перейдите в административную панель (https://biz.<company_domain>) и добавьте домен EWS-сервера с помощью кнопки Подключить новый проект:

Шаг 4. Выполните синхронизацию календарей

Примечание

Перед проведением миграции календарей убедитесь, что пользователи из MS Exchange созданы в Почте.

Почта VK WorkSpace поддерживает два типа миграции:

  1. Синхронизация календарей — перенос событий из MS Exchange в Почту.
  2. Подписка на события — двухсторонняя интеграция. События пользователей, созданные в любой из систем, будут отображаться как в Exchange, так и в Почте.

Синхонизация и подписка не исключают друг друга: вы можете провести синхронизацию для одних пользователей и подписку для других.

Чтобы запустить миграцию событий из MS Exchange в Почту, а так же подписку на календари:

  1. Подключитесь к гипервизору vkmail-02 средствами клиента SSH и перейдите в каталог /home/deployer.
  2. Сохраните скрипты c названиями sync_all.sh и subscribe.sh соответственно.

    Содержание скрипта sync_all.sh:

    #!/bin/sh
    APITOKEN=$(awk '/^exchangesync::config::api_token/ {print $2}' /home/deployer/main.yaml)
    CALINTAPI=$(awk '/^calendarapi_internal_exchange_sync_token/ {print $2}' /home/deployer/main.yaml)
    sudo docker exec -it exchange-sync-api1 /usr/bin/subscriber -sync_api_url=127.0.0.1 -sync_api_insecure "-sync_api_acl_token=$APITOKEN" -internal_api_url=calendarapi-internal.qdit -internal_api_init_timeout=120s -internal_api_request_timeout=120s -internal_api_acl_header=x-calendarapi-grpc-token -internal_api_insecure "-internal_api_acl_token=$CALINTAPI" -internal_api_request_timeout=120s -sync_api_request_timeout=120s -operation=sync_all "$@"
    

    Содержание скрипта subscribe.sh:

    #!/bin/sh
    APITOKEN=$(awk '/^exchangesync::config::api_token/ {print $2}' /home/deployer/main.yaml)
    CALINTAPI=$(awk '/^calendarapi_internal_exchange_sync_token/ {print $2}' /home/deployer/main.yaml)
    sudo docker exec -it exchange-sync-api1 /usr/bin/subscriber -sync_api_url=127.0.0.1 -sync_api_insecure "-sync_api_acl_token=$APITOKEN" -internal_api_url=calendarapi-internal.qdit -internal_api_init_timeout=120s -internal_api_request_timeout=120s -internal_api_acl_header=x-calendarapi-grpc-token -internal_api_insecure "-internal_api_acl_token=$CALINTAPI" -internal_api_request_timeout=120s -sync_api_request_timeout=120s -operation=subscribe_to_all "$@"
    
  3. Для синхронизации календарей запустите скрипт sync_all.sh:

    # Вместе с командой необходимо передать список электронных адресов
    sh sync_all.sh <email> <email> <email>
    

    Для подписки на календари пользователей запустите скрипт subscribe.sh:

    # Вместе с командой необходимо передать список электронных адресов
    sh subscribe.sh <email> <email> <email>
    

    Важно

    При вводе имен пользователей соблюдайте регистр.

Если миграция (оба типа) завершилась с ошибками, обратитесь к представителю VK.

Можно дополнительно проверить успешность миграции, создав событие в календаре MS Exchange с учетной записи пользователя, который участвует в миграции.

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