Оглавление
Создание пользователей в CORP
Есть 2 домена сделаем в них тестовых пользователей
Import-Module ActiveDirectory
$OU = "OU=RU,DC=corp.local,DC=loc"
$Password = ConvertTo-SecureString "Qwerty123" -AsPlainText -Force
$Users = @(
@{GivenName="Alexey"; Surname="Ivanov"; SamAccountName="alexey.ivanov"}
@{GivenName="Maria"; Surname="Petrova"; SamAccountName="maria.petrova"}
@{GivenName="Igor"; Surname="Sidorov"; SamAccountName="igor.sidorov"}
@{GivenName="Elena"; Surname="Kuznetsova"; SamAccountName="elena.kuznetsova"}
@{GivenName="Sergey"; Surname="Vasilyev"; SamAccountName="sergey.vasilyev"}
@{GivenName="Natalia"; Surname="Morozova"; SamAccountName="natalia.morozova"}
@{GivenName="Dmitry"; Surname="Kovalev"; SamAccountName="dmitry.kovalev"}
@{GivenName="Olga"; Surname="Smirnova"; SamAccountName="olga.smirnova"}
@{GivenName="Vladimir"; Surname="Fedorov"; SamAccountName="vladimir.fedorov"}
@{GivenName="Anna"; Surname="Mikhailova"; SamAccountName="anna.mikhailova"}
)
foreach ($User in $Users) {
New-ADUser -GivenName $User.GivenName `
-Surname $User.Surname `
-SamAccountName $User.SamAccountName `
-UserPrincipalName "$($User.SamAccountName)@corp.local" `
-Name "$($User.GivenName) $($User.Surname)" `
-Path $OU `
-AccountPassword $Password `
-Enabled $true `
-PassThru
}
Сделаем всем почтовые ящики в CORP
Сделать всем почтовые ящики
Get-ADUser -Filter * -SearchBase "OU=RU,DC=ctdrus,DC=loc" | ForEach-Object { Enable-Mailbox $_.SamAccountName }
Настроем трасты между CORP и CTDRUS
Создать сервер условной пересылки из ctdrus в corp и из corp в ctdrus в DNS


Открываем Domain and Trust


Жмем new trust

Жмем доверие леса


В домене corp сделали учетку trustdomain






Миграция Exchange
Включаем с обеих сторон MRS

Проверить на друх серверах
Test-MRSHealth
Проверить с сервера на который будем мигрировать доступность MRS сервера , подставить креды админа сервера exchange
Test-MigrationServerAvailability -ExchangeRemoteMove -Autodiscover -EmailAddress igor.sidorov@domain.ru -Credentials (Get-Credential)
Условия при которых учетная запись не будет создаватся, а мигрируется в нужную
У нас есть 2 домена , CTDRUS.LOC И CORP.LOC . В домене CORP.LOC уже созданы пользователи. При миграции идет задвоение пользователя . Ниже пункты при которых задваивание происходить не будет

- Есть домен CTDRUS из него мигрируем пользователя Maria Petrova, проверяем ее в CORP , если не нашлось приравниваем SAM account name
Get-ADUser -Filter {SamAccountName -eq "maria.petrova"}
2. Создаем почтовый контакт в домене куда будет проходить миграция
Enable-MailUser -Identity "maria.petrova" -ExternalEmailAddress "maria.petrova@domain.ru"
3. Переносим Proxy adress & Legacy DN
Делаем в CTDRUS.LOC
Get-ADUser -Identity "maria.petrova" -Properties proxyAddresses, legacyExchangeDN | Format-List proxyAddresses, legacyExchangeDN
Меняем в CORP.loc
Set-ADUser -Identity "maria.petrova" -Add @{proxyAddresses="SMTP:maria.petrova@domain.ru","smtp:maria.petrova@ctdrus.loc"}
Set-ADUser -Identity "maria.petrova" -Replace @{legacyExchangeDN="/o=CTDRUS/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ee7ec038b4494710877133a29614aed4-Maria Petrova"}
Подготовка миграционного пакета
cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"
ИЗ CTDRUS > CORP
$LocalCredentials = Get-Credential
ctdrus\administrator
Qwerty123
$RemoteCredentials = Get-Credential
corp\administrator
Qwerty123
.\Prepare-MoveRequest.ps1 -Identity maria.petrova -RemoteForestDomainController V19CTDMSC02100.ctdrus.loc -RemoteForestCredential $RemoteCredentials -LocalForestDomainController S22RUMSCDC1.corp.local -LocalForestCredential $LocalCredentials -targetmailuserOU "OU=RU,DC=corp,DC=local" -UseLocalObject

После переходим в ECP в миграции



