Tento článek se (ne)zabývá podrobně cross-forest migrací poštovních schránek uživatelů. Nechci se zde nijak rozepisovat, slouží spíše jako můj checklist, neboť mozek zapomíná. Pokud se chce někdo problematice věnovat více, nechť mu poslouží odkazy, viz níže, anebo google.
Forma zápisu:
Stará doména: OLD_DOMAIN
Nová doména: NEW_DOMAIN
Názvy serverů jsou zřejmé (AD = Domain Controller, EX = Exchange)
OLD_DOMAIN\AD – existující uživatel s iniciály „Jmeno Prijmeni“, popř. uživatelské jméno jako UserName
OLD_DOMAIN\EX – existující mailbox s adresou Jmeno.Prijmeni@domain.tld
@mail_domain.tld – poštovní doména
Nyní po ADMT migraci uživatele z OLD_DOMAIN do NEW_DOMAIN je třeba odstranit specifické Exchange atributy, které definují, že objekt měl poštovní schránku ve starém Exchange.
-
- msExchHomeServerName
(obsahuje FQDN původního Exchange serveru, kde byla poštovní schránka umístěna; v novém forestu tedy není validní) - msExchMailboxGuid
(GUID schránky (Mailbox GUID). Je to unikátní identifikátor, který Exchange používá k přiřazení dat k uživateli. Musí být odstraněn, protože v novém forestu bude jiný Mailbox GUID) - msExchMailboxSecurityDescriptor
(Binární hodnota obsahující informace o oprávněních (DACL/SACL) mailboxu. Obsahuje informace specifické pro OLD_DOMAIN, které nejsou přenositelné do NEW_DOMAIN) - msExchPoliciesIncluded
(Seznam aplikovaných e-mailových politik (např. Email Address Policies) – obvykle ve formátu DN. Tyto politiky se vážou na objekty v původní organizaci a způsobují chyby při aktivaci nové schránky.) - msExchRecipientDisplayType
(Číselná hodnota, která určuje typ objektu pro zobrazování v adresáři. Např. 1073741824 = mailbox user. V novém prostředí to může způsobit nesoulad typu (např. MailUser vs. UserMailbox).) - msExchRecipientTypeDetails
(Rozšířený typ objektu – např. 1 = UserMailbox, 128 = MailUser, 2 = SharedMailbox, atd. Pokud zůstane nastaveno např. 1 (UserMailbox), nebude možné uživatele správně konvertovat na MailUser.) - msExchTextMessagingState
(Obsahuje nastavení pro SMS služby (např. notifikace přes telefon).) - msExchUMDtmfMap
(Mapování jména uživatele pro Unified Messaging. Nekompatibilní, pokud nový forest nemá UM roli nebo jinou konfiguraci.) - msExchUserAccountControl
(Vnitřní Exchange atribut (např. pro ovládání nastavení přesměrování, archivu apod.).) - msExchUserCulture
(Nastavení jazykové kultury schránky (např. cs-CZ, en-US). Není kritické, ale může způsobit nekonzistenci při aktivaci nové schránky.) - msExchVersion
(Označení verze Exchange, která byla použita pro vytvoření schránky (např. 44220983382016 pro Exchange 2016). Pokud nesouhlasí s verzí v novém forestu, může způsobit selhání mailbox enable procesu.) - msExchWhenMailboxCreated
(Datum a čas, kdy byla schránka vytvořena.)
- msExchHomeServerName
Všechny tyto atributy vznikly v původním Exchange prostředí (OLD_DOMAIN) a nesou informace o:
- umístění schránky,
- typu objektu,
- historii a konfiguraci,
- nebo Exchange politikách.
Smazání Exchange atributů provedeme v nové doméně na doménovém řadiči v Active Directory Shellu
PS C:\Set-AdUser Username -clear msExchMailboxGuid,msexchhomeservername,msexchmailboxsecuritydescriptor,msexchpoliciesincluded,msexchrecipientdisplaytype,msexchrecipienttypedetails,msexchumdtmfmap,msexchuseraccountcontrol,msexchversion, msExchTextMessagingState,msExchUserCulture
Na novém poštovním serveru odebereme e-mailové atributy mailboxu uživatele
[PS] C:\Skripty>Disable-MailUser -Identity Username
A opět založíme MailUser schránku uživatele s e-mailovými atributy
[PS] C:\Skripty>Enable-MailUser -Identity Username -ExternalEmailAddress Jmeno.Prijmeni@domain.tld
Na cílovém poštovním serveru (tzn. v NEWDOMAIN) spustíme Exchange Shell a přihlásíme pro budoucí Move-Request
[PS] C:\Skripty>$RemoteCredentials = Get-Credential -credential OLD_DOMAIN\some_administrator
[PS] C:\Skripty>$LocalCredentials = Get-Credential -credential NEW_DOMAIN\some_administrator
a provedeme Prepare-MoveRequest
[PS] C:\Skripty>.\Prepare-MoveRequest.ps1 -identity UserName -RemoteForestDomainController ad.OLD_DOMAIN.oldtld -RemoteForestCredential $RemoteCredentials -LocalForestDomainController ad.NEW_DOMAIN.newtld -LocalForestCredential $LocalCredentials -TargetMailuserOU "OU=XX,OU=SomeXXUsers,DC=NEW_DOMAIN,DC=newld" -UseLocalObject -verbose
New-MoveRequest
[PS] C:\Skripty>New-MoveRequest -Identity UserName -RemoteCredential $RemoteCredentials -TargetDeliveryDomain '@mail_domain.tld' -RemoteGlobalCatalog ad1.OLD_DOMAIN.oldtld -Remote -RemoteHostName 'ex.OLD_DOMAIN.oldtld' -BadItemLimit 100 -AcceptLargeDataLoss -TargetDatabase 'MailboxDB0'
Kontrola stavu
[PS] C:\Skripty>Get-MoveRequest
Toť vše.
PS: Nastavení lokalizace pro anglicky pojmenované složky (kdyby problém).
[PS] C:\Skripty>Set-MailboxRegionalConfiguration UserName -Language 1029 -LocalizeDefaultFolderName
Jak jsem psal na začátku, tento článek slouží jako checklist, abych věděl co jsem dělal, pakliže to zapomenu. Neobsahuje žádné informace o nastavení Mailbox Replication Service Proxy, o nastavení firewallu, používaných portů atd.
Doporučené odkazy:
https://www.petenetlive.com/KB/Article/0001356
https://www.azure365pro.com/cross-forest-migration-guide-exchange-2010-to-exchange-2010/
https://www.moh10ly.website/preparing-migrating-users-and-handling-contacts-between-two-forests-in-microsoft-exchange-cross-forest-migration/