Hybrid Message Approval

In fast jeder Exchange Umgebung gibt es besonders "schützenswerte" Empfänger, die nicht direkt erreichbar sein wollen. Eine Option ist die "Empfangsbeschränkung", damit ein Postfach oder eine Verteiler nur bestimmten Absendern erreicht werden kann. Manchmal ist das aber zu starr und ein "Vier-Augen-Prinzip" wäre eine bessere Option. Das war schon mit Exchange 2010 als Exchange Transport Moderation möglich und auch auf einem Empfänger können Sie solche Moderationsfunktionen aktivieren. Interessant wird es nun aber, wenn Absender und Empfänger in einer Exchange Hybrid Umgebung auf unterschiedlichen Umgebungen liegen. Die Details hierzu beschreibe ich auf dieser Seite.

System Mailboxen

Jede Mail, die durch eine Moderation laufen muss, wird vom ersten Exchange Transport, der diese Situation erkennt, an ein besonderes Postfach geroutet. Dieses Postfach gibt es einmal On-Premises und einmal pro Tenant in der Cloud.

Topologie Systempostfach
On-Premises

"SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}"

Online "QuarantineOrgShard{505B6405-958B-45A0-BAAE-76A0D7ACAE83}@msxfaq.onmicrosoft.com"
QuarantineOrgShard{<GUID>}@<tenant>.onmicrosoft.com"

Da erst erste Transport-Server diese Entscheidung fällt, ist die Topologie des Absenders der Mail maßgeblich.

Moderation Internals

Auf der Seite Exchange Transport Moderation habe ich die grundlegende Funktionsweise schon erklärt, die mit Exchange On-Premises vorhanden ist. Mit Exchange Online oder Exchange Hybrid ändert sich nicht so viel, nur dass wir nun zwei Welten  mit unterschiedlichen "Systempostfächern" haben und die Moderationsmails über den Hybrid Connector laufen müssen. Bedenken Sie, dass immer die Systemmailbox zum Tragen kommt, auf der Topologie der Absender ist.

Die ersten beiden Spalten zeigen, dass zu einem OnPremises Absender immer die OnPremises Systemmailbox gehört und dies auch für Exchange Online gilt.

Absender SystemMailbox Moderator Empfänger Beschreibung

OnPremises

OnPremises

OnPremises

OnPremises

Alles bleibt On-Premises und kein Mailflow über Hybrid

OnPremises

OnPremises

OnPremises

Online

Die Moderation erfolgt OnPremises und nur nach Freigabe wird die Mail übertragen

OnPremises

OnPremises

Online

OnPremises

Die Mail wird zwar On-Premises angehalten aber die Anfrage an den Moderator muss über Hybrid und auch dessen Antwort muss wieder zurück. Kritisch sind hier unvollständige Adressbücher und falsche TNEF-Einstellungen. Die freigegebene Mail bleibt lokal

OnPremises

OnPremises

Online

Online

Die Mail wird zwar On-Premises angehalten aber die Anfrage an den Moderator muss über Hybrid und auch dessen Antwort muss wieder zurück. Kritisch sind hier unvollständige Adressbücher und falsche TNEF-Einstellungen. Die freigegebene Mail wird dann auch noch mal über Hybrid übertragen

Online

Online

OnPremises

OnPremises

Die Mail wird Online geparkt und die Anfrage und Freigabe gehen über Hybrid, ehe die Mail selbst über Hybrid geht

Online

Online

OnPremises

Online

Die Mail wird Online geparkt und die Anfrage und Freigabe gehen über Hybrid, ehe die Mail selbst Online zugestellt wird.

Online

Online

Online

OnPremises

Die Mail wird Online geparkt und die Anfrage und Freigabe bleiben in Online, ehe die Mail selbst über Hybrid geht

Online

Online

Online

Online

Alles bleibt Online und kein Mailflow über Hybrid

OnPremises

Online

-

-

Nicht möglich

Online

OnPremises

-

-

Nicht möglich

