Files
OBS/2. Проекты/Windows server 2019 + exchange/Инструкция настройки windows.md

9.2 KiB
Raw Blame History

[!Danger]- 1. Установка и базовая настройка Win server

  1. Установи Windows Server 2019 Desktop Experience, задай сильный пароль локального Administrator и включи RDP (лучше ограничить по IP на фаерволе).
  2. Поставь статический IP (на DC DNS будет “сам на себя”, на Exchange DNS будет указывать на DC).
  3. Синхронизация времени: обязательно корректное время/часовой пояс, иначе будут проблемы с Kerberos/SSL. Задайте статический IP, шлюз, DNS.

[!todo]- 1 Если сервер = DC/DNS: DNS указывайте на себя (127.0.0.1 и/или свой IP).

Если сервер = только Exchange: DNS указывайте на DC.

Проверьте время/часовой пояс (важно для Kerberos/сертификатов).

Timezone, NTP, синхронизация.

Включите RDP (если нужно) и проверьте Windows Firewall (пока можно оставить дефолтный, но убедитесь, что 443/25 потом не блокируются).

Обновления.

Установите все обновления Windows.

Перезагрузки до тех пор, пока обновлений не останется.

Переименование сервера (если ещё не делали):

Rename-Computer -NewName "WINS5" -Restart

Изменить WINS5 НА ТРЕБУЕТСЯ ИМЯ

[!todo]- 2 Проверка, что 443 порт вообще живёт на сервере (потом пригодится при диагностике OWA/ECP):

Test-NetConnection 127.0.0.1 -Port 443

netstat -ano | findstr ":443"

[!Failure]- 2) AD DS + DNS (и ваш splitDNS)

[!info] Критично, чтобы внутренние ПК ходили на внутренний IP, а снаружи — на публичный. Именно из‑за этого у вас “то открывается /owa, то не открывается”: внутри сети обращение к публичному IP не проходило (hairpin NAT), поэтому вы лечили splitDNS.

[!Danger]- 2.1 Если Domen Controller не поднят. Настройка DC На будущем DC:

Install-WindowsFeature AD-Domain-Services,DNS -IncludeManagementTools

Дальше поднимайте лес (пример):

Install-ADDSForest -DomainName "s5teams.local" -DomainNetbiosName "S5TEAMS"

[!Tip]- 2.2 Публичный домен внутри сети (splitDNS)

[!info] Смысл: внутри сети mail.stitch505.ru должен резолвиться в ip типа 192.168....., чтобы OWA/ECP открывались из LAN стабильно.

[!Warning] На каждом внутреннем DNS, который обслуживает клиентов (это важно! у вас были разные DNS на разных подсетях), создайте зону **YOUR_DOMEN** и запись:

Add-DnsServerPrimaryZone -Name "YOUR_DOMEN" -ReplicationScope "Domain" -DynamicUpdate "None"

Add-DnsServerResourceRecordA -ZoneName "YOUR_DOMEN" -Name "mail" -IPv4Address "192.168.60.212" Add-DnsServerResourceRecordCName -ZoneName "YOUR_DOMEN" -Name "autodiscover" -HostNameAlias "mail.YOUR_DOMEN"


>[!Bug] ЗАМЕНИТЬ ДАННЫЕ IP и указать свой домен вместо YOUR_DOMEN

[!Bug]- Проверка на клиентском ПК после изменений:

ipconfig /flushdns nslookup mail.YOUR_DOMEN

[!Bug]- 3. Exchange 2019: установка и базовая оживлялка веба (OWA/ECP)

[!info] Эта часть — чтобы после установки сразу работали https://mail.../owa и https://mail.../ecp, и чтобы при сбоях вы быстро отличали “IIS жив” от “DNS/маршрут сломан”. В вашем диалоге веб реально “падал” снаружи/изнутри, но на сервере 443 был жив — это типичный признак не Exchange, а сети/DNS.

