Установка и Настройка Exchange 2019 на Windows Server 2019 Core

Современная тенденция такова, что on-premises Exchange Server вытесняется Exchange Online, который имеет массу преимуществ для небольших и средних компаний. Именно по этой причине Microsoft не предоставляет оценочную версию Exchange 2019, считая, что тем, кому нужна почтовая система или могут протестировать службы Microsoft 365 (бывший Office 365) или уже имеют опыт с предыдущими версиями Exchange. Более того, Microsoft даже не предоставляет обновления CU в открытом доступе. Их можно скачать только в Microsoft Volume Licensing Center. Тем не менее, мне удалось получить копию 2019 CU5, а чтобы как-то сделать процесс установки более интересным, а также соответствовать и рекомендациям Microsoft и повысить безопасность инфраструктуры, я проведу установку на Windows Server 2019 Core, которая не имеет графического интерфейса. Все требования для Exchange 2019 описаны в документации Microsoft. Рассматривается следующая схема установки:

Я буду устанавливать сразу два сервера для последующей конфигурации DAG с отдельной сетью для репликации баз данных. Также обратите внимание, что в сети не используется IPv6 по двум причинам:
- мой домашний роутер FritzBox хоть и поддерживает IPv6, но он на столько «тупой», что мне проще отключить IPv6 на серверах, чем настраивать роутер ради тестов
- IPv6 не поддерживается Exchange в чистом виде, то есть без IPv4, а в таком случае я не вижу никаких преимуществ в его использовании

Get-NetAdapterBinding -ComponentID ‘ms_tcpip6’ | Disable-NetAdapterBinding -ComponentID ‘ms_tcpip6’ -PassThru

В компании, где я сейчас работаю (январь 2021) вообще отключили IPv6 из соображений безопасности, или если выражаться, как и я написал выше - лень или незнание настройки файрволла на роутере. Первое, что нужно установить на серверах - обновления. Для этого воспользуемся SCONFIG - 6 - a - a.

Exchange 2019 CU4 и выше поддерживает только .Net Framework 4.8 и выше. Определить установленный .Net можно командой PoSh со сверкой таблицы:

(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release

461814

Скачиваем (файл полной установки, а не Web-установщик) и устанавливаем .Net Framework 4.8 (скачка через PoSh занимает много больше времени, поэтому лучше закачать установщик через общие папки, не забывая разрешить SMB на файерволле)

Get-NetFirewallRule -DisplayName "*SMB-in*" | ft DisplayName,Profile,Action,Enabled

Get-NetFirewallRule -DisplayName "*SMB-in*" | Enable-NetFirewallRule


Invoke-WebRequest "https://go.microsoft.com/fwlink/?linkid=2088631" -OutFile ndp48-x86-x64-allos-enu.exe

.\ndp48-x86-x64-allos-enu.exe /q

После перезагрузки:

(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release

528049

Установка Visual C++ 2013 Redistributable Package:

Invoke-WebRequest "https://aka.ms/highdpimfc2013x64enu" -OutFile vC2013.exe
.\vC2013.exe

Важно: Exchange 2019 больше не имеет роли Unified Messaging! Казалось бы, если в компании не планируется использовать Lync Server или Skype for Business Server (хотя кому они нужны, когда есть Microsoft Teams), то и не надо установливать роль Media-Foundation и Unified Communications Managed API 4.0, но Exchange установщик всё равно ругнётся именно на API, поэтому устанавливаем API только с диска Exchange 2019:

Install-WindowsFeature  Server-Media-Foundation

D:\UCMARedist\Setup.exe

Запускаем установку Exchange 2019, пойдём длинным путём рассматривая и кликая каждый шаг установщика. Обратите внимание: я не подготавливаю ни домен, ни лес, ни серверные роли - всё это делает сам установщик Exchange 2019.

D:\Setup.EXE

Установка будет завершена после перезагрузки сервера:

Переходим в панель управления Exchange c другого сервера\компьютера:

Ну а дальше настройка не отличается от предыдущих версий Exchange. Первым делом добавляем все почтовые домены, которые будет обслуживать наш сервер. Так как мой почтовый домен совпадает с домен AD, то он уже присуствует в списке.

Коннектор на приём почты настроен по умолчанию, и если у вас нет пограничного почтового сервера типа EDGE или Postfix (пограниченые сервера, они же smarthost, нужны для дополнительной защиты и маршрутизации почты), то ничего изменять там не надо.

А вот коннектор на отправку почему-то поумолчанию отсутствует. Исправляем это через PowerShell - просто отправляем всю почту в интернет:

New-SendConnector -Internet -Name "INTERNET OUT" -AddressSpaces * -SourceTransportServers EX01

Следующее, что мы исправим - это URL служб Exchange сервера, такие как "клиентский доступ", "офлайн адресная книга" и т.д. Все службы изображены на рисунке ниже:

Все ссылки редактируются по одному правилу: копируем ссылку для внутренних клиентов, вставляем её для внешних клиентов заменяя адрес внутреннего сервера на имя, которое наши клиенты будут использовать находясь за пределами офисной сети. Если имена серверов совпадают, то ссылки можно просто скопировать. Вот пример:

После изменения служебных ссылок можно заняться сертификатом. Как видите из окна выше, браузеру не нравится самоподписанный сертификат Exchange. Сертификат, которому будут доверять все клиенты стоит денег, однако, можно использовать и бесплатные сертфикаты от Let's Encrypt, которые нужно обновлять каждые три месяца (можно автоматизировать), но мне для статьи хватит. Вот хорошая статья по установке сертификата. Для своего тестового стенда я написал отдельную статью.

Всё! После проброса портов 25 и 443 на фаерволе роутера ваш сервер будет готов к приёму и отправке почты, а также к клиентским подключениям (MAPI over HTTP). Все другие дополнительные порты описаны в документации.

17.01.2021