Knifflig sind immer die Fälle, an denen eine Mail zwischen den beiden Plattformen übertragen werden muss. Vielleicht klingt das für sie erst einmal nicht nach einer Besonderheit, das es ja "nur" eine Mail ist. Aber Exchange ist hier schon etwas pingeliger, da er z.B. eine Fälschung einer Freigabe oder eine Störung dieses Ablaufs sicher verhindern muss. Zudem muss Outlook eine passend formatierte Mail bekommen, damit der Moderator auch Ablehnen oder Zustimmen kann.

Remote Domains und TNEF

Damit die Freigabemails und die Antwort korrekt verarbeitet werden, müssen beide Systeme miteinander TNEF-Mails austauschen. Normalerweise macht diese Setup der Hybrid Configuration Wizard korrekt, so dass Sie folgende Einstellungen überprüfen können. In ihrer On-Premises Umgebung sollten die beiden Office 365 Domains wie folgt eingetragen sein

Get-RemoteDomain | ft domainname,TNEF*,Trust*,AllowedOOF*,IsIn*

DomainName                  TNEFEnabled TrustedMailOutboundEnabled TrustedMailInboundEnabled AllowedOOFType IsInterna
                                                                                                                    l
----------                  ----------- -------------------------- ------------------------- -------------- ---------
msxfaq.mail.onmicrosoft.com True                              True                      True InternalLegacy      True
msxfaq.onmicrosoft.com      True                              True                      True InternalLegacy      True

Damit weiß ihre lokale Umgebung, dass Mails an diese Domains per TNEF übertragen werden. Dies ist erforderlich wenn der Absender in ExchangeOnline eine Mail an eine moderierte Gruppe sendet und die Freigabemail von Exchange Online als "QuarantineOrgShard{<GUID>}@<tenant>.onmicrosoft.com" gesendet wird. Diese Einstellung ist zudem für den fall erforderlich, dass der On-Premises-Service eine Freigabe an einen Exchange Online User gesendet hat und dieser drauf antwortet. Auch diese Steuerungsmail muss als TNEF zum OnPremies-System gesendet werden.

Umgekehrt muss aber auch in Exchange Online ihre lokale "Default Domain" für TNEF freigegeben werden. Das macht der Hybrid Configuration Wizard nur dann, wenn ihre "Default Domain" in der lokalen Installation auch in Exchange Online und dem Office 365 Tenant hinterlegt ist.

PS C:\> Get-RemoteDomain | ft domainname,TNEF*,Trust*,AllowedOOF*,IsIn*

DomainName   TNEFEnabled TrustedMailOutboundEnabled TrustedMailInboundEnabled AllowedOOFType IsInternal
----------   ----------- -------------------------- ------------------------- -------------- ----------
*                  False                      False                     False External            False
msxfaq.de           True                       True                      True InternalLegacy       True

Wichtig sind aber auch noch die beiden folgenden Felder:

PS C:\>  Get-RemoteDomain |ft domainname,trust*
DomainName   TrustedMailOutboundEnabled TrustedMailInboundEnabled
----------   -------------------------- -------------------------
*                                 False                     False
msxfaq.de                          True                      True

Sie steuern, dass mein Exchange ausgehend einen Header setzt und in der Gegenrichtung einen gesetzten Header einer eingehenden Mail umsetzt. Nur dann sind die Benutzer und Postfächer "authentifiziert", was z-B für Transportregeln, Exchange Transport Moderation etc. wichtig wird.

Mailflow

Die gesamte "Moderation" kann natürlich nur funktionieren, wenn die Exchange Server die Absenderadresse auch als Vertrauenswürdig ansehen. Innerhalb der gleichen Umgebung ist das noch einfach aber sobald Exchange OnPremises und Exchange Online im "Hybrid Mode" kommunizieren, müssen einige Dinge zusammenpassen, dass der empfangende Exchange Server die über das Internet übertragene Mail auch als "intern" ansieht.

Der einfachste Test ist der Versand einer Mail von einem Absender auf der einen Seite zum Empfänger auf der anderen Seite. Wenn Hybrid Mail Routing richtig eingerichtet ist, dann steht in Outlook im Absender nur der Displayname. Wenn hingegen auch eine SMTP-Adresse in "<>"-Klammern angezeigt ist, dann ist die Mail aus Sicht des empfangenden Exchange Server "anonym" eingeliefert worden. So kann Moderation nicht funktionieren.