[!Warning]- 3.1 До установки Exchange (ЧЕКЛИСТ)

  1. Сервер должен быть членом домена (если Exchange не на DC).
  2. Установите prerequisites (самый практичный путь — ставить компоненты/зависимости, которые просит установщик CU).
  3. Перезагрузите сервер, убедитесь, что IIS/службы не в “полуживом” состоянии.

[!warning]- 3.2 Установка Exchange Смонтировать ISO Exchange 2019 CU. Запустить setup, выбрать роль Mailbox (в 2019 фактически одна роль). После установки открыть: https://<имя_сервера>/ecp (первичная проверка) потом уже через https://YOUR_DOMEN/ecp

[!Warning] 3.3 Если /owa или /ecp “вечно грузится/таймаут”

  1. Проверка на самом сервере:
Test-NetConnection 127.0.0.1 -Port 443

netstat -ano | findstr ":443"

2. Быстрый перезапуск IIS:

iisreset

3. Если внутри сети с ПК не открывается, а на сервере 127.0.0.1:443 ок — почти всегда это DNS/hairpin, возвращайтесь к разделу splitDNS.

[!Danger] DKIM/SPF/DMARC/PTR Прошлая рабочая схема A mail → 188.170.157.193 CNAME autodiscover → mail.stitch505.ru MX → mail.stitch505.ru SPF (TXT для корня домена) v=spf1 ip4:<PUBLIC_IP> -all DKIM (TXT для селектора) v=DKIM1; k=rsa; p=<PUBLIC_KEY>

Что писать: public key, который выдаёт твой DKIMагент/провайдер, обычно формата:

DMARC (TXT для _dmarc) v=DMARC1; p=none; rua=mailto:dmarc@<PUBLIC_DOMAIN> PTR (reverse DNS) — не в Cloudflare а у провайдера

[!info] DKIM-агент (Exchange DkimSigner / dkim-exchange) (скачать из интернета или прикрепленного файла) ПО/что это:

это отдельный DKIMподписывающий агент для **Exchange onprem**, который добавляет заголовок `DKIM-Signature` на исходящую почту.[](https://github.com/Pro/dkim-exchange/issues/78)
  1. Установка
  • Ставится на Exchange сервер (где работает транспорт).
  • После установки обычно появляется GUI (настройки доменов) и папка с ключами (часто ...\keys).
  1. Создание домена и ключа
  • В GUI агента добавь домен: <PUBLIC_DOMAIN>
  • Selector: например s1 (или любой другой, но одинаковый в агенте и DNS)
  • Сгенерируй ключ (обычно RSA 2048)
  • Скопируй public key → вставь в Cloudflare TXT: s1._domainkey.<PUBLIC_DOMAIN>
  1. Файлы ключей.
  • Private key обычно лежит в файле типа: C:\Program Files\<DKIM signer>\keys\<PUBLIC_DOMAIN>.pem
  • Именно этот файл должен быть доступен службе транспорта Exchange.

[!Warning] Главная ошибка и исправление (Access denied)

Почему ломается: транспорт Exchange обычно работает от `NT AUTHORITY\NETWORK SERVICE`, и если у него нет прав на чтение private key (`.pem`), агент пишет “Access denied”, ключ не грузится и доменов становится 0.

[!todo] Исправление (универсально, подставь свой путь и домен):

$KeyFile = "C:\Program Files\Exchange DkimSigner\keys\<PUBLIC_DOMAIN>.pem" icacls $KeyFile /inheritance:e icacls $KeyFile /grant "NT AUTHORITY\NETWORK SERVICE:RX" Restart-Service MSExchangeTransport

/inheritance:e включает наследование ACL, а /grant добавляет права, это штатный синтаксис icacls.

[!Info] Проверка после настройки

  1. В логе DKIMагента должно быть что-то вроде “settings loaded / Number of domains: 1” (или аналогичная строка, смысл — домен подхватился).
  2. Отправь письмо на Gmail → “Показать оригинал”: должно быть dkim=pass, а также заголовок DKIM-Signature