CatchAll mit Exchange Online
Exchange Online nimmt in der Standardeinstellung nur Mails für gültige Empfänger an. Eine klassische "CatchAll"-Funktion gibt es nicht und ist aus meiner Ansicht auch keine gute Idee. Aber was machen Sie, wenn ihre lokale OnPremises-Umgebung gehackt wurde und sie mal schnell mit Exchange Online ein Notsystem online nehmen wollen? Dann haben Sie sicher die Liste der Mitarbeiter mit ihrer primären Mailadresse aber diese Liste ist nicht vollständig. Also wäre ein "CatchAll"-Postfach interessant, um ansonsten abgelehnte Mails in einem Postfach zu sammeln und später zu verteilen und die Konfiguration anzupassen. Bei Exchange OnPremises gibt es auch entsprechende Möglichkeiten, wie ich auf CatchUnknown und Catch unknown 2007/2010 beschrieben habe.
Funktionsprinzip
Microsoft hat eigentlich kein CatchAll in Exchange Online vorgesehen, sondern erwartet, dass Sie ihre SMTP-Domains im Tenant eintragen, womit sie zugleich "Accepted Domains" werden. Jeder Empfänger muss ebenfalls in Exchange Online definiert sein, so dass der Spamfilter "Exchange Online Protection" alle Mails an ungültige Empfänger direkt ablehnen kann. Genau das wollen wir aber nicht und der Trick ist wie folgt:
Wir kombinieren Transportregeln, eine Gruppe, ein allgemeines Postfach und die Einstellung von "Accepted Domains". Die folgende Beschreibung erklärt, wie eine eingehende Mail von Exchange am Ende in ein Sammelpostfach abgelegt wird. Die Konfigurationsschritte sollten Sie aber in umgekehrter Richtung vornehmen.
- Accepted Domain
Damit Exchange eine Mail an unbekannte Empfänger überhaupt annimmt, stellen wir die SMTP-Domain von "Authoritativ" auf "Internal Relay". Für Exchange bedeutet dies, dass er alle Mails annimmt und entweder direkt an lokale Empfänger zustellt oder eben über einen zu konfigurierenden Outbound/Send-Connector weiterreicht. Den Connector wird es aber nicht geben - TransportRegel
Da die Mail nun schon mal von Exchange angenommen wurde, kann Sie über Transportregeln umgeschrieben werden. Wir werden also alle Mails an das Sammelpostfach umleiten. Das darf natürlich nicht für alle Mails erfolgen sondern nur für Adressen, für die es keine Empfänger gibt. Wir legen in der Regel als eine Ausnahme fest, in der wir eine dynamische Gruppe nutzen - Dynamische Gruppe für reale Empfänger
Damit die Gruppe immer halbwegs aktuell ist, nutzen wir eine dynamische Verteilergruppe, die einfach alle Postfächer enthält. Sie können diese Gruppen natürlich auch von Hand pflegen, um bestimmte Postfächer vom Empfang abzuschneiden. Das kann durchaus eine Exit-Lösung unterstützen - Sammelpostfach
Zuletzt brauchen wir natürlich noch ein Postfach, in welchem all diese Mails landen und jemand, der z.B. über Stellvertreterberechtigungen dort auch immer mal wieder nachschaut.
Wenn Sie diese vier Schritte in umgekehrter Richtung durchlaufen, dann haben Sie erfolgreich ein Sammelpostfach eingerichtet. Denken Sie aber daran, dass dort vermutlich viel Werbung und Spam ankommt und die Anzahl der Mails sehr schnell sehr hoch werden kann. Denken Sie dabei auch an die Exchange Online Servie Descriptions und die damit verbundenen Limits, z.B. dass ein Postfach um maximal 1 GB/Tag wachsen kann und maximal 3600 Mails/Stunde empfangen kann.
- Exchange Online Message Rate Grenzen
- Exchange Online Limits
https://docs.microsoft.com/de-de/office365/servicedescriptions/exchange-online-service-description/exchange-online-limits - Exchange Online Service Description
https://docs.microsoft.com/de-de/office365/servicedescriptions/exchange-online-service-description/exchange-online-service-description
Konfiguration
Die Einrichtung erfolgt am besten in umgekehrter Reihenfolge, d.h.
- Mailbox/SharedMailbox für die Sammelmails anlegen
- Dynamische Verteilergruppe mit allen Postfächern und ggfls. Verteilern anlegen
- Transportregel zur Umleitung der Mails an das Sammelpostfach mit dem Verteiler als Ausnahme anlegen
- SMTPDomain- auf "Accepted Domain" umstellen
Das können Sie natürlich alles per Browser im Exchange Online Admin-Center konfigurieren aber genauso gut geht es per Exchange Online PowerShell
Tätigkeit | Erledigt |
---|---|
Sammelpostfach anlegenIch nutze in meinem Beispiel eine Remote Shared Mailbox, da die meisten Firmen vermutlich ein lokales Active Directory mit Verzeichnisabgleich angebunden haben. Sie könnten natürlich auch das Postfach nutzen, welches von ihrem Helpdesk-System oder CRM abgerufen wird, so dass die Mails schnell weiter verarbeitet werden. # Exchange OnPremises PowerShell New-RemoteMailbox ` -Name Catchall ` -Shared ` -UserPrincipalName catchall@uclabor.de Ein Kennwort ist für einen Shared Mailbox nicht erforderlich. Es dauert natürlich etwas, bis diese Konfiguration durch den Verzeichnisabgleich dann auch in Exchange Online angekommen ist. Danach können Sie in Exchange Online dann auch Stellvertreter-Berechtigungen eintragen, damit jemand die Mails im Sammelpostfach lesen kann. Wenn Sie direkt in der Cloud arbeiten, dann können Sie dort eine Mailbox direkt anlegen: # Exchange Online PowerShell New-Mailbox ` -name Catchall ` -Shared Denken Sie daran, dass eine reguläre Mailbox ohne Lizenz nur 30 Tage "Grace Period" hat. Eine SharedMailbox ist davon nicht betroffen. |
|
Verteiler für Ausschluss anlegenDann brauchen wir einen Mailverteiler, den wir später in der Transportregel als Ausschluss anlegen. Dies muss eine CloudOnly-Gruppe sein, denn mit Bordmitteln können Sie keine lokale AD-Gruppe dynamisch mit Mitgliedern verwalten lassen. Die Abfragebasierte Verteiler - Querybased distribution Groups werden durch den Verzeichnisdienst nicht repliziert und eine eigene Lösung wie z.B. Querybased Security Groups macht die Aufgabenstellung unnötig komplex. Daher nutzen wir eine CloudOnly-Gruppe # Exchange Online PowerShell New-DynamicDistributionGroup ` -Name "DDL-CatchAllExclusion" ` -IncludedRecipients AllRecipients Set-DynamicDistributionGroup ` -Identity "DDL-CatchAllExclusion" ` -HiddenFromAddressListsEnabled:$true Prüfen Sie danach, ob die Mitglieder schon korrekt ermittelt wurden: # Exchange Online PowerShell Get-DynamicDistributionGroupMember ` -Identity DDL-CatchallExclusion Es kann laut Microsoft bis zu zwei Stunden dauern, bis Änderungen an den Mitgliedschaften übernommen wurden. Das ist der klassische Fall eines Provisioning mit einem Scheduler, welcher zyklisch auf Änderungen prüft und diese dann anwenden.
|
|
TransportregelNun legen wir eine Transport-Regel an, damit alle Mails in das Sammelpostfach umgeleitet werden, außer die Empfänger sind in der bereits angelegten dynamischen Verteilergruppe. # Exchange Online PowerShell New-TransportRule ` -Name "CatchAllRerouting" ` -FromScope NotInOrganization ` -RedirectMessageTo "CatchAll" ` -ExceptIfSentToMemberOf "DDL-CatchAllExclusion" Damit werden nun alle Mails an das Postfach "CatchAll" umgeleitet, für die es keine internen Empfänger gibt.
|
|
SMTP-DomainDer letzte Schritt ist die Umschaltung der Domain auf "Internal Relay" Ich habe das zum Test mit einer der Microsoft Domains gemacht, bei denen der MX-Record sowieso zu Exchange Online verweist. # Exchange Online PowerShell Set-AcceptedDomain ` -Identity "msxfaqlab.onmicrosoft.com" ` -DomainType InternalRelay Das müssen Sie dann natürlich mit ihrer gewünschten Domain machen und lassen Sie sich nicht von der Warnung irritieren.
|
|
TestenUm die Funktion zu prüfen, habe ich eine Mail von extern an eine nicht existente Mailadresse der Domain gesendet und im Postfach als auch im Messagtracking nachgeschaut:
Die Mail generiert allerdings zwei Einträge, was aber auch verständlich ist, denn die Mail ist angekommen und war auf dem Weg durch den Transport. Die Transport-Regel schreibt die Mail aber nun um und damit ist es ein neuer Vorgang. |
Damit ist die Einrichtung abgeschlossen. In dem Beispiel gehen nun alle Mails an das Sammelpostfach, die keine Empfänger überprüfen, d.h. alle Domains, die den Status "Internal Relay" haben. Wenn Sie mehrere CatchAll-Postfächer für unterschiedliche Domains betreiben wollen, dann müssen Sie die Transportregel umdefinieren, z.B. indem Sie auch die Zieldomain beim Vergleich mit einbeziehen.
-
Directory Based Edge Blocking (DBEB)
Mit der richtigen Einstellung lehnt Exchange Online auch ungültige Empfänger direkt ab.
Mail im Postfach
Interessant ist nun natürlich, wie die Mail in diesem Sammelpostfach ankommt und ob wir als Leser noch Rückschlüsse auf die originale Empfangsadresse schließen können.
Per OWA konnte ich die Mail anzeigen und Sie sehen, dass sowohl der Absender als auch der Empfänger nicht verändert wurden. Das sind natürlich gute Voraussetzungen für eine Weiterverarbeitung
Received: from FR6P281MB4108.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:113::14) by FR4P281MB4075.DEUP281.PROD.OUTLOOK.COM with HTTPS; Tue, 10 Sep 2024 18:40:34 +0000 Received: from FR5P281CA0006.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f2::16) by FR6P281MB4108.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:113::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7962.17; Tue, 10 Sep 2024 18:40:31 +0000 Received: from FR2PEPF000004EF.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f2:cafe::1a) by FR5P281CA0006.outlook.office365.com (2603:10a6:d10:f2::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7939.25 via Frontend Transport; Tue, 10 Sep 2024 18:40:31 +0000 Authentication-Results: spf=pass (sender IP is 212.227.126.131) smtp.mailfrom=carius.de; dkim=pass (signature was verified) header.d=carius.de;dmarc=bestguesspass action=none header.from=carius.de;compauth=pass reason=109 Received-SPF: Pass (protection.outlook.com: domain of carius.de designates 212.227.126.131 as permitted sender) receiver=protection.outlook.com; client-ip=212.227.126.131; helo=mout.kundenserver.de; pr=C Received: from mout.kundenserver.de (212.227.126.131) by FR2PEPF000004EF.mail.protection.outlook.com (10.167.240.36) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7918.13 via Frontend Transport; Tue, 10 Sep 2024 18:40:31 +0000 Received: from FCT480S ([94.31.82.213]) by mrelayeu.kundenserver.de (mreue009 [213.165.67.97]) with ESMTPSA (Nemesis) id 1M5wTr-1svVVF28fT-009oQ2 for <ungueltig@msxfaqlab.onmicrosoft.com>; Tue, 10 Sep 2024 20:40:30 +0200 From: "Frank Carius" <remove.frank@carius.de> To: <ungueltig@msxfaqlab.onmicrosoft.com> Subject: Test Catchall 1 Date: Tue, 10 Sep 2024 20:40:29 +0200 Message-ID: <028601db03b0$e98c3910$bca4ab30$@carius.de> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Content-Language: de Return-Path: remove.frank@carius.de
Entsprechend sind auch im Header die Felder "To:" und "From:" erhalten geblieben und die Umleitung in das "Catchall"-Postfach ist im Header gar nicht zu sehen.
Rückbau
Wenn Sie die Funktion "CatchAll" nicht mehr benötigen, dann stellen Sie zuerst einfach die Domain auf "Authoritativ" zurück.
# Exchange Online PowerShell Set-AcceptedDomain ` -Identity "msxfaqlab.onmicrosoft.com" ` -DomainType Authoritative
Damit werden dann von extern schon wieder alle Mails an ungültige Empfänger direkt abgelehnt. Die Transportregel, der Verteiler und die Mailbox löschen Sie dann danach entweder einfach über das Exchange Admin Portal oder per PowerShell:
# Exchange Online PowerShell Remove-TransportRule ` -Identity "CatchAllRerouting" Remove-DynamicDistributionGroup ` -Identity DDL-CatchallExclusion # Bei Hybrid mit lokaler Exchange PowerShell Remove-RemoteMailbox ` -Identity "Catchall" # Bei CloudONly mit Exchange Online PowerShell Remove-Mailbox ` -Identity "Catchall"
Ein paar Minuten später sollten wieder alle Mails an unbekannte Empfänger direkt auf SMTP-Level abgelehnt werden.
Sammelpostfach für POP3-Abruf?
CatchAll-Postfächer gibt es nicht nur, um Mails an unbekannte Empfänger einzusammeln. Früher wurden generell alle Mails an ganze Domains durch Provider in solche Sammelpostfächer abgelegt, damit Firmen diese dann per "POP3-Downloader" abrufen und selbst weiterverteilen konnten. Dieses Verfahren ist heute nicht mehr gebräuchlich, da Firmen entweder selbst statische IP-Adressen mit MX-Zustellung nutzen oder die Mailserver wie bei Exchange Online gehosted werden.
Versuchen Sie bitte nicht das so angelegten Sammelpostfächer zu missbrauchen, denn der Mail im Posteingang fehlen einige zusätzliche Informationen wie z.B. BCC-Empfänger, die für eine korrekte Zustellung erforderlich sind.
Einschätzung
Dass ich kein Freund von solchen CatchAll-Postfächern bin, haben Sie vermutlich schon bemerkt. Dennoch kann ich mir auch Situationen vorstellen, die solche Funktionen erforderlich machen. Allerdings würde ich diese Funktion nie auf der primären SMTP-Domain aktivieren, auf denen Benutzer arbeiten, weil sie dann auch Mails an vertippte Adressen aus dem Postfach herausfischen und an den gewünschten Empfänger zustellen müssen. Solche Mails sollten immer mit einem NDR abgelehnt werden, so dass der Absender seinen Fehler korrigieren kann.
Anders sieht es aber für funktionale Domains aus. Ein Helpdesk-System könnte ja Mails an "<ticketnnummer>@helpdesk.<firmendomain>" annehmen und direkt an das richtige Ticket zuordnen. Dazu muss die Applikation natürlich auch mit dieser Adresse senden oder zumindest einen "Reply-To"-Header setzen. Hier könnte es aber sehr wohl interessant sein, ein CatchAll-Postfach einzusetzen. Und das geht mit Exchange Online über die oben gezeigten Schritte. Beachten Sie dabei aber immer die Exchange Online Grenzwerte, z.B. maximal 3600 Mails/Stunde.
Weitere Links
- Exchange Online Message Rate Grenzen
- Abfragebasierte Verteiler - Querybased distribution Groups
- Querybased Security Groups
- EXO Antispam-Support
-
Directory Based Edge Blocking (DBEB)
Mit der richtigen Einstellung lehnt Exchange Online auch ungültige Empfänger direkt ab - Plus-Adressierung
- Exchange Online NDRs
- EXO Throttling und Blocking
- CatchAll
- CatchUnknown
- Catch unknown 2007/2010
- Spoofdetect Sink
- Exchange Online Limits
https://docs.microsoft.com/de-de/office365/servicedescriptions/exchange-online-service-description/exchange-online-limits - Exchange Online Service Description
https://docs.microsoft.com/de-de/office365/servicedescriptions/exchange-online-service-description/exchange-online-service-description - Configure Catch all Mailbox in Microsoft
365
https://o365info.com/catch-all-mailbox/ - Header (E-Mail)
https://de.wikipedia.org/wiki/Header_(E-Mail)