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

143 lines
8.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
>[!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
>>[!info] DKIM-агент (Exchange DkimSigner / dkim-exchange)
>>```
>>ПО/что это: отдельный DKIMподписывающий агент для **Exchange onprem**, который добавляет заголовок `DKIM-Signature` на исходящую почту.[](https://github.com/Pro/dkim-exchange/issues/78)
>>```
>**1. Установка**
> - Ставится на Exchange сервер (где работает транспорт).
> - После установки обычно появляется GUI (настройки доменов) и папка с ключами (часто ...\keys).
>2. **Создание домена и ключа**
>- В GUI агента добавь домен: <PUBLIC_DOMAIN>
>- Selector: например s1 (или любой другой, но одинаковый в агенте и DNS)
>- Сгенерируй ключ (обычно RSA 2048)
>- Скопируй public key → вставь в Cloudflare TXT: s1._domainkey.<PUBLIC_DOMAIN>
>3. **Файлы ключей**.
> - 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]