Миграция Exchange 2013-2019

В прошлом году мы приняли давно назревшее решение об обновлении домена и Exchange на 2019. Работа очень объёмная, процесс длится уже больше года. Рассказываем, как мы готовили и настраивали сервера.

Статья вышла объёмная, так что разбили её на две части.

Содержание:

  1. Введение

  2. Подготовка и ввод новых контроллеров домена.

  3. Upgrade «Свидетеля» — WITNESS и «Портала» — SRV

  4. Подготовка Серверов Exchange 2019

    4.1. Установка Серверов

    4.2. Включить MAPI/HTTP. (Подробнее)

    4.3. Подготовить схему и AD

    4.4. Установка серверов 2019

    4.5. Autodiscover и настройка SCP (Service Connection Point) на серверах на EX01 и EX02

  5. Настройка Серверов Exchange 2019

    5.1. Общие настройки

    5.2. Настроить коннекторы приема

    5.3. Настройка сертификатов

    5.4. Настройка сертификатов для POP\IMAP

    5.5. Настройка сертификатов для коннектора приема

    5.6. Настройка виртуальных каталогов

    5.7. Проверка работы почтовых протоколов\виртуальных каталогов

    5.8. Проверка клиентов Outlook

    5.9. Проверка внешних клиентов

    5.10. Устанавливаем SCP и DNS для EX01 и EX02

Часть 2 (Миграция почтовых ящиков, Удаление серверов Exchange 2013 — EX1 и EX2, Обновление пограничных серверов EDGE)

В Cloud4Y все сервера Windows Server 2013 R2. Exchange версия 2013 CU23 Mar23SU. Есть пограничные сервера EDGE1 и EDGE2. И еще есть Web-портал для клиентов — SRV.

f231f0a5a1a83f82261a55f2cfbedd0e.png

Текущая и планируемая конфигурация:

Текущая

Планируемая

Имя

ОС

IP

Exchange

Имя

ОС

IP

Exchange

Domain Controllers

DC1

DC2

2003 R2
2003 R2

x.y.2.2
x.y.3.2

-

DC-01
DC-02

2019
2019

x.y.2.2
x.y.3.2

-

Exchange. DAG Servers

EX1
EX2

2003 R2
2003 R2

x.y.2.4
x.y.3.4

2013 CU23
2013 CU23

EX01
EX02

2019
2019

x.y.2.3
x.y.3.3

2019 CU14
2019 CU14

Witness

Witness

2003 R2

x.y.4.2

-

Witness

-

x.y.4.2

-

EDGE

EDGE1
EDGE2

2003 R2
2003 R2

x.y.2.7
x.y.3.7

2013 CU23
2013 CU23

EDGE1
EDGE2

2019
2019

x.y.2.7
x.y.3.7

2019 CU14
2019 CU14

SolidCP

SRV

2003 R2

x.y.2.6

-

SRV

2019

x.y.2.6

-

Как видно из таблицы большинство новых серверов, включая новые контроллеры домена, получат IP-адреса старых серверов. Сделано это, чтобы не переписывать маршруты на маршрутизаторах, фаерволах, сервисах и документации.

2. Подготовка и ввод новых контроллеров домена.

Разворачиваем два новых сервера 2019 с ролями AD и DNS. Устанавливаем все обновления. И повышаем до уровня Domain Controller.

385215d0c112b82edf98d6a26f567079.png

Контроллеры домена DC-01 и DC-02 изначально поднимаем с новыми IP-адресами. После нужно убедится, что они работают без ошибок:

  • dcdiag.exe /s: <КД> и dcdiag /s: <КД> /test: dns /v

  • repadmin /replsummary

  • nslookup\Resolve-DnsName (PowerShell)

  • указать вручную у одиночного клиента IP DNS на IP DC-01\DC-02

Далее передаем FSMO-роли. Всего их пять:

Move-ADDirectoryServerOperationMasterRole -Identity dc-01 -OperationMasterRole 0,1,2,3,4

Чтобы не перегружать статью, где это возможно, буду давать ссылки: Передача/захват ролей FSMO на другой контроллер домена Active Directory

Далее поднимаем уровень домена (оснастка «Active Directory Users and Computers») и леса (оснастка «Active Directory Domains and Trusts»).

f0b9d5479e130048256702f72490c349.png32f539da05de2ce8e6275f00cbc8e410.png

Теперь можно выключить старые контроллеры домена DC1 и DC2  и понаблюдать. Если будут ошибки, включаем — разбираемся.


Далее нужно вывести старые контроллеры DC1 и DC2  по одному. Закончили работы с одним, переходим к следующему. Понижаем  до рядового сервера и выключаем.