Kontrollieren Sie in der eingehenden Mail die folgenden Felder.

X-MS-Exchange-Organization-AuthAs: Internal
X-MS-Exchange-Organization-AuthMechanism: 04
X-MS-Exchange-Organization-AuthSource: AM6PR08MB3749.eurprd08.prod.outlook.com
X-MS-Exchange-Organization-SCL: -1

Dabei ist der Eintrag "X-MS-Exchange-Organization-AuthAs: Internal" erforderlich. Ansonsten kontrollieren Sie bitte ihre Send-Connectoren und Receive-Connectoren.

# Falsch
Get-ReceiveConnector  | fl name,TlsDomainCapabilities

Name                  : Inbound from Office 365
TlsDomainCapabilities : {mail.protection.outlook.com:AcceptOorgProtocol}
# Richtig
Get-ReceiveConnector  | fl name,TlsDomainCapabilities

Name                  : Default Frontend EX2016A
TlsDomainCapabilities : {mail.protection.outlook.com:AcceptCloudServicesMail}

Wenn Sie einen Exchange Edge Server einsetzen, dann achten Sie genau auf die Anweisungen des HCW. Sie müssen manuell auf dem Edge Server die Konfiguration entsprechend anpassen

Ansonsten wird die eingehende Verbindung von Exchange Online als nicht vertrauenswürdig genug angesehen, um die Absender von Exchange Online als "authentifiziert" einzustufen.

