EXO und MailboxGUID
Die ExchangeGUID ist der Link zwischen dem AD/EntrID-Objekt zur Datenbanktabelle und wird vom Exchange Server verwaltet. Wen Sie Postfächer mit "Remote-Moverequest" verschieben, ist das Feld der primäre Schlüssel, wie Quelle und Ziel zugeordnet werden.
msExchMailboxGuid im AD
Bei Exchange On-Premises ist die MailboxGUID der Klebstoff, um das AD-Konto des Benutzers mit dem Postfach in der Postfachdatenbank zu verbinden. Siehe dazu auch msExchMailboxGUID bzw. MailboxGUID. Sie können den Inhalt einfach mit Get-ADUser oder Get-Mailbox auslesen.
PS C:\> Get-ADUser user1 -Properties msexchmailboxguid DistinguishedName : CN=user1,OU=Abteilung,DC=msxfaq,DC=de Enabled : True GivenName : User1 msexchmailboxguid : {150, 78, 78, 3...} Name : User1 ObjectClass : user ObjectGUID : 9cd53e78-9de4-4a9a-abc0-6062b56ac545 SamAccountName : user1 SID : S-1-5-21-11949449-30417519-71842111-9813 Surname : Carius UserPrincipalName : user1@msxfaq.de
Da die msexchmailboxguid ein Array mit 16 Bytes ist, ist die Ausgabe natürlich abgeschnitten. Mit der Exchange PowerShell finden Sie neben der MailboxGUID auch noch die ArchivGUID.
[PS] C:\>get-mailbox user1 | fl *guid* ExchangeGuid : 034e4e96-4332-5abc-4b39-8e4776468178 MailboxContainerGuid : AggregatedMailboxGuids : {} ArchiveGuid : 00000000-0000-0000-0000-000000000000 DisabledArchiveGuid : 00000000-0000-0000-0000-000000000000 Guid : 9cd5223a-9bb4-432a-abc0-6062ab45c545
Weitere Details habe ich auf anderen Seite schon beschrieben:
- msExchMailboxGUID bzw. MailboxGUID
- ADSync T2T-Migration
- Fix-MailboxGuid
-
Wipe-Mailbox
Wer die GUID im lokalen AD ändert, startet mit einer neuen Mailbox - Understanding Mailbox GUIDs
http://technet.microsoft.com/en-us/library/aa996437(EXCHG.65).aspx
Unter "Weitere Links" gibt es Verweise auf andere Seite im Internet, die verschiedene Probleme.
MailboxGuid und Exchange Online
Auch in Exchange Online nutzt Microsoft den gleichen Code und so hat auch ein Postfach in Exchange Online eine MailboxGUID und einen passenden Benutzereintrag. Die Information können Sie recht einfach über die Exchange Online PowerShell auslesen.
PS C:\> get-mailbox fctest* | ft name,alias,database,exchangeGUID,archiveguid Name Alias Database ExchangeGuid ArchiveGuid ---- ----- -------- ------------ ----------- fctest1 fctest1 NAMPR20DG007-db027 6ed75be1-04c3-459c-9c1f-d2ab8d93220e 00000000-0000-0000-0000-000000000000 fctest2 fctest2 NAMPR20DG219-db112 dd7dcb39-b12f-4673-a7ee-01f3f13a1935 00000000-0000-0000-0000-000000000000 fctest3 fctest3 NAMPR20DG047-db096 4b6a3d89-c1b3-43e6-a5ed-5c7ee6450ce9 00000000-0000-0000-0000-000000000000 fctest4 fctest4 NAMPR20DG129-db114 00c1bd6c-9278-4986-9371-544fb8c36f85 00000000-0000-0000-0000-000000000000 fctest5 fctest5 NAMPR20DG140-db096 175cba6b-2c76-4722-b358-57ab14b034ec 00000000-0000-0000-0000-000000000000 fctest6 fctest6 NAMPR20DG050-db096 265cbd56-b238-473f-8902-b4c9859ad3b1 00000000-0000-0000-0000-000000000000
Exchange Online unterscheidet sich also gar nicht so stark von Exchange OnPremises.
MailboxGuid und ADSync
Sobald aber Exchange im Hybrid-Mode genutzt wird, kommt ADSync als Abgleich eine wichtige Rolle zu. Alle Informationen über Postfächer in der lokalen Exchange Installation müssen durch ADSync auch zu Exchange Online übertragen werden. ADSync Version 1.4.32.0 (Nov 2019) hatte folgende "Synchronization Rules" für das Feld msExchMailboxGUID:
- Inbound
Auf dem lokalen AD wird das Feld in das Metaverse importiert, wenn es sich um einen "User" oder "InetOrgPerson" handelt.
Sie sehen aber auch, das es kein "Inbound" von Exchange Online gibt. Das Feld ist unidirektional - Outbound
Aus dem Metaverse wird das Feld dafür zu Exchange Online geschrieben aber nicht zurück ins lokale Active Directory
Diese Einstellung bestätigt die Aussage, dass eine MailboxGUID nicht von Exchange Online zurück in das lokale Active Directory repliziert wird.
Diese Verhalten kann "unerwartet" sein, wenn sie z.B. Exchange Online nutzen wollen und die Benutzer durch ADSync schon repliziert werden aber eine frühere unsauber entfernte Exchange Installation nicht die Felder bereinigt hat.
Hinweis: Wenn Sie Exchange lokal früher installiert und dann "geregelt" entfernt haben, kann es dennoch passieren, dass Reste im lokalen AD beim Benutzer übrig geblieben sind.
Wenn einer der Reste eine MailboxGUID bei einem AD-Konto ist, dann kann dieser Benutzer kein Exchange Postfach erhalten.
Lokale Alt-Installation mit msExchMailboxGUID verhindert Exchange Online Mailbox
Exchange Online nutzt nämlich die Existenz einer MailboxGUID als Kriterium, dass der Benutzer ein lokales Postfach hat und daher in Exchange Online keine weitere Mailbox angelegt wird. Nur wenn auch die anderen Exchange Felder wie z.B. msExchRecipientTypeDetails und msExchRemoteRecipientType gesetzt sind.
- ADSync Bidirektional
- ADSync T2T-Migration
- Azure AD Connect sync: Attributes
synchronized to Azure Active Directory :
Exchange hybrid writeback
https://docs.microsoft.com/de-de/azure/active-directory/connect/active-directory-aadconnectsync-attributes-synchronized#exchange-hybrid-writeback - Remove msExchMailboxGuid Attribute from AD Sync
https://guides.appriver.com/m/89074/l/1107376-remove-msexchmailboxguid-attribute-from-ad-sync
Ich würde hier aber nicht ADSync Regeln anpassen sondern das Attribute im lokalen AD richtig setzen und das Provisioning anpassen.
MailboxGUID und Remote Mailbox
Es gibt zwei Wege zur Neuanlage eines Postfach in einer Exchange Hybrid Umgebung:
- Anlage als "UserMailbox" und Migration
in die Cloud
Dieser Weg ist natürlich nur möglich, wenn Sie lokal noch eine Exchange Mailboxdatenbank haben und er dauert länger, da auch die Migration etwas Zeit dauert. Dafür ist der Prozess ausgereift und auch viele 3rd Party Tools können die notwendigen Einstellungen korrekt umsetzen. - Direktanlage als "RemoteMailbox"
Sie können auch direkt ein Postfach in der Cloud anlegen, indem Sie im lokalen Exchange direkt eine "RemoteMailbox" anlegen.
Wenn sie den Weg über "Remote-Mailbox" nehmen, dann könnte aber eine lokale Ausgabe aller Remote-Mailboxen und deren GUID ein gemischtes Bild zeigen.
[PS] C:\>Get-RemoteMailbox | ft exchangeguid,ArchiveGUID ExchangeGuid ArchiveGuid ------------ ----------- 20fdff52-a2e1-46e5-8a4b-9356cb954b96 f8646e03-1cd9-4d43-bb7d-3b1af0bd2516 2a3a17fa-1663-42ea-9b1d-00a5e70f3d28 7d259658-d915-4362-88b6-6a7ad0083c85 f3a929af-8bb2-4d6f-9016-6892fddc4a40 00000000-0000-0000-0000-000000000000 bed2778b-8e12-42c9-ab96-3c048415817e 45ba5bd3-aac2-4c4b-ae79-be1e21fb310c dfd9a676-e3ce-40a5-ac9a-8ce4139bdb06 5666ed3c-b991-42f4-b7aa-6df20551b534 dfa5234a-892f-4263-88aa-b11e9a722de6 66abb8f0-45db-4a20-a427-ae4854d1c3f9 d23b3ab0-637f-44d1-8509-e84886a61d53 d0823f07-b849-4988-9439-78b76adc5fad 00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000000 f1d3bc15-000d-44cc-87f0-3bdebe292439 9fc50a4c-e380-4422-8814-4847e3e6233e 247208d0-66b1-4c7f-9f07-8c2e2142c2c8 1715f52b-a5d8-4f0e-b116-2b6bbba8505c dfd9a676-e3ce-40a5-ac9a-8ce4139bdb06 5666ed3c-b991-42f4-b7aa-6df20551b534
Sie sehen hier einige Test-Postfächer mit einer Exchange GUID und einer ArchiveGUID aber sie sehen auch Postfächer die eine ArchiveGUID mit dem Wert "00000000-0000-0000-0000-000000000000" haben und es gibt sogar Postfächer deren ExchangeGUID nur "00000000-0000-0000-0000-000000000000" enthält. Hier sind also alle drei Optionen vorhanden.
- Exchange Remote Mailbox in der Cloud mit
Archiv, die migriert wurden.
In dem Fall hatte die Mailbox OnPremises eine MailboxGUID und wurde mit ADSync zu EXO repliziert. Der Move-Request hat das Objekt dann in die Cloud verschoben und auf beiden Weiten ist die Nummer gleich. - Exchange Remote Mailbox ohne Archiv oder ein Archiv, von dem Exchange On-Premises nichts weiß
- Exchange Remote Mailbox, deren GUIDs die lokale Installation nicht kennt
Das Problem ist tatsächlich real, da das Commandlet "New-RemoteMailbox" bei der Konfiguration der Exchange Eigenschaften keine GUID vergibt. Das ist "by Design".
The ExchangeGuid is not written back to Exchange on-premises. Suppose you have created a remote mailbox in Exchange on-premises, this will create the remote mailbox object in Exchange on-premises with an ExchangeGuid without value, which will allow Exchange online to assign one that is not in use.
Das führt dann aber z.B. dazu, dass dieses Postfach nicht mehr aus Exchange Online zurück auf die On-Premises-Umgebung migriert werden kann. Dazu gibt es sogar eigens einen KB-Artikel
- "MigrationPermanentException: Cannot find a recipient that has mailbox GUID "
error message when you try to move a mailbox in an Exchange hybrid deployment
https://support.microsoft.com/en-us/help/2956029/migrationpermanentexception-cannot-find-a-recipient-that-has-mailbox-g
Der Artikel beschreibt aber auch, warum dies der Fall ist und wie Sie dies lösen können. Hier müssen wir dann zwei Fälle unterscheiden:
Fall | Richtige Vorgehensweise |
---|---|
Neue RemoteMailbox anlegen |
Es reicht hier nicht einfach ein "Enable-RemoteMailbox" oder "New-RemoteMailbox" zu machen. Sie müssen auch eine MailboxGUID mitgeben. Enabled-RemoteMailbox <MailboxName> Set-RemoteMailbox <MailboxName> -ExchangeGUID <GUID> |
Unvollständige RemoteMailbox |
Wie auch in meiner Umgebung gibt es sicher viele Firmen, in denen es lokale AD-Benutzer mit Postfach in der Cloud gibt, die aber keine ExchangeGUID lokal haben. Hier sollten Sie dann dafür sorgen, dass Sie die GUID aus der Cloud auslesen und lokal nachpflegen. Sie können dazu einfach die Postfächer in der Cloud mit "Get-Mailbox" in der Exchange Online PowerShell auslesen # Exchange Online PowerShell Get-Mailbox * | select alias,exchangeGUID,archiveguid | export-csv guidliste.csv Mit dieser Liste starten Sie dann eine lokale Exchange Powershell und setzen die Werte. foreach ($entry in (import-csv guidliste.csv) { Write-Host "Processing $($entry.alias) GUID $($entry.ExchangeGUID) Set-RemoteMailbox ` -identity $entry.alias ` -ExchangeGUID $entry.exchangeGUID ` -ArchiveGUID $entry.archiveguid } Bitte prüfen Sie die Funktion erst mit wenigen Objekten. |
- Set-RemoteMailbox
https://docs.microsoft.com/en-us/powershell/module/exchange/federation-and-hybrid/set-remotemailbox?view=exchange-ps
Allerdings frage ich schon schon, warum Microsoft für Exchange 2010/2013/2016/2019 nicht schon lange ein Update für die "*-RemoteMaiilbox"-Commandlets ausgeliefert hat.
MailboxGUIDund Exchange Plan
Jede Exchange Online Mailbox braucht eine entsprechende Lizenz. Es gibt mehrere Konstellationen, bei denen z.B. eine MailboxGUID durch ADSync gefüllt ist oder geleert wird. Exchange Online legt z.B. kein Postfach für einen Benutzer an, der schon eine MailboxGUID hat. Folgende Verhalten habe ich beobachtet:
Benutzer | MailboxGuid in der Cloud | Exchange Lizenz | Ergebnis |
---|---|---|---|
Kein Postfach |
Leer |
Keine |
Benutzer hat kein Postfach in der Cloud |
Kein Postfach |
Leer |
zugewiesen |
Benutzer bekommt ein Exchange Online Postfach, welches aber On-Premises nicht sichtbar ist -> lokales Nachprovisionieren mit Enable-RemoteMailbox löst das. |
OnPrem Postfach |
nicht gefüllt durch ADSync |
keine |
Benutzer hat ein lokales Postfach und ist in der Cloud als Empfänger sichtbar |
OnPrem Postfach |
nicht gefüllt durch ADSync |
zugewiesen |
Benutzer bekommt ein Postfach in der Cloud. Klassisches Doppelpostfach mit Exchange Online-Problem |
OnPrem Postfach |
gefüllt durch ADSync |
Keine |
Benutzer hat ein lokales Postfach und ist in der Cloud als Empfänger sichtbar |
OnPrem Postfach |
gefüllt durch ADSync |
zugewiesen |
Benutzer hat ein lokales Postfach und ist in der Cloud als Empfänger sichtbar. Die MailboxGUID sagt Exchange Online, dass es ein Postfach gibt und es gibt kein Doppelpostfach mit Exchange Online |
Online Postfach |
Wird durch Cloud gefüllt |
zugewiesen |
Das ist ein reguläres Postfach in Exchange Online. Die MailboxGUID wird bei der Migration in die Cloud mit übernommen. |
Hinweis:
Ein Exchange Online Postfach wird erstellt, wenn das
Benutzerobjekt keine MailboxGUID hat und eine Lizenz
zugewiesen bekommt. Die Änderung der Lizenz triggert in der
Cloud den "Enable-Mailbox". Wenn das Objekt schon eine
MailboxGUID durch ADSync und Lizenz hat und Sie die
MailboxGuid über ADSync entfernen bekommt es kein Postfach.
- EXO und MailboxGUID
- ADSync mit Exchange Online
- DirSync mit Exchange
- Exchange Online Provisioning
- ADSync T2T-Migration
- ADSync mit Ex Online Only
- Doppelpostfach mit Exchange Online
Servername und MailboxGUID
Eine Auswertung von Get-Recipient zeigt auch schön die Zusammenhänge:
PS C:\> get-recipient | ft name,servername,exchangeguid Name ServerName ExchangeGuid ---- ---------- ------------ ADMergeGroup1 00000000-0000-0000-0000-000000000000 ADUser1 UCLabor ce43d767-2f1a-4af4-a514-feb67d777d59 ADUserA4_dom2016.msxfaq.de#EXT# 00000000-0000-0000-0000-000000000000 EXODL1 00000000-0000-0000-0000-000000000000 FrankCarius fr2p281mb0354 32f5c989-ee0d-4c58-b806-637a91e1713c fctest1 3b252e9a-3339-430b-aaf2-59d32bcbf2b6 PF 116f186e-e878-429a-a006-5d56c46e1935 RaumADLokaldeaktiv 0f5d17bc-91ac-466c-8543-edb6a7a76c3e RaumADremoteaktiv bexp281mb0087 9f93ed45-f857-4687-9198-5a96f0acae3a RaumNeuLokalaktiv 76d3f68c-c26a-4008-b9df-ad90dba60f87 RaumNeuRemoteAktiv fr0p281mb0737 98765c96-901a-4b65-a05a-87900b6f3c25 RaumNeuRemoteDeaktiv bexp281mb0086 64d56837-d30e-491a-950e-a0a87831973a Room1 b6ab5e66-8fd6-4308-9e4e-537961ffb63a TeamPub1_c88896f3-bdb9-4461-980a-5a895a954b9d fr3p281mb0985 c81ec6a2-77be-4d94-94dd-893ebffe7c75 TeamWebseite1_3a971998-9456-41ef-b2ec-4d457e6ff40d fr3p281mb0890 7ec0ef06-cf75-4c46-9677-24e7c7b1329d user1 fryp281mb0861 2898b164-05dd-40af-a4a2-3e3214695fe3
Gruppen haben keine ExchangeGuid und auch keinen Server. Nur Postfächer in Exchange Online haben einen Servername und eine ExchangeGuid.
Deprovisioning
In Verbindung mit ADSync wird die ExchangeGuid in der Cloud immer durch das lokale AD vorgegeben. ADSync kennt aber keine Rückreplikation, so das beim "RemoteMoveRequest" die GUID im lokalen AD gesetzt und in der Cloud entsprechend geschrieben wird. Ein Versuch die ExchangeGuid in der Cloud in der Situation zu entfernen, schlägt fehlt:
PS C:\> Disable-Mailbox RaumADremoteaktiv -PermanentlyDisable Confirm Are you sure you want to perform this action? Disabling mailbox Identity:"RaumADremoteaktiv" will remove the Exchange properties from the Active Directory user object and mark the mailbox in the database for removal. If the mailbox has an archive or remote archive, the archive will also be marked for removal. In the case of remote archives, this action is permanent. You can't reconnect this user to the remote archive again. [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): y Disable-Mailbox: Error on proxy command 'Disable-Mailbox -PermanentlyDisable:$True -Identity:'RaumADremoteaktiv' -Confirm:$False' to server FR2P281MB0935.DEUP281.PROD.OUTLOOK.COM: Server version 15.20.5332.0000, Proxy method PSWS: Cmdlet error with following error message: Microsoft.Exchange.Configuration.DualWrite.LocStrings.UnableToWriteToAadException: An Azure Active Directory call was made to keep object in sync between Azure Active Directory and Exchange Online. However, it failed. Detailed error message: Unable to update the specified properties for On-Premises mastered Directory Sync objects or objects currently undergoing migration. DualWrite (Graph) RequestId: 06a3b10a-9ef9-4df4-9d1f-a93e311d28ed
Eine "Fehlbedienung" ist hier also nicht möglich. Auch der Versuch, bei dem Cloud-Objekt einer On-Premises-Mailbox die ebenfalls vorhandene ExchangeGUID zu löschen, hat auch nicht funktioniert. er "findet" die Mailbox gar nicht erst.
PS C:\> Disable-Mailbox cvmtest -PermanentlyDisable Disable-Mailbox: The operation couldn't be performed because object 'cvmtest' couldn't be found on 'AM6P281A04DC003.DEUP281A004.PROD.OUTLOOK.COM'.
Das "Entfernen" der ExchangeGuid mit dem "-PermanentlyDisable"-Parameter funktioniert wohl nur mit Benutzern, die ein Exchange Online Postfach ohne ADSync haben.
Wenn Sie daher einem per ADSync in der Cloud verwalteten Benutzer ein Postfach geben wollen, er aber On-Premises auch ein Postfach hast, dann sollten Sie die Replikation der ExchangeGuid in ADSync abschalten.
Beachten Sie dazu die Seite zu ADSync mit Tenant2Tenant Migrationen in Verbindung mit Exchange ADSync T2T-Migration
ExchangeGuid setzen
Dann habe ich mir noch mal angeschaut, ob ich eine ExchangeGuid vieleicht setzen kann. Ich habe dazu einen "CloudOnly"-User genommen, der keine Lizenz und keine ExchangeGuid hat und einen Enable-Mailbox versucht:
PS C:\> enable-Mailbox clouduser1 WARNING: After you create a new mailbox, you must go to the Office 365 Admin Center and assign the mailbox a license, or it will be disabled after the grace period. Enable-Mailbox: The following error occurred during validation in agent 'Archive ParameterSet Enforcement Agent': 'This operation only works with Archive or PermanentlyDisable parameters.' PS C:\> enable-Mailbox clouduser1 -Archive Enable-Mailbox: Recipient 'clouduser1' does n't have a mailbox. The recipient must have a mailbox to enable archive.
Das ist nun auch suspekt, denn den Parameter "-PermanentlyDelete" gibt es mit Enable-Mailbox nicht und mit "-Archive" beschwert er sich über die fehlende Mailbox. Da hilft auch der Hinweis nicht weiter, man möge doch rechtzeitig eine Lizenz zuweisen.
Da scheint mit der neuen Exchange PowerShell oder dem Backend etwas nicht zu passen. Aber ich kann auch einfach eine Lizenz zuweisen und Exchange Online startet den Provisioningprozess und damit eine ExchangeGuid zu bekommen. Einen anderen Weg habe ich bislang nicht gefunden, um die ExchangeGuid zu setzen oder zu löschen.
Das ist auch ok, denn die Cloud-Version von "Enable-Mailbox" hat viel weniger Optionen. Ich kann beim Anlegen z.B. gar nicht die primäre SMTP-Adresse mitgeben.
Weitere Links
- msExchMailboxGUID bzw. MailboxGUID
- HCW - Hybrid Configuration Wizard
- HCW im Detail
- ADSync Bidirektional
- ADSync mit Exchange Online
- Doppelpostfach mit Exchange Online
- msExchRecipientTypeDetails
- msExchRemoteRecipientType
- ADSync T2T-Migration
- Azure AD Connect sync: Attributes
synchronized to Azure Active Directory :
Exchange hybrid writeback
https://docs.microsoft.com/de-de/azure/active-directory/connect/active-directory-aadconnectsync-attributes-synchronized#exchange-hybrid-writeback - Understanding Mailbox GUIDs
http://technet.microsoft.com/en-us/library/aa996437(EXCHG.65).aspx - Remove msExchMailboxGuid Attribute from
AD Sync
https://guides.appriver.com/m/89074/l/1107376-remove-msexchmailboxguid-attribute-from-ad-sync - Enable-RemoteMailbox –ExchangeGuid is
mandatory on UserMailbox
https://martinsblog.dk/enable-remotemailbox-exchangeguid-is-mandatory-on-usermailbox/ - Fixing the "ExchangeGuid is mandatory on
UserMailbox" issue
http://www.mistercloudtech.com/2017/02/06/fixing-the-exchangeguid-is-mandatory-on-usermailbox-issue/ - Error when moving a mailbox to Exchange
online
https://www.msb365.blog/?p=564 - Set ExchangeGuid for user remote mailbox
https://www.adaxes.com/script-repository/update-exchangeguid-for-remote-mailbox-s551.htm