Проверить состояние миграции
Посмотреть в миграцию в процентах
[PS] C:\Program Files\Microsoft\Exchange Server\V15\Scripts>Get-MoveRequest | Get-MoveRequestStatistics | ft DisplayName,Status,Queue,PercentComplete -AutoSize
DisplayName Status Queue PercentComplete
----------- ------ ----- ---------------
Maria Petrova Completed 100
Информативаная команда , показывает скорость и ошибки
Get-MoveRequestStatistics -Identity maria.petrova@domain.ru | fl
Status
SyncStage : IncrementalSync
BytesTransferred : 108 KB (110,573 bytes)
BytesTransferredPerMinute : 0 B (0 bytes)
TotalMailboxSize : 53.79 KB (55,081 bytes)
При SyncStage IncrementalSync , мы автоматически можем завершить миграцию командой

Message : Informational: The move request for mailbox 157a0da3-dd3d-46f8-9b19-6ff4983e2aa8 has reached synced state.
Next incremental sync is scheduled at 03/11/2025 13:23:38
Complete-MigrationBatch
Создаем коннекторы отправки
В моем случае есть 2 сервера exchange , V19MBX5 — CTDRUS.LOC , V22MBX1 — CORP.LOC , почта приходит и уходит с V19MBX5. Задача настроить почтовый обмен между лесами .
С двух сторон добавим

CTDRUS.LOC
New-SendConnector -Name "Cross-Forest" -Usage Internal -AddressSpaces domain.ru -SmartHosts v22mbx1.corp.local -SmartHostAuthMechanism BasicAuthRequireTLS -AuthenticationCredential $mycred -SourceTransportServers V19MBX5.CTDRUS.LOC -DNSRoutingEnabled $false
.Enable-CrossForestConnector.ps1 -Connector "Cross-Forest" -user "ANONYMOUS LOGON"
COPR.LOC
New-SendConnector -Name "Cross-Forest" -Usage Internal -AddressSpaces domain.ru -SmartHosts v19mbx5.ctdrus.loc -SmartHostAuthMechanism BasicAuthRequireTLS -AuthenticationCredential $mycred -SourceTransportServers V22MBX1 -DNSRoutingEnabled $false
cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"
.Enable-CrossForestConnector.ps1 -Connector "Cross-Forest" -user "ANONYMOUS LOGON"
CTDRUS
Так как нету сертификата отключим авторизацию на коннекторе в CTDRUS.LOC в сторону COPR.LOC

Область наш домен который мы будем пересылать на соседний сервер если почтового ящика не будет на этом exchange

На этом же сервере будет отправка в интернет

Коннетор получения почты с соседнего exchange


Принимать всю почту

Добавим анонимный релей
Get-ReceiveConnector "V22MBX1" | Add-ADPermission -User "NT AUTHORITY\Anonymous Logon" -Extende
dRights "Ms-Exch-SMTP-Accept-Any-Recipient"
Теперь когда почтовый сервер из corp будет пересылать письма на ctdrus , сервер будет принимать почту без авторизации
CORP
Тут все аналогично

А вот определение области всю почту слать на ctdrus.loc , чтобы пользователи этого exchange могли доставлять письма на другой.

https://petri.com/exchange-2010-cross-forest-migration-galsync
Autodiscover одного внешнего домена , на 2 леса
https://4sysops.com/archives/exchange-autodiscover-in-a-multi-forest-environment-part-1-active-directory
https://www.risual.com/2018/04/cross-forest-exchange-migrations-and-free-busy-with-shared-namespace/
https://learn.microsoft.com/en-us/powershell/module/exchange/export-autodiscoverconfig?view=exchange-ps
В этом примере указано, что Exchange развернут в нескольких лесах Active Directory при установке точки подключения службы автообнаружения к контроллеру домена dc.contoso.com в лесу Active Directory contoso.com.
CORP
$cred = Get-Credential
Export-AutoDiscoverConfig -DomainController S22RUMSCDC1.corp.local -TargetForestDomainController V19CTDMSC02100.ctdrus.loc -MultipleExchangeDeployments $true -TargetForestCredential $cred
В домене CTDRUS как видим создалась запись

CTDRUS
$cred = Get-Credential
Export-AutoDiscoverConfig -DomainController V19CTDMSC02100.ctdrus.loc -TargetForestDomainController S22RUMSCDC1.corp.local -MultipleExchangeDeployments $true -TargetForestCredential $cred

==
Для домена ctdrus.loc
(создаем доверие с corp.local
):
- Без карантина (создание доверия):
bashКопироватьnetdom trust ctdrus.loc /domain:corp.local /quarantine:no
- С включением SID-истории (создание доверия с историей SID):
bashКопироватьnetdom trust ctdrus.loc /domain:corp.local /enableSIDhistory:yes
Для домена corp.local
(создаем доверие с ctrus.loc
):
- Без карантина (создание доверия):
bashКопироватьnetdom trust corp.local /domain:ctdrus.loc /quarantine:no
- С включением SID-истории (создание доверия с историей SID):
bashКопироватьnetdom trust corp.local /domain:ctdrus.loc /enableSIDhistory:yes
Эти команды создадут двустороннее доверие между доменами ctrus.loc
и corp.local
. Убедитесь, что вы выполняете их с правами администратора на каждом из доменов и что домены находятся в доступной сети.