10 KiB
[!Danger]- 1. Установка и базовая настройка Win server
- Установи Windows Server 2019 Desktop Experience, задай сильный пароль локального Administrator и включи RDP (лучше ограничить по IP на фаерволе).
- Поставь статический IP (на DC DNS будет “сам на себя”, на Exchange DNS будет указывать на DC).
- Синхронизация времени: обязательно корректное время/часовой пояс, иначе будут проблемы с 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 "<SERVERNAME>" -RestartИзменить WINS5 НА ТРЕБУЕТСЯ ИМЯ
[!todo]- 2 Проверка, что 443 порт вообще живёт на сервере (потом пригодится при диагностике OWA/ECP):
Test-NetConnection 127.0.0.1 -Port 443 netstat -ano | findstr ":443"
[!Failure]- 2) AD DS + DNS (и ваш split‑DNS)
[!info] Критично, чтобы внутренние ПК ходили на внутренний IP, а снаружи — на публичный. Именно из‑за этого у вас “то открывается /owa, то не открывается”: внутри сети обращение к публичному IP не проходило (hairpin NAT), поэтому вы лечили split‑DNS.
[!Danger]- 2.1 Если Domen Controller не поднят. Настройка DC На будущем DC:
Install-WindowsFeature AD-Domain-Services,DNS -IncludeManagementToolsДальше поднимайте лес (пример):
Install-ADDSForest -DomainName "s5teams.local" -DomainNetbiosName "S5TEAMS"[!Tip]- 2.2 Публичный домен внутри сети (split‑DNS)
[!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 (ЧЕКЛИСТ)
- Сервер должен быть членом домена (если Exchange не на DC).
- Установите prerequisites (самый практичный путь — ставить компоненты/зависимости, которые просит установщик CU).
- Перезагрузите сервер, убедитесь, что IIS/службы не в “полуживом” состоянии.
[!warning]- 3.2 Установка Exchange Смонтировать ISO Exchange 2019 CU. Запустить setup, выбрать роль Mailbox (в 2019 фактически одна роль). После установки открыть: https://<имя_сервера>/ecp (первичная проверка) потом уже через https://YOUR_DOMEN/ecp
[!Warning] 3.3 Если /owa или /ecp “вечно грузится/таймаут”
- Проверка на самом сервере:
Test-NetConnection 127.0.0.1 -Port 443
netstat -ano | findstr ":443"
2. Быстрый перезапуск IIS:iisreset
3. Если внутри сети с ПК не открывается, а на сервере 127.0.0.1:443 ок — почти всегда это DNS/hairpin, возвращайтесь к разделу split‑DNS.
[!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> -allDKIM (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 а у провайдера
Обычно нужно: `<PUBLIC_IP>` → `mail.<PUBLIC_DOMAIN>`, и при этом A‑запись `mail.<PUBLIC_DOMAIN>` должна указывать обратно на `<PUBLIC_IP>`.[!info] DKIM-агент (Exchange DkimSigner / dkim-exchange) (скачать из интернета или прикрепленного файла) ПО/что это:
это отдельный DKIM‑подписывающий агент для **Exchange on‑prem**, который добавляет заголовок `DKIM-Signature` на исходящую почту.[](https://github.com/Pro/dkim-exchange/issues/78)
- Установка
- Ставится на Exchange сервер (где работает транспорт).
- После установки обычно появляется GUI (настройки доменов) и папка с ключами (часто ...\keys).
- Создание домена и ключа
- В GUI агента добавь домен: <PUBLIC_DOMAIN>
- Selector: например s1 (или любой другой, но одинаковый в агенте и DNS)
- Сгенерируй ключ (обычно RSA 2048)
- Скопируй public key → вставь в Cloudflare TXT: s1._domainkey.<PUBLIC_DOMAIN>
- Файлы ключей.
- 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] Проверка после настройки
- В логе DKIM‑агента должно быть что-то вроде “settings loaded / Number of domains: 1” (или аналогичная строка, смысл — домен подхватился).
- Отправь письмо на Gmail → “Показать оригинал”: должно быть
dkim=pass, а также заголовокDKIM-Signature
[!Danger] Проверки Проверка доступности после настройки PTR записей
nslookup 188.170.157.193 8.8.8.8
nslookup 188.170.157.193 1.1.1.1
Если есть ошибки:
- агент пишет, что не может загрузить private key “Отказано в доступе”, и доменов становится 0, Измени YOUR_DOMAIN
icacls "C:\Program Files\Exchange DkimSigner\keys\YOUR_DOMAIN.pem" /inheritance:e
icacls "C:\Program Files\Exchange DkimSigner\keys\YOUR_DOMAIN.pem" /grant "NT AUTHORITY\NETWORK SERVICE:RX"
Restart-Service MSExchangeTransport