Пора поменять IP-адреса DC-01 и DC-02 на x.y.2.2 и x.y.3.2. Подробней тут.

Выполняем команды:

ipconfig /flushdns
ipconfig /registerdns
dcdiag /fix

3. Upgrade «Свидетеля» — WITNESS и «Портала» — SRV

На этих серверах просто сделали — «In-Place Upgrade», то есть установку ОС 2019 поверх 2012 R2 с сохранением параметров и приложений. Предварительно было проведено тестирование с копией ВМ.

Также машины повторно были введены в домен, так как возникала ошибка авторизации доменных пользователей.

После на SRV был обновлен SQL сразу с 2012 R2 до 2022.

После на SRV был обновлен SQL сразу с 2012 R2 до 2022.

4. Подготовка Серверов Exchange 2019

  1. Установка Серверов:

Разворачиваем два сервера Windows Server 2019 EX01 и EX02. Устанавливаем необходимые пакеты:

И необходимые компоненты (PowerShell):

Install-WindowsFeature Server-Media-Foundation, NET-Framework-45-Core, 
NET-Framework-45-ASPNET, NET-WCF-HTTP-Activation45, NET-WCF-Pipe-Activation45, 
NET-WCF-TCP-Activation45, NET-WCF-TCP-PortSharing45, RPC-over-HTTP-proxy, 
RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, 
RSAT-Clustering-PowerShell, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, 
Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, 
Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, 
Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, 
Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, 
Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, 
Web-WMI, Windows-Identity-Foundation, RSAT-ADDS
  1. Включение MAPI/HTTP. (Подробнее)

Перед вводом новых серверов, было принято решение включить протокол «MAPI». Так как протокол не новый, проверенный временем, и к тому же с 31 октября  2017 в Exchange Online закончилась поддержка «RPC over HTTP».

 Здесь страница поддержки протокола «MAPI», таблица ниже:

6e1456558e5b64886c5f9307ca5c59a2.png

Есть три версии протокола MAPI, пример Outlook Connection:

  • Первая — «MAPI\RPC», другие названия: «RPC», «MAPI протокол», «Exchange RPC», «Outlook-Exchange Transport Protocol». Ссылка;

  • Вторая — «Outlook Anywhere» или «RPC over HTTP». Где тот же «MAPI\RPC» заворачивался в HTTP трафик;

  • Третья — «MAPI over HTTP» или просто «MAPI», есть некоторая путаница с первой версией — «MAPI протокол». Так же Outlook Connection обозначает его как «HTTP». Представлен в Мае 2014. Впервые появился в Exchange 2013 SP1 и Outlook 2013 SP1.

Проверяем настройки виртуального каталога:

Get-MapiVirtualDirectory

И устанавливаем внутренний и внешний Url:

Set-MapiVirtualDirectory -InternalUrl DC-01.domen.ru -ExternalUrl mail.domen.ru

Set-MapiVirtualDirectory -InternalUrl DC-02.domen.ru -ExternalUrl mail.domen.ru

Включаем «MAPI over HTTP» и проверяем:

Set-OrganizationConfig -MapiHttpEnabled $true

Get-OrganizationConfig | fl *MAPI*

Проверяем:

Test-OutlookConnectivity -ProbeIdentity OutlookMapiHttpSelfTestProbeTest-MapiConnectivity

При подключении по «MAPI over HTTP» в Outlook Connection, в столбце «Protocol», должно быть «HTTP»:

4141fde876a9c60136b1a9e00090b001.png

  1. Подготовить схему и AD:

Далее нужно расширить схему и подготовить Active Directory (AD) — Ваша учетная запись должна быть членом групп безопасности «Администраторы схемы» и «Администраторы предприятия».

Единственный поддерживаемый способ расширения схемы для Exchange — использовать Setup.exe с /PrepareSchema, /PrepareAD или автоматически с помощью мастера установки Exchange.

.\setup.exe /PrepareSchema IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF

.\setup.exe /PrepareAD /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF

  1. Установка серверов 2019:

Далее просто устанавливаем Exchange 2019 на два сервера EX01 и EX02. При установке будет проведена проверка необходимых пакетов и компонентов, которые мы установили в пункте 5.1. Выбираем роль: «Mailbox role».

Установка простая, просто нажимаем «далее — далее». Перезагружаем сервера.

4d8fe7a6de6627b8d38b601f8e1005b6.png

  1. Autodiscover и настройка SCP (Service Connection Point) на серверах на EX01 и EX02:

