EXO Enhanced Filtering
Wenn Sie den MX-Record ihrer Maildomain nicht direkt zu Exchange Online verweisen, sondern im Hybrid-Mode arbeiten oder einen eigenen 3rd Party Spamfilter davor betreiben, dann ist diese Seite interessant.
Die Funktion gibt es nur in Exchange Online und daher nur wirksam, wenn Mails bei Exchange Online eingeliefert werden.
Auslöser: SPF und SRS, DMARC
Exchange Online hat einen mehr oder weniger leistungsfähigen Spamfilter und Malwarefilter. Eine wesentliche Funktion zum Abwehren von Fälschungen besteht dabei in der Überprüfung des Absenders anhand der von der Absenderdomain hoffentlich veröffentlichten SPF-Einträgen. Der Absender gibt damit seine legitimen Absender vor und kann über DMARC dies noch strenger beschränken.
Solange ihr MX-Record für die Empfängerdomain direkt zu Exchange Online verweist, funktioniert diese Erkennung und Bewertung sehr gut:
Interessant wird dies aber, wenn Sie nicht Exchange Online Protection sondern einen eigenen Spamfilter einsetzen der vor Exchange sitzt. Der MX-Record verweist auf den Spamfilter, der dann die Mails per Smarthost an Exchange Online weiterleitet. In Exchange Online haben Sie einen Partner-Connector mit dem Adressraum "SMTP:*", welcher die Zustellung aus dem Internet auf ihren Spamfilter beschränkt
Sie können nun aber gut sehen, dass Exchange Online nur eingehende Verbindung von der IP-Adresse ihres vorgelagerten Spamfilters sieht. Diese ist aber garantiert nicht im SPF-Record der Absenderdomain enthalten. Ohne entsprechende Vorkehrungen würde Exchange Online diese Verbindungen als "Phishing" klassifizieren und entweder direkt ablehnen oder die Mails zumindest in die Quarantäne des Tenants oder den Junk-E-Mail-Ordners des Anwenders einsortieren. Sie haben nun zwei Optionen zur Auswahl:
- EOP abschalten (geht nicht komplett)
Sie können natürlich komplett auf den davor geschalteten Spamfilter setzen und versuchen den eingebauten Spamfilter von Exchange Online zu deaktivieren. Das ist über verschiedene Richtlinien einstellbar aber leider nicht komplett zu deaktivieren. Insbesondere "Malware"-Regeln sind immer aktiv. Das ist aber auch sinnvoll, um z.B. interne Spam oder Malware zu blockieren. Allzu oft werden ja auch Konten per Phishing gekapert und dann hilft ein interner Schutz. - Enhanded Filtering konfigurieren
Viel wichtiger ist die Konfiguration von "Enhanced Filtering" auf dem entsprechenden "Inbound Partner Connector". Damit teile ich Exchange Online Protection mit, dass er die einliefernde IP-Adresse und optional weitere Adressen aus dem Header ignorieren soll, bis er die tatsächliche IP-Adresse des Servers findet, die mittels MX-Record die Mail zugestellt hat. Oder sie schalten die Erkennung direkt ab.
Das wird umso wichtiger, da Microsoft im Herbst 2023 auch die DMARC-Konfiguration verschärft hat. Wenn die SMTP-Domain des Absender einen DMARC-Eintrag hat, dann wird dieser nun beachtet:
- Announcing New DMARC Policy Handling
Defaults for Enhanced Email Security
https://techcommunity.microsoft.com/t5/exchange-team-blog/announcing-new-dmarc-policy-handling-defaults-for-enhanced-email/ba-p/3878883 - Anti-phishing policies in Microsoft 365
- Spoof protection and sender DMARC policies
https://learn.microsoft.com/en-us/microsoft-365/security/office-365-security/anti-phishing-policies-about?view=o365-worldwide#spoof-protection-and-sender-dmarc-policies
Sie können natürlich auch die DMARC-Auswertung deaktivieren oder abschwächen, um eine "p=reject"-Richtlinie zu überstimmen. Dies geht im Security Center unter https://security.microsoft.com/antiphishing
Damit können Sie verhindern, dass ein Absender mit falschem DMARC-Eintrag oder ihr Connector ohne "Enhanced Filtering" eine Mail aufgrund eines SPF-Fehlers ablehnen oder in eine Quarantäne stecken.
Ein Blick in den Header einer empfangenen Mail zeigt, was Exchange geprüft hat. Wenn zwischen dem Internet und dem Server B ein 3rd Party Spamfilter "S" eingeschaltet ist. Exchange Online sieht ist als Source-IP nun die IP2 und nicht mehr die IP1, welcher per SPF publiziert ist. Selbst wenn ich in Exchange Online einen eingehenden Partner-Connector konfiguriere und damit fast ein Allowlisting einrichten kann, so macht Exchange Online dennoch einen SPF-Check, um davon abhängige Logik anzuwenden. Sie können dazu im Header einer eingehenden Mail dies direkt sehen:
Authentication-Results: spf=softfail (sender IP is 193.37.132.2) smtp.mailfrom=msxfaq.de; dkim=pass (signature was verified) header.d=msxfaq.de;dmarc=pass action=none header.from=msxfaq.de;compauth=pass reason=100 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning msxfaq.de discourages use of 193.37.132.2 as permitted sender) Received: from netatwork.cloud.nospamproxy.com (193.37.132.2) by DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.22 via Frontend Transport; Mon, 7 Mar 2022 07:29:57 +0000 Received: from 178.135.28.34 by netatwork.cloud.nospamproxy.com via connector NSP Cloud-Connector (Tls12, Aes256, Sha384, DiffieHellmanEllipticKey384); Mon, 07 Mar 2022 07:29:52 GMT X-MS-Exchange-Organization-MessageDirectionality: Incoming X-MS-Exchange-Organization-AuthSource: DB5EUR03FT063.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-Organization-AuthAs: Anonymous
Die IP-Adresse "193.37.132.2" ist natürlich nicht autoritativ für meine Domain "msxfaq.de" und damit verhindert dies eine SRS-Umschreibung, wenn ich eine Mail an eine Gruppe beim Server B sende und dieser dann weiter externe Teilnehmer hat.
Dieses Problem hat Microsoft aber auch schon gefunden und eine Lösung erarbeitet. Elegant wäre es ja, wenn ich Exchange Online sagen könnte, dass er nicht die direkt sichtbare IP-Adresse von Server S nutzt sondern z.B. die IP-Adresse aus dem "Received:"-Header davor. Hier der gleiche Header mit der zusätzlichen "Received:"-Zeile:
Received: from netatwork.cloud.nospamproxy.com (193.37.132.2) by DB5EUR03FT063.mail.protection.outlook.com (10.152.20.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.22 via Frontend Transport; Mon, 7 Mar 2022 07:29:57 +0000 Received: from 80.237.137.3 by netatwork.cloud.nospamproxy.com via connector NSP Cloud-Connector (Tls12, Aes256, Sha384, DiffieHellmanEllipticKey384); Mon, 07 Mar 2022 07:29:52 GMT
Wenn Sie genau hinschauen. dann finden Sie hier die IP-Adresse 80.237.137.0/24 als Quelle bei der "Einlieferung an NoSpamProxy". Diese Adresse kann ich per SPF-Check gegen "msxfaq.de" problemlos auflösen. Da ich als Betreiber von Server B auch einen Vertrag mit dem vorgelagerten Spamfilter "S" habe, kann ich Exchange Online anweisen, dem Header zu vertrauen, der durch den Server "S" addiert wurde. Genau das bringt die Funktion "Enhanced Filtering" mit sich.
Inbound Connector
Ehe Sie "Enhanced Filtering" konfigurieren können, müssen Sie in Exchange Online einen "Inbound Connector" anlegen. Sie können die Funktion nicht global für einen Tenant aktivieren. Das macht auch Sinn, denn Sie sollten das vorgelagerte System ja genau kennen und gegenüber Exchange Online auch über eine IP-Adresse oder ein Zertifikat identifizierbar machen. Zudem wird so sichergestellt, dass direkte Zustellungen an den Exchange Online Tenant nicht den Spamfilter der Cloud umgehen.
Sie können Enhanced Filtering nicht mit Hybrid Centralized Mail Transport kombinieren.
Für den Empfang in Exchange Online können Sie einen Partner-Connector anlegen. Meist ist der OnPrem-Connector schon durch einen HCW angelegt und damit brauchen Sie diese Funktion nicht mehr. Ich hoffe, dass Sie vor ihrem Exchange ein adäquater Spamfilter sitzt. Der Partner Connector kann wie folgt in der Exchange Online PowerShell angelegt werden:
New-InboundConnector ` -Name "Inbound Internet via NSP to O365" ` -Senderdomains “*“ ` -RequireTLS $true ` -TlsSenderCertificateName cloud.nospamproxy.net ` -connectortype Partner ` -enabled:$true ` -EFSkipLastIP:$true
Damit ignoriert Exchange Online die einliefernde letzte IP-Adresse, solange sich der Absender mit dem passenden Zertifikat ausweist.
- EXO mit NoSpamProxy
- Manage mail flow using a third-party
cloud service with Exchange Online
https://docs.microsoft.com/en-us/exchange/mail-flow-best-practices/manage-mail-flow-using-third-party-cloud - Enhanced Filtering for Connectors in
Exchange Online
https://docs.microsoft.com/en-us/exchange/mail-flow-best-practices/use-connectors-to-configure-mail-flow/enhanced-filtering-for-connectors
EFSkipLastIP
Ich kann dann Exchange Online entweder automatisch versuchen lassen die maßgebliche IP-Adresse zu ermitteln oder die Adressen übergebe, die Exchange Online ignorieren soll. Als Administrator können Sie das ganz elegant im Security Center einstellen. Unter "Policy&Rules - Thread Policies - enhanced Filtering Connectors" oder der direkten URL https://security.microsoft.com/skiplisting können Sie pro Connector die Filterfunktion aktivieren.
Bei der Aktivierung können die neben der Automatismus auch die IP-Adressen ihres vorgelagerten Systems pflegen.
Hier sollten Sie dann alle IP-Adressen pflegen und ggfls. sind Korrekturen erforderlich, wenn der Provider neue Systeme online nimmt.
Die Einstellung "Automatic" überspringt einfach den letzten Eintrag und nimmt den vorherigen "Received:"-Header. Das funktioniert natürlich nur, wenn der vorgelagerte Filter nicht aus einer Gruppe von Systemen besteht, die mehrere Header addiert:
PowerShell
Die gleichen Einstellungen können Sie natürlich per PowerShell setzen.
Set-InboundConnector ` -Identity "Inbound Internet via NSP to O365" ` -EFSkipLastIP $true ` -EFUsers "test1@uclabor.de","test2@uslabor.de
Zum Testen bietet es sich an, diese Einstellung erst einmal nur für eine Teilmenge der Empfänger zu verwenden.
- Set-InboundConnector
https://docs.microsoft.com/de-de/powershell/module/exchange/set-inboundconnector?view=exchange-ps
Testen
Der Header der nächsten eingehenden Mail sieht dann minimal verändert aus:
Authentication-Results: spf=pass (sender IP is 212.227.126.130) smtp.mailfrom=carius.de; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=carius.de;compauth=pass reason=100 Received-SPF: Pass (protection.outlook.com: domain of msxfaq.de designates 212.227.126.130 as permitted sender) receiver=protection.outlook.com; client-ip=80.237.137.4; helo=212.227.126.130; Received: from netatwork.cloud.nospamproxy.com (193.37.132.2) by AM5EUR03FT063.mail.protection.outlook.com (10.152.16.226) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.26 via Frontend Transport; Mon, 7 Mar 2022 16:32:30 +0000 Received: from 80.237.137.4 by netatwork.cloud.nospamproxy.com via connector NSP Cloud-Connector (Tls12, Aes256, Sha384, DiffieHellmanEllipticKey384); Mon, 07 Mar 2022 16:32:27 GMT
Sie sehen, dass diese Mail nun von der IP-Adresse 80.237.137.4 bei NoSpamProxy eingeliefert und dann durch NoSpamProxy Adresse 193.37.132.2 an Exchange Online gesendet wurde. Exchange Online hat die Mail auch angenommen aber ignoriert nun diese Zeile, sondern wertet die Zeile davor aus. Exchange Online nutzt die Adresse 80.237.137.4, macht seinen SPF-Check und bekommt einen "PASS". Damit sollten weitere Prozesse, die z.B. das SPF-Ergebnis auswerten auch mit der Vorschaltung eines 3rd Party Relays besser funktionieren.
Defender schläft nicht
Bei der Einrichtung eines Inbound-Connectors im Kundenumfeld haben wir bei Testmails dennoch festgestellt, dass die Funktion anscheinend nicht gegriffen hat. Natürlich haben wir einen entsprechende Connector angelegt und "EFSkipLastIP" aktiviert. Dennoch sind Mails im Junk-E-Mail-Ordner gelandet. Der einzige Unterschied war ein leere Body bei der Junk-E-Mail. Im Header konnte man auch gut sehen, dass die Mail nicht die erwarteten Header hatte. Er sollte die 217.139.205.22 ignorieren und stattdessen die 212.227.126.130 (IONOS) als Source-IP auswerten.
Mail ohne Body nach Junk-E-mail | Mail mit Body im Posteingang |
---|---|
From: frank@carius.de To: 'Test 01' test01@uclabor.de.de Subject: Test 15:51 Cars->EXO Date: Mon, 29 Aug 2022 15:51:41 +0200 Body: <null> Authentication-Results: spf=fail (sender IP is 217.139.205.22) smtp.mailfrom=carius.de; dkim=none (message not signed) header.d=none;dmarc=fail action=oreject header.from=carius.de; Received-SPF: Fail (protection.outlook.com: domain of carius.de does not designate 93.159.105.2 as permitted sender) receiver=protection.outlook.com; client-ip=93.159.105.2; helo=nsp.uclabor.de.net; Received: from nsp.uclabor.de.net (217.139.205.22) by BE0DEU01FT008.mail.protection.outlook.com (20.128.125.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.5588.3 via Frontend Transport; Mon, 29 Aug 2022 13:51:44 +0000 X-EOPAttributedMessage: 0 X-MS-Exchange-Organization-MessageDirectionality: Originating X-MS-Exchange-Organization-AuthAs: Anonymous X-MS-Exchange-Organization-SCL: 5 |
From: frank@carius.de To: 'Test 01' test01@uclabor.de.de Subject: Test 15:52 Carius-> EXo Date: Mon, 29 Aug 2022 15:52:11 +0200 Body: Das ist eine längere Testmail, um den Spamfilter zu befrieden Authentication-Results: spf=pass (sender IP is 212.227.126.130) smtp.mailfrom=carius.de; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=carius.de;compauth=pass reason=100 Received-SPF: Pass (protection.outlook.com: domain of carius.de designates 212.227.126.130 as permitted sender) receiver=protection.outlook.com; client-ip=212.227.126.130; helo=212.227.126.130; pr=C Received: from nsp.uclabor.de.net (217.139.205.22) by FR2DEU01FT022.mail.protection.outlook.com (20.128.124.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.5588.3 via Frontend Transport; Mon, 29 Aug 2022 13:52:17 +0000 X-EOPAttributedMessage: 0 X-MS-Exchange-Organization-MessageDirectionality: Originating X-MS-Exchange-SkipListedInternetSender: ip=[212.227.126.130];domain=212.227.126.130 X-MS-Exchange-ExternalOriginalInternetSender: ip=[212.227.126.130];domain=212.227.126.130 X-MS-Exchange-Organization-AuthAs: Anonymous X-MS-Exchange-Organization-SCL: 1 |
Die Mails wurden sehr kurz aufeinander gesendet und die Konfiguration in der Zeit nicht verändert. Insofern kann die unterschiedliche Behandlung nur daran liegen, dass EOP/Defender die Mail schon vorher als "SPAM" ausgefiltert und daher gar nicht mehr einen SPF-Check durchgeführt hat. Die Richtlinie zu Defender (https://security.microsoft.com/antispam) für leere Meldungen war nicht aktiv.
Insofern ist das Verhalten nicht ganz nachzuvollziehen.
- Reports - Mail flowMail flow - Inbound messages report
https://admin.exchange.microsoft.com/#/reports/inboundconnectordetails
EFSkip und Zertifikate
Aus einem Microsoft Forum habe ich noch einen zweiten Fall, in dem "Enhanced Filtering" nicht zuverlässig funktioniert hat. Dies mal waren es Zertifikate:
- Reports - Mail flowMail flow - Inbound
messages report
https://admin.exchange.microsoft.com/#/reports/inboundconnectordetails - Enhanced Filtering for Connectors not
working - Microsoft Tech Community
https://techcommunity.microsoft.com/t5/microsoft-defender-for-office/enhanced-filtering-for-connectors-not-working/m-p/2808783
Ergebnis
Wenn Sie nicht auf den Spamfilter von Exchange Online vertrauen, sondern eine eigene 3rd Party Lösung wie NoSpamProxy z.B. für SMIME/PGP-Handling einsetzen, sollten sie "Enhanced Filtering" auf dem eingehenden Partner-Connector aktivieren. Sie helfen damit Exchange Online, die eingehenden Mails besser zu taggen, denn es ist leider nicht generell möglich, die eingehenden Verbindungen als unbeschränkt vertrauenswürdig zu konfigurieren. Mit aktiviertem "Enhanced Filtering" funktioniert aber zumindest die SPF-Prüfung auf Basis der IP-Adresse des vorherigen Hops. Der Automatismus funktioniert natürlich nur, wenn der vorgelagerte Filter nur genau eine "Received:"-Zeile addiert oder die Zwischenstationen mit "Privaten IP-Adressen" arbeiten und daher ignoriert werden. Ansonsten müssen Sie manuell alle IP-Adressen ihres Filters pflegen.
Weitere Links
- Spam und UCE - Filter: DKIM
- Spam und UCE - Filter: SPF, SenderID
- Hybrid Centralized Mail Transport
- EXO mit NoSpamProxy
- Office 365: Mail Connector
- Hybrid Mailrouting
-
Partner Connector
Sonderbehandlung anhand IP-Adresse und/oder Zertifikat für gewisse Absenderdomains - Enhanced Filtering for Connectors in Exchange Online
https://docs.microsoft.com/en-us/Exchange/mail-flow-best-practices/use-connectors-to-configure-mail-flow/enhanced-filtering-for-connectors - Manage mail flow using a third-party
cloud service with Exchange Online
https://docs.microsoft.com/en-us/exchange/mail-flow-best-practices/manage-mail-flow-using-third-party-cloud - Sender Rewriting Scheme (SRS) coming to Office 365
https://techcommunity.microsoft.com/t5/exchange-team-blog/sender-rewriting-scheme-srs-coming-to-office-365/ba-p/607932 - Sender Rewriting Scheme Upcoming Changes
https://techcommunity.microsoft.com/t5/exchange-team-blog/sender-rewriting-scheme-upcoming-changes/ba-p/2632829 - Pools für die Zustellung ausgehender Nachrichten
https://docs.microsoft.com/de-de/microsoft-365/security/office-365-security/high-risk-delivery-pool-for-outbound-messages?view=o365-worldwide