ExternalEmailAddress
Auf dieser Seite gehe ich auf ein Fehlverhalten von Exchange Online im Hybrid Mode mit Remote Domains ein. Der Fehler wurde durch den HCW vor Sep 2020 eingeführt und mit dem Update Sp2020 korrigiert. Lesen Sie dazu auch die Seiten TargetAddress, ForwardingSmtpAddress und Weiterleitungen
Es ist immer eine gute Idee, die Updates des HCW zu verfolgen und ggfls. den HCW erneut durchzuführen.
Regelfall
Bei einer Exchange Hybrid Konfiguration sorgt ADSync für den Abgleich der Identitäten und verwaltet die Objekte in Exchange Online auch hinsichtlich ihrer Mailadressen. Sie wissen sicher alle, dass aktuell (Okt 2020) viele Exchange -Einstellungen in der Cloud "ReadOnly" sind, solange der Verzeichnisabgleich eingerichtet ist. Das führt dazu dass es zu jedem lokalen Exchange Objekt auch ein Cloud-Objekte mit entsprechenden Feldern gibt. Über "Get-Recipient" habe ich die Werte auf beiden Seiten jeweils ausgelesen.
- Get-Recipient
https://docs.microsoft.com/de-de/powershell/module/exchange/get-recipient?view=exchange-ps
Achten Sie bei dem Lesen auf das Feld "ExternalEmailAddress"
On-Premises | Exchange Online |
---|---|
MailboxDieser Benutzer hat ein Postfach auf dem lokalen Exchange Server [PS] C:\>Get-Recipient On-Prem | fl Identity : msxfaq.de/Users/OnPrem Alias : On-Prem ArchiveGuid : 00000000-0000-0000-0000-000000000000 AuthenticationType : Database : Mailboxes ArchiveDatabase : DatabaseName : Databases\Mailboxes Department : ExternalDirectoryObjectId : EmailAddresses : {smtp:OnPrem@msxfaq.de, x500:/o=ExchangeLabs/ ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=xxx- OnPremFrank, smtp:OnPrem@msxfaq.net, smtp:OnPrem@msxfaq.de...} ExpansionServer : ExternalEmailAddress : DisplayName : On-Prem ObjectCategory : msxfaq.de/Configuration/Schema/Person OrganizationalUnit : msxfaq.de/Users PrimarySmtpAddress : OnPrem@msxfaq.de RecipientType : UserMailbox RecipientTypeDetails : UserMailbox SamAccountName : On-Prem ServerLegacyDN : /o=MSXFAQ/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/ cn=Servers/cn=SRVEX16 ServerName : SRVEX16 StorageGroupName : Databases UsageLocation : ExchangeGuid : 9a52c2f7-0d1f-497d-8078-xxxx ExchangeVersion : 0.20 (15.0.0.0) DistinguishedName : CN=Carius\, Frank Demo 4,CN=Users,DC=msxfaq,DC=de Guid : e7e6e3b1-b2c5-412d-8c1d-xxxx ObjectClass : {top, person, organizationalPerson, user} Id : msxfaq.de/Users/OnPrem |
MailUserIn Exchange Online erscheint das Konto als MailUser. PS C:\> Get-Recipient On-Prem |fl Identity : On-Prem Alias : frank.carius4 ArchiveGuid : 00000000-0000-0000-0000-000000000000 AuthenticationType : Managed Database : ArchiveDatabase : DatabaseName : ExternalDirectoryObjectId : cc26eeec-eaae-4226-9ba6-xxxx EmailAddresses : {SIP:OnPrem@msxfaq.de, SMTP:OnPrem@msxfaq.de,...} ExpansionServer : ExternalEmailAddress : SMTP:OnPrem@msxfaq.de DisplayName : On-Prem ObjectCategory : EURPR04A003.prod.outlook.com/Configuration/Schema/Person OrganizationalUnit : eurpr04a003.prod.outlook.com/Microsoft Exchange Hosted Organizations/msxfaq.onmicrosoft.com PrimarySmtpAddress : OnPrem@msxfaq.de RecipientType : MailUser RecipientTypeDetails : MailUser SamAccountName : fran55011 UsageLocation : Deutschland ExchangeGuid : 9a52c2f7-0d1f-497d-8078-xxxx ExchangeVersion : 1.1 (15.0.0.0) DistinguishedName : CN=OnPrem,OU=msxfaq.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=EURPR04A003, DC=prod,DC=outlook,DC=com ObjectClass : {top, person, organizationalPerson, user} ExchangeObjectId : 4f2db471-458b-41d8-bb7f-xxxx OrganizationId : EURPR04A003.prod.outlook.com/Microsoft Exchange Hosted Organizations/msxfaq.onmicrosoft.com - EURPR04A003.prod.outlook.com/ConfigurationUnits/ msxfaq.onmicrosoft.com/Configuration Id : On-Prem Guid : 4f2db471-458b-41d8-bb7f-xxxx OriginatingServer : VI1PR04A03DC001.EURPR04A003.prod.outlook.com IsValid : True ObjectState : Unchanged |
Remote MailboxDieser Benutzer hat ein Postfach in Exchange Online. Entsprechend ist es eine "Remote Mailbox" im lokalen Exchange Server. Das Konto hat z.B. keine MailboxGUID und keinen Homeserver aber andere Werte. [PS] C:\>Get-Recipient frank.carius@msxfaq.de | fl Identity : msxfaq.de/Users/EXOUser Alias : EXOUser ArchiveGuid : d990201b-ce0d-40f8-a5f8-xxx CountryOrRegion : Germany ArchiveDatabase : DatabaseName : ExternalDirectoryObjectId : ManagedFolderMailboxPolicy : EmailAddresses : {sip:EXOUser@msxfaq.de, x500:/o=ExchangeLabs/ ou=Exchange Administrative Group (FYDIBOHF23SPDLT) /cn=Recipients/cn=xxx-Carius, (FYDIBOHF23SPDLT)/cn=Recipients /cn=1xxx, SMTP:EXOUser@Msxfaq.de,...} ExternalEmailAddress : SMTP:EXOUser@msxfaq.mail.onmicrosoft.com DisplayName : EXOUser ObjectCategory : msxfaq.de/Configuration/Schema/Person OrganizationalUnit : msxfaq.de/Users PrimarySmtpAddress : EXOUser@Msxfaq.de RecipientType : MailUser RecipientTypeDetails : RemoteUserMailbox SamAccountName : EXOUser ServerLegacyDN : ServerName : ExchangeGuid : e6721880-50d5-41a6-960c-xxx DistinguishedName : CN=EXOUser,CN=Users,DC=msxfaq,DC=de ObjectClass : {top, person, organizationalPerson, user} OriginatingServer : SRVDC01.msxfaq.de |
MailboxIn Exchange Online erscheint das Konto natürlich als als Mailbox ohne ExternalEmailAddress PS C:\> Get-Recipient frank.carius@msxfaq.de | fl Identity : EXOUser Alias : EXOUser ArchiveGuid : d990201b-ce0d-40f8-a5f8-xxx AuthenticationType : Managed CountryOrRegion : Deutschland ExternalDirectoryObjectId : b39bb717-ea64-46cd-ab57-xxx EmailAddresses : {x500:/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/ cn=xxx-EXOUser,smtp:EXOUser@msxgaq.de...} ExternalEmailAddress : DisplayName : EXOUser ObjectCategory : EURPR04A003.prod.outlook.com/Configuration/Schema/Person OrganizationalUnit : eurpr04a003.prod.outlook.com/Microsoft Exchange Hosted Organizations/msxfaq.onmicrosoft.com PrimarySmtpAddress : EXOUser@Msxfaq.de RecipientType : UserMailbox RecipientTypeDetails : UserMailbox SamAccountName : $LT0O10-0EGE61GCSO9N ServerLegacyDN : /o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/ cn=VI1PR0402MB3646 ServerName : vi1pr0402mb3646 ExchangeGuid : e6721880-50d5-41a6-960c-xxx DistinguishedName : CN=EXOUser,OU=msxfaq.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=EURPR04A003, DC=prod,DC=outlook,DC=com ObjectClass : {top, person, organizationalPerson, user} OriginatingServer : VI1PR04A03DC001.EURPR04A003.prod.outlook.com |
Es gibt natürlich noch andere Objekte, z.B. Kontakte, Verteilerlisten etc., die hier aber nicht weiter betrachtet werden. Denken Sie daran, dass die "ProxyAddresses" übertragen werden, wobei in der Cloud einige Adressen fehlen. Wichtig ist aber die Erkenntnis über das Feld ExternalEmailAddress.
- OnPrem
Lokal ist das Feld leer und in der Cloud verweist der Inhalt auf die primäre SMTP-Adresse - EXOMailbox
Hier ist das Feld in der Cloud leer und On-Premises verweist die Adresse auf die "@<tenantname>.onmicrosoft.com"-Adresse
Den Rest machen dann die Exchange Server über die SMTP-Connectoren für das Mailrouting, das OrganizationRelationsship für Free/Busy-Abfragen und Autodiscover-Auflösung ab.
Fehlerfall
In dem Fehlerfall war es nun so, dass eine On-Premises Mailbox nicht erreichbar war, weil das Objekt in der Cloud nicht die primäre SMTP-Adresse im Feld "ExternalEmailAddress" hatte. Noch mal zur Sicherheit: Eine Abfrage mit "Get-Recipient" gegen die Exchange Online PowerShell lieferte ein:
Falsch : ExternalEmailAddress = user@<tenantname>.mail.onmicrosoft.com
Richtig wäre aber:
Richtig: ExternalEmailAddress = user@firmenname.tld
Spurensuche
Alle Analysen mit ADSync und anderen Tools ergaben, dass das lokale AD-Objekt korrekt als "Mailbox" konfiguriert ist und ADSync die Daten auch korrekt und fehlerfrei in die Cloud repliziert. Trotzdem kommt es bei Exchange Online nicht korrekt an. Wenn in der Cloud beim "Mailuser" als Zieladresse die "@tenantname.mail.onmicrosoft.com" steht, dann ist es quasi ein Zirkelbezug. Exchange Online weis sicher nicht, wie er diese Mail nun nach "On-Premises" zu stellen soll. Der HCW hat zwar einen "Outbound Connector" angelegt, der aber nur die Firmendomain als Routing-Ziel hat:
PS C:\> Get-OutboundConnector "Outbound to <guid>" | fl Enabled : True UseMXRecord : False ConnectorType : On-Premises ConnectorSource : HybridWizard RecipientDomains : {msxfaq.de} SmartHosts : {hybrid.msxfaq.de} TlsDomain : *.msxfaq.de TlsSettings : DomainValidation IsTransportRuleScoped : False RouteAllMessagesViaOn-Premises : False CloudServicesMailEnabled : True AllAcceptedDomains : True TestMode : False LinkForModifiedConnector : 00000000-0000-0000-0000-000000000000 Identity : Outbound to <guid>
Das Feld "RecipientDomains" beschreibt hier nur die Domains, die beim HCW während der Einrichtung eingetragen wurden. Sicher hätte man hier nun auch noch <tenant>.mail.onmicrosoft.com eintragen können, was aber dann eventuell zu Loops geführt hätte.
Irgendwann ist dann aber etwas anderes aufgefallen. Bei den RemoteDomains war die die Exchange Online Routing Domain eintragen:
# Exchange Online PowerShell PS C:\> Get-RemoteDomain | ft name,domainname,TargetDeliveryDomain Name DomainName TargetDeliveryDomain ---- ---------- -------------------- Default * False msxfaq.de msxfaq.de False Hybrid - Domain msxfaq.onmicrosoft.com Domain msxfaq.onmicrosoft.com False Hybrid - Domain msxfaq.mail.onmicrosoft.com Domain msxfaq.mail.onmicrosoft.com True
Zum einen irritierte mich, dass die beiden "onmicrosoft.com"-Domains hier auftauchen. Bei anderen Kunden und Tenants sind die Domains in Exchange Online nicht vorhanden. Die "mail.onmicrosoft.com"-Domain hatte zusätzlich noch das Flag "TargetDeliveryDomain=$true gesetzt. Über dieses Feld komme ich dann weiter auf:
The TargetDeliveryDomain parameter specifies whether the remote domain is used
in cross-forest deployments to generate target email addresses for new mail
users that represent users in the other organization (for example, all mailboxes
hosted on Exchange Online are represented as mail users in your On-Premises
organization). Valid values are:
$true: The remote domain is used for the target email address of mail users that
represent the users in the other forest.
$false: The remote domain isn't used for the target email address of mail users
that represent the users in the other forest. This is the default value.
Quelle: Set-RemoteDomain
https://docs.microsoft.com/en-us/powershell/module/exchange/set-remotedomain?view=exchange-ps
OCT als Ursache?
Es könnte darauf hinauslaufen, dass der "Organization Configuration Transfer" hier einen Fehler macht. Auf dem lokalen Exchange Server ist die Microsoft Domain nämlich eingetragen.
# Exchange 2016 PowerShell [PS] C:\>Get-RemoteDomain | ft domainname,targ* -AutoSize DomainName TargetDeliveryDomain ---------- -------------------- * False msxfaq.mail.onmicrosoft.com True msxfaq.onmicrosoft.com False
Ich habe den Verdacht, dass bestimmte Versionen von OCT oder gewisse Umstände dazu führen, dass OCT die lokal gepflegten "Remote Domains" auch in die Cloud überträgt. Wer danach sucht, finden auch Hinweise wie.
Jeroen Dronkers, Microsoft 01-20-2020 07:36 AM
"OCT also includes remote domains although it syncs them with incorrect settings"
Quelle Released: Hybrid Organization Configuration Transfer V2
https://techcommunity.microsoft.com/t5/exchange-team-blog/released-hybrid-organization-configuration-transfer-v2/ba-p/608762
Allerdings habe ich noch keine Quellen gefunden, warum sich dann Exchange Online hier so seltsam verhält und die ExternalEmailAddresse des Cloud-Objektes für ein lokales Postfach so falsch setzt.
Anscheinend nutzt Exchange Online die mit dem Kennzeichen "TargetDeliveryDomain=$true" versehene Domain zur Festlegung des Feldes ExternalEmailAddress
Damit geht natürlich ganz viel schief. Das betrifft nicht nur das Mailrouting, d.h. die On-Premises Mailbox ist aus der Cloud nicht erreichbar. Auch Free/Busy-Zeiten, Teams Kalenderzugriff und Autodiscover sind für den Client gestört.
- What is Exchange Remote Domain?
https://blog.ahasayen.com/exchange-online-and-remote-domain/ - Remote Domains attributes
https://docs.microsoft.com/en-us/exchange/org-config-transfer-attributes/remote-domains
Das Attribut gibt es wohl seit Exchange 2010 - Set-RemoteDomain
https://docs.microsoft.com/en-us/powershell/module/exchange/set-remotedomain?view=exchange-ps - Error “You haven’t configured a target delivery domain. Please choose the
appropriate remote domain as the target delivery domain.”
https://anishjohnes.wordpress.com/2015/05/20/error-you-havent-configured-a-target-delivery-domain-please-choose-the-appropriate-remote-domain-as-the-target-delivery-domain/
Lösung - HCW Sep 2020
Das ist ein interessantes und hier natürlich fehlerhaftes Verhalten. Ursache war der Hybrid Configuration Wizard. In der Version vom Sep 2020 wurde das fehlerhafte Verhalten korrigiert.
HCW incorrectly sets the externalEmailAddress parameter
during OCT (Object Configuration Transfer). OCT is used to break mailflow.
Quelle: September 2020 update to Exchange Hybrid Configuration Wizard
https://support.microsoft.com/en-us/help/4583653/september-2020-update-to-exchange-hybrid-configuration-wizard
Wann der Fehler genau eingeführt wurde, konnte ich nicht ermitteln. Sie können ja mal ihre "HCW-Logs" nach dem Befehl "Add-RemoteDomain" durchsuchen. Die Domains bei der fehlerhaften Umgebung wurden am 20. Aug 2020 angelegt.
Ein HCW-Lauf mit der aktuelle Version legt die Einträge nicht mehr an und entfernt auch die früher irrtümlich angelegten Einträge. Dann dauert es nur noch etwas, bis die Exchange Eigenschaften der MailUser in der Cloud endlich die richtige TargetAddress haben.
Weitere Links
- TargetAddress
- ForwardingSmtpAddress
- Weiterleitungen
- Hybrid Organization Configuration Transfer (OCT)
- Hybrid Connector Server
- Hybrid Mail Routing
- HCW im Detail
- Office 365: Mail Connector
- Hybrid Centralized Mail Transport
- September 2020 update to Exchange Hybrid Configuration Wizard
https://support.microsoft.com/en-us/help/4583653/september-2020-update-to-exchange-hybrid-configuration-wizard - Error “You haven’t configured a target delivery domain. Please choose the
appropriate remote domain as the target delivery domain.”
https://anishjohnes.wordpress.com/2015/05/20/error-you-havent-configured-a-target-delivery-domain-please-choose-the-appropriate-remote-domain-as-the-target-delivery-domain/