Set-ReceiveConnector `
   -identity "Edge\Default internal receive connector Edge" `
   -TlsDomainCapabilities mail.protection.outlook.com:AcceptOorgProtocol `
   -Fqdn "mail.contoso.com"

In die Gegenrichtung muss sich ihr Exchange OnPremises Server mit einem öffentlichen Zertifikat melden und in Exchange Online muss es einen "Inbound Organization"-Connector geben, der auf diesen Namen achtet.

Der beste Weg hier eine korrekte Konfiguration zu erreichen, ist die Einrichtung mit dem HCW - Hybrid Configuration Wizard.

Messagetracking

Wenn wir schon beim "Mailflow" sind, können Sie auch im Messagetracking nach Fehlern suchen. Hier eine Mail, die von eine User an die Systemmailbox gegangen und mangels Authentifizierung abgelehnt wurde. In dem Beispiel war das Postfach des Moderator auf dem lokalen Exchange Server. Der Absender der Mail an den per Moderation beschränkten Verteile war in Exchange Online. Exchange Online hat daher die Mail an den Verteiler in der Systemmailbox der Cloud "geparkt" und eine Moderationsanfrage an den lokalen Moderator gesendet. Dessen Antwort ging dann zurück zum Systempostfach in der Cloud, welches die Mail aber nicht angenommen hat.

Hier kann es dann nur daran liegen, dass entweder der lokale Exchange Server beim Versand nicht das passende Zertifikat über den richtigen Weg zu Exchange Online genommen hat oder die eingehende Verbindung nicht zum Inbound Organization Connector in der Cloud gepasst hat.

RunspaceId              : ce3ac89c-c114-44e4-b73d-eaa8e6414cf6
Timestamp               : 6/23/2020 4:13:36 PM
ClientIp                :
ClientHostname          : EX2016A
ServerIp                :
ServerHostname          :
SourceContext           :
ConnectorId             :
Source                  : ROUTING
EventId                 : FAIL
InternalMessageId       : 135553462830511
MessageId               : <AM0PR08MB374788046CED9BB2079AD1E2A4940@AM0PR08MB3747.eurprd08.prod.outlook.com>
NetworkMessageId        : 88122c8d-451b-4cf9-4e22-08d8177f9ee0
Recipients              : {SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@msxfaq.net}
RecipientStatus         : {[{LED=550 5.7.134 RESOLVER.RST.SenderNotAuthenticatedForMailbox; authentication required;
                          Delivery restriction check failed because the sender was not authenticated when sending to
                          this mailbox};{MSG=};{FQDN=};{IP=};{LRT=}]}
TotalBytes              : 10376
RecipientCount          : 1
RelatedRecipientAddress :
Reference               : {<ffb059d8-146a-430b-9846-03f19dc71265@EX2016.msxfaq.net>}
MessageSubject          : Genehmigen: Aktuelle Entwicklung im Kreis Paderborn
Sender                  : user1@msxfaq.com
ReturnPath              : user1@msxfaq.com
Directionality          : Incoming
TenantId                :
OriginalClientIp        :
MessageInfo             :
MessageLatency          :
MessageLatencyType      : None
EventData               : {[ToEntity, Unknown], [FromEntity, Internet], [DeliveryPriority, Normal], [Oorg, msxfaq.com],
                          [AccountForest, msxfaq.net]}
TransportTrafficType    : Email
SchemaVersion           : 15.01.1913.007

SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}

Die aktive Komponente bei dem Freigabe/Approval-Prozess ist die Systemmailbox mit dem Namen "SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}". Die GUID ist bei allen Exchange Installationen identisch. Alle zur Freigabe vorzulegenden Nachrichten landen hier und diese Mailbox sendet die Anfrage an die "Approver". Die Antwort des Approvers geht dann wieder an dieses Postfach. Die Standardeinstellung ist:

get-mailbox `
   -identity "SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}" `
   -Arbitration | fl name,accept*,reject*,Requiresender*

Name                                   : SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}
AcceptMessagesOnlyFrom                 : {}
AcceptMessagesOnlyFromDLMembers        : {}
AcceptMessagesOnlyFromSendersOrMembers : {}
RejectMessagesFrom                     : {}
RejectMessagesFromDLMembers            : {}
RejectMessagesFromSendersOrMembers     : {}
RequireSenderAuthenticationEnabled     : True

Jeder Absender muss also authentifiziert sein. Da die Systemmailbox einfach ein Postfach mit der Mailadresse "SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@msxfaq.de" ist, habe ich eine Mail dort hin gesendet. Sie kam mit einem NDR und der folgenden Fehlermeldung zurück:

SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@msxfaq.de
Remote Server returned '550 5.7.106 APPROVAL.InvalidContent; Invalid content. [Stage: OnCreatedEvent][Agent: Approval Processing Agent]'
SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@msxfaq.de
Remote Server returned '550 5.7.106 APPROVAL.InvalidContent; Invalid content. [Stage: OnCreatedEvent][Agent: Approval Processing Agent]'

Aber auch das ist eigentlich ein gutes Zeichen, dass die Mailbox die Mail überhaupt angenommen hat. Ihr Absender war damit "Authentifiziert". Wenn Sie folgende Meldung bekommen, dann kann Moderation nicht funktionieren.

SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@msxfaq.de
Microsoft Exchange Approval Assistant (MSExchApproval1f05a927-0000-0000-0000-00000000@domain.pl)
Your message couldn't be delivered because delivery to this address is restricted to authenticated senders. If the problem continues, please contact your email admin.
Ihre Nachricht kann nicht zugestellt werden, weil die Zustellung an diese Adresse auf authentifizierte Absender beschränkt ist. 
Wenn das Problem weiterhin besteht, wenden Sie sich an Ihren E-Mail-Administrator.

ADSync und Bypassgruppen

Wenn Sie den Versand an einen Verteiler durch einen Moderator beschränken, dann können Sie bestimmte Absender auch von der Beschränkung ausnehmen. Dies ist ein gängiges Verfahren, um z.B. sehr große Verteiler wie "Alle Mitarbeiter" oder "Alle Mitarbeiter am Standort X" gegen irrtümlichen oder absichtlichen Missbrauch zu schützen. Aber wie immer gibt es auch eine Ausnahme von der Ausnahme, indem man ausgewählte Absender wieder von der Moderation ausschließt. Das geht OnPremises sogar per Browser im ECP.

Die Änderungen landen dann in den entsprechenden Feldern "msExchBypassModerationLink" und im AD

In Exchange Online gibt es aber nur die PowerShell. In einer Hybrid-Umgebung mit ADSync sind sie es aber schon immer gewohnt, dass Sie Änderungen im lokalen Exchange durchführen müssen und ADSync die Änderungen dann auch zu Exchange Online repliziert. Das funktioniert auch für Postfächer aber nicht für Gruppen und ist in einem Exchange Blog-Beitrag auch thematisiert.

Sync issue when adding group in the moderation bypass list
When adding a DG/SG to the moderation bypass list on on-premises, the change does not get synchronized to Office 365.
Technically, the attribute MsExchByPassModerationFromDLMemberLink is not synchronized to AAD by default, and is not consumed from AAD by Exchange Online, as per documentation. Therefore, if you add a group in the moderation bypass list for synced DG from on-premises, changes are not synchronized to Office 365 however adding a user works as expected.
Solution: Add the required group under Bypass moderation settings on moderated recipient on-premises.
Then, use the command below in Exchange Online PowerShell to update the moderation bypass setting:
Quelle: https://techcommunity.microsoft.com/t5/exchange-team-blog/demystifying-moderation/ba-p/2566197

Die Dokumentation verweist auf die Liste der Felder, die ADSync repliziert

Hier ist das Feld "MsExchByPassModerationFromDLMemberLink" tatsächlich nicht aufgeführt.

Ich kann ihnen leider nicht sagen, warum Microsoft diese Feld von der Replikation ausgeschlossen hat. Natürlich ist es kein "normales" Feld sondern ein Linked Attribute aber ADSync bzw. der darunterliegende MIM sollte auch damit kein Problem bei der Auflösung haben.

Ich habe daher eine lokale Gruppe für Moderation aktiviert und geschaut, was ADSync (Version 2.3.2) darauf gemacht hat. Beim Import hat ADSync ein paar Änderungen erkannt.

Die Änderungen beim Export ins AzureAD aber auch in die Cloud repliziert.

Das ist aber ein Postfach. Ich habe dann einfach die Gruppe fcgroup1 und den Benutzer fctest1 als "BypassModerationFromSendersOrMembers" eingetragen:

Set-DistributionGroup `
   -Identity fcgroup1 `
   -BypassModerationFromSendersOrMembers fcgroup1,fctest1

im Active Directory wurde der Wert aber in "msExchBypassModerationFromDLMembersLink" addiert und der Benutzer wurde in msExchBypassModerationLink" belassen.

Die Änderungen werden beim nächsten Import auch auf das Objekt im Metaverse abgebildet.

Allerdings gibt es keinen Export ins AzureAD oder nach Exchange Online und im ADSync Rule Editor gibt es das Feld auch gar nicht im Export-Connector

Sie können daher auch nicht selbst die fehlende Zuordnung addieren.

Aber es ist nicht abzusehen, dass Microsoft dieses Defizit einmal löst und bis dahin müssen Sie als Administrator dafür sorgen, dass der Inhalt von "MsExchByPassModerationFromDLMemberLink" manuell auch in Exchange Online passend gesetzt wird.

Die Lösung besteht daher darin, dass sie selbst diese fehlenden Informationen direkt in der Cloud anpassen.

Set-DistributionGroup `
   -Identity <dgname> `
   -BypassModerationFromSendersOrMembers <groupname>

Ich finde es interessant, dass dieses Feld in Exchange Online sogar änderbar ist, obwohl die moderierte Gruppe durch ADSync verwaltet wird.

Aktuell habe ich noch kein Skript gebaut, welches OnPremises alle Gruppen sucht, in denen Gruppen in "BypassModerationFromSendersOrMembers" erscheinen und in Exchange Online diese Einstellungen nachziehen.

Ich bin mich gar nicht mal sicher, ob dieser Fall so häufig ist und Verteiler nicht mehr und mehr direkt als CloudOnly-Verteiler in Exchange Online verwaltet werden, weil Sie dort dann auch Gäste u.a. als Mitglieder haben können. Dann wäre es eher interessant die Gruppen ins lokale AD als MailContacts zurückzuschreiben.

Weitere Links