SCP точка подключения создается для каждого CAS-сервера и хранится в AD. Соответственно внутренние клиенты получают ее из AD. Во внутренней сети клиенты Outlook для получения Autodiscover.xml используют SCP (только при неудаче, переходят к «не доменной логике»):

  • Клиент пытается разрешить в DNS стандартные URL`ы службы AutoDiscover:
    https:///autodiscover/autodiscover.xml
    https://autodiscover./autodiscover/autodiscover.xml

  • Если по протоколу HTTPS стандартные URL`ы не отвечают, то осуществляется попытка выполнить метод GET на указанные выше URL`ы по протоколу HTTP. Этот метод применяется только для редиректа на HTTPS-сайт;

  • В случае очередной неудачи, клиент пытается получить из DNS SRV-запись службы Autodiscover. SRV запись вида »_autodiscover._tcp.» может указывать на любой другой URL, например, тот, который используется для OWA, ActiveSync и т.п. (https://mail. /autodiscover/autodiscover.xml)

  • Если все предыдущие попытки не увенчались успехом, то клиент пытается найти локальный XML-файл с настройками.

Подробнее, еще и еще.

Добавление новых серверов приведет к появлению ошибок, так как не настроены сертификаты, виртуальные каталоги и коннекторы приема.

Необходимо изменение имен SCP (временно) для новых серверов сразу после установки на имена серверов Exchange 2013.

cef68fbe65e48050b2e6579fb6f8e93e.png

Текущая конфигурация SCP на Exchange 2013:

Get-ClientAccessServer | Select FQDN, *CN, *URI, isValid

Fqdn            AutoDiscoverServiceCN   AutoDiscoverServiceInternalUri                         IsValid

----            ---------------------    ------------------------------                         -------

EX1.domen.ru    EX1                      https://ex1.domen.ru/Autodiscover/Autodiscover.xml        True

EX2.domen.ru    EX2                      https://ex2.domen.ru/Autodiscover/Autodiscover.xml        True

ex01.domen.ru   ex01                     https://ex01.domen.ru/Autodiscover/Autodiscover.xml       True

ex02.domen.ru   ex02                     https://ex02.domen.ru/Autodiscover/Autodiscover.xml       True

Меняем SCP в Exchange 2019:

$exuri1 = (Get-ClientAccessServer ex1).AutoDiscoverServiceInternalUri.AbsoluteUri

$exuri2 =(Get-ClientAccessServer ex2).AutoDiscoverServiceInternalUri.AbsoluteUriSet-ClientAccessServer -Identity ex01 -AutodiscoverServiceInternalURI

$exur1Set-ClientAccessServer -Identity ex02 -AutodiscoverServiceInternalURI

$exur2

Теперь SCP EX01 и EX02 указывает на SCP Exchange 2013:

Get-ClientAccessServer | Select FQDN, *CN, *URI, isValid

Fqdn            AutoDiscoverServiceCN   AutoDiscoverServiceInternalUri                         IsValid

----            ---------------------    ------------------------------                         -------

EX1.domen.ru    EX1                      https://ex1.domen.ru/Autodiscover/Autodiscover.xml        True

EX2.domen.ru    EX2                      https://ex2.domen.ru/Autodiscover/Autodiscover.xml        True

ex01.domen.ru   ex01                     https://ex1.domen.ru/Autodiscover/Autodiscover.xml       True

ex02.domen.ru   ex02                     https://ex2.domen.ru/Autodiscover/Autodiscover.xml       True

5. Настройка Серверов Exchange 2019

  1. Общие настройки:

Проверяем текущую конфигурацию:

Get-ExchangeServer | Sort Name | ft -AutoSize

Name      Site                                                     ServerRole     Edition         AdminDisplayVersion

----      ----                                                     ----------     -------         -------------------

EDGE1     domen.ru/Configuration/Sites/Default-First-Site-Name     Edge           Enterprise      Version 15.2 (Build 1258.12)

EDGE2     domen.ru/Configuration/Sites/Default-First-Site-Name     Edge           Enterprise      Version 15.2 (Build 1258.12)

EX1       domen.ru/Configuration/Sites/Default-First-Site-Name     Mailbox        Enterprise      Version 15.0 (Build 1497.2)

EX2       domen.ru/Configuration/Sites/Default-First-Site-Name     Mailbox        Enterprise      Version 15.0 (Build 1497.2)

EX02      domen.ru/Configuration/Sites/Default-First-Site-Name     Mailbox        Enterprise      Version 15.2 (Build 1258.12)

EX01      domen.ru/Configuration/Sites/Default-First-Site-Name     Mailbox        Enterprise      Version 15.2 (Build 1258.12)

Делаем основные настройки:

  • Активация: Set-ExchangeServer {Host-name} -ProductKey 12345–12345–12345–12345–12345

  • Установка запуска служб POP3\IMAP — Авто, если нам требуется работать по POP3\IMAP.

  • Создаем DAG — «DAG19» на новых серверах EX01 и EX02.
    Exchange не поддерживает DAG с разными версиями Exchange. Поэтому при обновлении, создаем новый DAG и мигрируем mailbox«ы из старого (DAG01) в новый (DAG19)

Проверяем текущую конфигурацию DAG:

Get-DatabaseAvailabilityGroup | Select Name, Servers, DatabaseAvailabilityGroupIpAddresses

Name  Servers                            DatabaseAvailabilityGroupIpAddresses

----  -------                            ------------------------------------

dag01 {EX1, EX2}                         {192.168.2.10, 192.168.3.10}

dag19 {EX01, EX02}                       {255.255.255.255}

DAG19 — использует модель «IP-less», на это указывает IP-адрес 255.255.255.255. То есть «IP-less DAG» не используется IP, CNO в Active Directory и AAP (Administrative Access Point) — управление такого кластера (DAG) только через PowerShell.

Чтобы  на старых серверах Exchange использовать административный портал (ECP) с поддержкой Exchange 2019 нужно к адресу добавить »? ExchClientVer=15.2».

Пример: https://localhost/ecp? ExchClientVer=15.2.

  1. Настроить коннекторы приема:

По умолчанию при установке создается пять коннекторов приема: два «HubTransport» и три «FrontEnd». Подробнее. 

FrontEnd-коннектор принимают письма извне и передают их транспортной службе (Hub Transport Service). Для того, чтобы наши новые сервера начали принимать и обрабатывать почту, нужно, чтобы конфигурация коннекторов на новых серверах совпадала с таковой на старых. Обычно конфигурацию коннекторов не меняют за исключением коннекторов  «Default Frontend » и «Client Frontend »(порты 25 и 587). Иногда создают дополнительные коннекторы.

Проверим текущую конфигурацию коннекторов для EX01:

Get-ReceiveConnector -Server EX01 | ft Identity, Bindings, Enabled, Fqdn, TransportRole -AutoSize

Identity                          Bindings                  Enabled   Fqdn                   TransportRole                                                   

--------                          --------                  -------   ----                   -------------                                                   

EX01\Default EX01                 {[::]:2525, 0.0.0.0:2525}    True   EX01.flexcloud.ru       HubTransport

EX01\Client Proxy EX01            {[::]:465, 0.0.0.0:465}      True   EX01.flexcloud.ru       HubTransport

EX01\Client Frontend EX01         {[::]:587, 0.0.0.0:587}      True   mail.flexcloud.ru  FrontendTransport

EX01\Default Frontend EX01        {[::]:25, 0.0.0.0:25}        True   EX01.flexcloud.ru  FrontendTransport

EX01\Outbound Proxy Frontend EX01 {[::]:717, 0.0.0.0:717}      True   EX01.flexcloud.ru  FrontendTransport

Сравнение в табличном виде коннекторов «Default Frontend » и «Client Frontend » на всех MBX\CAS-серверах:

Get-ReceiveConnector '*\Client Frontend*'  | Select * | OGV

Get-ReceiveConnector '*\Default Frontend*'  | Select * | OGV

Для установки параметра (ов) коннектора используем «Set-ReceiveConnector».

Те параметры которые отсутствуют или отличаются на новых серверах, устанавливаем в ECP (доступны не все параметры) или с помощью командлета «Set-ReceiveConnector».

74bf749e2b13c1478b567c74c4a036e4.png

  1. Настройка сертификатов:

Проверим текущую конфигурацию Сертификатов для EX1:

Get-ExchangeCertificate -Server ex1

Thumbprint                                Services   Subject

----------                                --------   -------

5FD8AA33809AD3E2486719CD7A1E18DC06D39309  …WS.    CN=*.domen.ru

C39B96CE241227AD4596443D785EE9A50FA60504  …WS.    CN=EX1

FD3E68741256DCBEE5B36FBCA7B0B6F7DD7ADD0D  …S.    CN=Microsoft Exchange Server Auth Certificate

37A85738CC7EAF05DE704164B58916274C09E58B  …    CN=WMSvc-EX1

«CN=*.domen.ru» сертификат должен быть на всех CAS\MBX серверах. Остальные сертификат для каждого сервера могут иметь различные «отпечатки».  Если сервер является челеном «IP-less DAG», то будет еще «CN=CLIUSR» сертификат.

Сертификаты берем с серверов Exchange 2013 —  EX1 или EX2. Сертификат экспортируем (с закрытым ключом) и импортируем (*.pfx) сертификат на новых серверах в «Personal\Certificates». Используем «Manage computer certificates» — «certlm.msc»

Привязываем в «IIS\Default Web Site» → «Bindings», все протоколы «HTTPS» на серверах EX01 и EX12:

aff7285c6435d0a7f207dd9ee03af27c.pnge1dec33f6c1b8969f9ea49f255439d33.png41f4ced135b8b935284b99de8c2373c2.png

Перезапускаем IIS на обоих серверах:

iisreset /noforce

  1. Настройка сертификатов для POP\IMAP:

Проверяем текущую конфигурацию POP\IMAP для EX01:

Get-PopSettings -Server EX01 | Select UnencryptedOrTLSBindings, SSLBindings, LoginType, X509CertificateName, InternalConnectionSettings, ExternalConnectionSettings

UnencryptedOrTLSBindings   : {[::]:110, 0.0.0.0:110}

SSLBindings                : {[::]:995, 0.0.0.0:995}

LoginType                  : SecureLogin

X509CertificateName        :  

InternalConnectionSettings: {ex01.domen.ru:995: SSL, ex0.domen.ru:110: TLS}

ExternalConnectionSettings: {}

Get-ImapSettings -Server EX01| Select UnencryptedOrTLSBindings, SSLBindings, LoginType, X509CertificateName, InternalConnectionSettings, ExternalConnectionSettings

UnencryptedOrTLSBindings   : {[::]:143, 0.0.0.0:143}

SSLBindings                : {[::]:993, 0.0.0.0:993}

LoginType                  : SecureLogin

X509CertificateName        :  

InternalConnectionSettings: {ex01.domen.ru:993: SSL, ex0.domen.ru:143: TLS}

ExternalConnectionSettings: {}

Параметры  «X509CertificateName» и «ExternalConnectionSettings» не установлены…

Устанавливаем «X509CertificateName» и «ExternalConnectionSettings» для EX01:

Set-PopSettings  -Server EX01 -X509CertificateName mail.domen.ru -ExternalConnectionSettings 'mail.domen.ru:995:SSL'

Set-ImapSettings -Server EX01 -X509CertificateName mail.domen.ru -ExternalConnectionSettings 'mail.domen.ru:993:SSL'

Проверяем конфигурацию POP\IMAP для EX01:

Get-PopSettings | Select UnencryptedOrTLSBindings, SSLBindings, LoginType, X509CertificateName, InternalConnectionSettings, ExternalConnectionSettings

UnencryptedOrTLSBindings   : {[::]:110, 0.0.0.0:110}

SSLBindings                : {[::]:995, 0.0.0.0:995}

LoginType                  : SecureLogin

X509CertificateName        : mail.domen.ru

InternalConnectionSettings: {ex01.domen.ru:995: SSL, ex0.domen.ru:110: TLS}

ExternalConnectionSettings: {mail.domen.ru:995: SSL}

Get-ImapSettings -Server EX01 | Select UnencryptedOrTLSBindings, SSLBindings, LoginType, X509CertificateName, InternalConnectionSettings, ExternalConnectionSettings

UnencryptedOrTLSBindings   : {[::]:143, 0.0.0.0:143}

SSLBindings                : {[::]:993, 0.0.0.0:993}

LoginType                  : SecureLogin

X509CertificateName        : mail.domen.ru

InternalConnectionSettings: {ex01.domen.ru:993: SSL, ex0.domen.ru:143: TLS}

ExternalConnectionSettings: {mail.domen.ru:993: SSL}

Конфигурация должна совпадать на всех CAS\MBX серверах.

После установки перезапускаем службы:  

  • MSExchangePop3

  • MSExchangePop3BE

  • MSExchangeImap4

  • MSExchangeImap4BE

«X509CertificateName» указываем сертификат (домен\поддомен, на который распространяется действие нашего сертификата), который будет использоваться для шифрования соединения.

«ExternalConnectionSettings» — параметры подключения для внешних клиентов. В моем случае разрешен доступ только по защищенному (SSL) IMAP\POP.

0749d36075e38286c91d2f695c32969b.png


Если у нас не «WildCard-сертификат», то сертификат, еще нужно назначить службе POP\IMAP в ECP или используя команду:

Enable-ExchangeCertificate -Server EX01 -Thumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -Services POP,IMAP

  1. Настройка сертификатов для коннектора приема

Если мы еще хотим установить сертификат (выданный доверенной третьей стороной) на коннектор приема, для шифрования входящего SMTP-соединения. Нужно установить параметр «TlsCertificateName» коннектор приема. Обычно этот коннектор использует 25 порт и называется «Default Frontend ». По умолчанию параметр «TlsCertificateName» равен $null и используется самоподписанный сертификат.

Проверим текущую конфигурацию коннекторов «Default Frontend»:

Get-ReceiveConnector »*\Default Frontend*» | Select Identity, Bindings, Enabled, TlsCertificateName | ft -AutoSize

Identity                     Bindings               Enabled   TlsCertificateName

--------                     --------               -------   ------------------

EX1\Default Frontend EX1     {[::]:25, 0.0.0.0:25}    True    CN=AlphaSSL, O=GlobalSign, C=BECN=*.domen.ru

EX2\Default Frontend EX2     {[::]:25, 0.0.0.0:25}    True    CN=AlphaSSL, O=GlobalSign, C=BECN=*.domen.ru

EX01\Default Frontend EX01   {[::]:25, 0.0.0.0:25}    True

EX02\Default Frontend EX02   {[::]:25, 0.0.0.0:25}    True

Параметры  «TlsCertificateName»  не установлены…

Установим параметр  «TlsCertificateName» на EX01 или EX02:

$cert = Get-ExchangeCertificate -Thumbprint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

$tlscertificatename = "$($cert.Issuer)$($cert.Subject)" 

Set-ReceiveConnector "EX01\Default Frontend EX01" -TlsCertificateName $tlscertificatename

Set-ReceiveConnector "EX02\Default Frontend EX02" -TlsCertificateName $tlscertificatename

Еще раз проверим текущую конфигурацию коннекторов «Default Frontend»:

Get-ReceiveConnector »*\Default Frontend*» | Select Identity, Bindings, Enabled, TlsCertificateName | ft -AutoSize

Identity                     Bindings               Enabled   TlsCertificateName

--------                     --------               -------   ------------------

EX1\Default Frontend EX1     {[::]:25, 0.0.0.0:25}    True    CN=AlphaSSL, O=GlobalSign, C=BECN=*.domen.ru

EX2\Default Frontend EX2     {[::]:25, 0.0.0.0:25}    True    CN=AlphaSSL, O=GlobalSign, C=BECN=*.domen.ru

EX01\Default Frontend EX01   {[::]:25, 0.0.0.0:25}    True    CN=AlphaSSL, O=GlobalSign, C=BECN=*.domen.ru

EX02\Default Frontend EX02   {[::]:25, 0.0.0.0:25}    True    CN=AlphaSSL, O=GlobalSign, C=BECN=*.domen.ru

6.Настройка виртуальных каталогов:

У нас есть несколько виртуальных каталогов, так как после установки Exchange Server они устанавливаются с параметрами по-умолчанию. Нужно проверить все виртуальные каталоги. Чаще всего изменить требуется только внешнюю ссылку («External Url»). 

В таблице на примере сервера EX01 перечислены командлеты и внутренняя/внешняя ссылка на каталог, которая должна быть установлена:

Каталог (PS commandlet)

Internal (Hostname/Url)

External (Hostname/Url)

Get\Set-OutlookAnywhere

ex01.domen.ru

mail.domen.ru

Get\Set-EcpVirtualDirectory

https://ex01.domen.ru/ecp

https://mail.domen.ru/ecp

Get\Set-OwaVirtualDirectory

https://ex01.domen.ru/owa

https://mail.domen.ru/owa

Get\Set-WebServicesVirtualDirectory

https://ex01.domen.ru/EWS/Exchange.asmx

https://mail.domen.ru/EWS/Exchange.asmx

Get\Set-ActiveSyncVirtualDirectory

https://ex01.domen.ru/Microsoft-Server-ActiveSync

https://mail.domen.ru/Microsoft-Server-ActiveSync

Get\Set-OabVirtualDirectory

https://ex01.domen.ru/OAB

https://mail.domen.ru/OAB

Get\Set-MapiVirtualDirectory

https://ex01.domen.ru/mapi

https://mail.domen.ru/mapi


Таблица командлетов настройки виртуальных каталогов в PowerShell на примере EX01.

Внешнюю ссылку («External Url») можно настроить в ECP сразу на все виртуальные каталоги:

7b97fcfa86377c19b2decdeb8ec7d0e8.png

или использовать PowerShell если требуется более гибкая конфигурация виртуальных каталогов:

Get-OutlookAnyWhere | ft Server, External*, Internal* -AutoSize

Get-EcpVirtualDirectory | ft Server, External*, Internal* -AutoSize

Get-OwaVirtualDirectory | ft Server, External*, Internal* -AutoSize

Get-WebServicesVirtualDirectory | ft Server, External*, Internal* -AutoSize

Get-ActiveSyncVirtualDirectory | ft Server, External*, Internal* -AutoSize

Get-OabVirtualDirectory | ft Server, External*, Internal* -AutoSize

Get-OutlookAnyWhere | ft Server, External*, Internal* -AutoSize

Get-MapiVirtualDirectory | ft Server, External*, Internal* -AutoSize

Проверка и сравнение настроек виртуальных каталогов для всех CAS\MBX — серверов.

Get-OutlookAnyWhere | ft Server, External*, Internal* -AutoSize

ServerName ExternalHostname  ExternalClient       ExternalClientsRequireSsl InternalHostname  InternalClient

                             AuthenticationMethod ExternalClientsRequireSsl InternalHostname  AuthenticationMethod

---------- ----------------  -------------------- ------------------------- ----------------  --------------------

EX1         mail.domen.ru    Basic                                     True     ex1.domen.ru                  Ntlm

EX2         mail.domen.ru    Basic                                     True     ex2.domen.ru                  Ntlm

EX01        mail.domen.ru    Basic                                     True     ex01.domen.ru                 Ntlm

EX02        mail.domen.ru    Basic                                     True     ex02.domen.ru                 Ntlm

Проверка и сравнение настроек виртуального каталога OutlookAnyWhere для всех CAS\MBX — серверов.

 Установка виртуальных каталогов для EX01:

Set-OutlookAnywhere EX01 -InternalHostname ex01.domen.ru -ExternalHostname mail.domen.ru

Set-EcpVirtualDirectory -InternalURL https://ex01.domen.ru/ecp -ExternalURL https://mail.domen.ru/ecp

Set-OwaVirtualDirectory -InternalURL https://ex01.domen.ru/owa -ExternalURL https://mail.domen.ru/owa

Set-WebServicesVirtualDirectory -InternalURL https://ex01.domen.ru/EWS/Exchange.asmx -ExternalURL https://mail.domen.ru/EWS/Exchange.asmx

Set-ActiveSyncVirtualDirectory -InternalURL https://ex01.domen.ru/Microsoft-Server-ActiveSync -ExternalURL https://mail.domen.ru/Microsoft-Server-ActiveSync

Set-OabVirtualDirectory -InternalURL https://ex01.domen.ru/oab -ExternalURL https://mail.domen.ru/oab

Set-MapiVirtualDirectory -InternalURL https://ex01.domen.ru/mapi -ExternalURL https://mail.domen.ru/mapi

Также, можно использовать готовый скрипт «Get-ExchangeURL.ps1», «Config-ExchangeURL.ps1».

  1. Проверка работы почтовых протоколов\виртуальных каталогов.

Для проверки можно использовать командлеты «TestConnectivity». Но в Exchange 2016\2019, Microsoft рекомендует использовать новый командлет «Invoke-MonitoringProbe». Помимо этого командлеты «TestConnectivity» нужно выполнять на том же сервере, где находится тестируемый почтовый ящик иначе результат завершится ошибкой, но работают они быстрее «Invoke-MonitoringProbe». Тестируемый почтовый ящик можно не указывать, но тогда используется почтовый ящик, созданный с помощью  «New-TestCasConnectivityUser.ps1».

 Исключение командлеты:

  • «Test-MAPIConnectivity» — нет привязки к тестируемому mailbox«у;

  • «Test-OutlookConnectivity» — это просто обертка «Invoke-MonitoringProbe»;

  • «Test-OWAConnectivity» — Только Exchange 2010, устарел;

Перечень командлетов «TestConnectivity»:

#testing POP3

Invoke-MonitoringProbe EX01 POP\PopCTPProbe

Invoke-MonitoringProbe POP.Proxy\PopProxyTestProbe

Invoke-MonitoringProbe POP.Protocol\PopDeepTestProbe

Invoke-MonitoringProbe POP.Protocol\PopSelfTestProbe

#testing IMAP4

Invoke-MonitoringProbe IMAP\ImapCTPProbe

Invoke-MonitoringProbe IMAP.Proxy\ImapProxyTestProbe

Invoke-MonitoringProbe IMAP.Protocol\ImapDeepTestProbe

Invoke-MonitoringProbe IMAP.Protocol\ImapSelfTestProbe

#testing ActiveSync

Invoke-MonitoringProbe ActiveSync\ActiveSyncCTPProbe

Invoke-MonitoringProbe ActiveSync.Proxy\ActiveSyncProxyTestProbe

Invoke-MonitoringProbe ActiveSync.Protocol\ActiveSyncDeepTestProbe

Invoke-MonitoringProbe ActiveSync.Protocol\ActiveSyncSelfTestProbe

#testing EWS

Invoke-MonitoringProbe EWS.Proxy\EwsProxyTestProbe

#testing ECP

Invoke-MonitoringProbe ECP.Proxy\EcpProxyTestProbe

#testing OAB

Invoke-MonitoringProbe OAB.Proxy\OABProxyTestProbe

#testing OWA

Invoke-MonitoringProbe OWA.Proxy\OWAProxyTestProbe

Invoke-MonitoringProbe OWA.Protocol\OwaDeepTestProbe

Invoke-MonitoringProbe OWA.Protocol\OwaSelfTestProbe

Invoke-MonitoringProbe OWACalendar.Proxy\OWACalendarProxyTestProbe

#testing Autodiscover

Invoke-MonitoringProbe Autodiscover.Proxy\AutodiscoverProxyTestProbe

#testing RPC\MAPI

Invoke-MonitoringProbe Outlook.Proxy\OutlookProxyTestProbe

Invoke-MonitoringProbe Outlook.Protocol\OutlookRpcSelfTestProbe

Invoke-MonitoringProbe OutlookMapiHttp.Protocol\OutlookMapiHttpSelfTestProbe

  1. Проверка клиентов Outlook:

После настройки коннекторов приема, сертификатор, виртуальных каталогов нужно убедится, что клиенты могут подключаться и получать\отправлять почту. Но, чтобы не нарушить работу других пользователей в случае ошибки, нужно направить тестируемого клиент на Exchange 2019. Для этого прописать в файле hosts клиента наши сервера EX01 или EX02:

192.168.2.3       mail.domen.ru        #ex01

#192.168.3.3       mail.domen.ru        #ex02

Нам нужно убедится, что оба сервера способны обрабатывать подключения пользователей и получение\отправку почты, поэтому сначала проверяем EX01, потом EX02.

Запускаем Outlook, делаем первичную настройку и проверяем различные протоколы подключения: POP3\IMAP4\MAPI.

После того как убедимся, что каждый и EX01, и EX02 обрабатывают подключения Outlook по всем протоколам, можем добавлять в DNS новые сервера и убрать старые.

Этот метод подходит для проверки, как внутренних, так и внешних клиентов. Соответственно при проверке внешних клиентов, новые сервера, также должны быть прописаны во внешнем DNS.

  1. Проверка внешних клиентов:

Microsoft предоставляет инструмент для детального анализа TestConnectivity. TestConnectivity позволяет подробно анализировать все протоколы Exchange и дает детальный лог ошибок. Конечно к серверам Exchange должен быть доступ извне:

7ce6f134ea2ee09fa18c8137dfd8a716.png

  1. Устанавливаем SCP и DNS для EX01 и EX02.

Теперь нужно вернуть SCP для серверов Exchange 2019, измененный в пункте 5.5.

Меняем SCP в Exchange 2019:

Set-ClientAccessServer -Identity ex01 -AutodiscoverServiceInternalURI ex01.domen.ru

Set-ClientAccessServer -Identity ex02 -AutodiscoverServiceInternalURI ex02.domen.ru

Проверяем SCP:

Get-ClientAccessServer | Select FQDN, *CN, *URI, isValid

Fqdn            AutoDiscoverServiceCN   AutoDiscoverServiceInternalUri                         IsValid

----            ---------------------    ------------------------------                         -------

EX1.domen.ru    EX1                      https://ex1.domen.ru/Autodiscover/Autodiscover.xml        True

EX2.domen.ru    EX2                      https://ex2.domen.ru/Autodiscover/Autodiscover.xml        True

ex01.domen.ru   ex01                     https://ex01.domen.ru/Autodiscover/Autodiscover.xml       True

ex02.domen.ru   ex02                     https://ex02.domen.ru/Autodiscover/Autodiscover.xml       True

В DNS, в альяс mail.domen.ru добавляем A-записи IP EX01 и EX02 и убираем ex1 и ex2. Если У Вас есть внешние клиенты, то же самое делаем во внешнем DNS. После это клиенты будут подключаться к Exchange 2019, но проксироваться будут на Exchange.2013. И в таком (смешанном) режиме мы можем находится довольно долго, пока не мигрируем все почтовые ящики в Exchange 2019.

Продолжение следует…

Читать Часть 2

© Habrahabr.ru