Exchange 2007 Spamschutz

Exchange 2007 hat wie Exchange 2003 die Anti Spam-Funktionen des Intelligent Message Filter eingebaut. Wenn Sie sich allerdings einmal die E2007:Rollen anschauen, dann ist diese Funktion nur auf der Hub/Transport und der Edge-Rolle vorhanden. Alle anderen Rollen haben keine SMTP-Funktion.

Dass der Spamschutz bei der Edge-Rolle natürlich vorhanden ist, versteht sich von alleine. Schließlich ist genau diese Rolle das erste Gateway vom Internet. Aber auch auf der Hub/Transport-Rolle ist der Spamschutz vorhanden. Allerdings ist er nicht per Default aktiviert. Ob dies ein "gutes" Standardsetup für einen Exchange Server ist, muss Microsoft wissen. Ich hätte es eher per Default aktiviert, wenn ein Server als "Receive Connector" konfiguriert wird und nur dann deaktiviert, wenn es einen Edge-Server gibt.

Exchange 2007 kennt aber drei Stellen, an denen IMF aktiv wird:

  • HubTransport
    Analog zum Exchange 2003 Intelligent Message Filter kann auch Exchange 2007 schon beim Empfang Mails kategorisieren und anhand von Kriterien ablehnen, in eine Quarantäne Mailbox umleiten oder löschen.
  • Mailboxrolle
    Die Mailbox Rolle ist weiterhin dafür zuständig, Mails anhand eines bestimmten SCL in den "Junk-E-Mail" Ordner zu verschieben. Dies wird weiterhin auf der Organisation eingestellt (Set-OrganizationConfig -SCLJunkThreshold <nr>), auch wenn in der GUI kein passender Punkt mehr vorhanden ist. Allerdings kann der Administrator diesen Level nun auch pro Mailbox einstellen. (Set-Mailbox [-SCLJunkEnabled ] [-SCLJunkThreshold <Nullable>. (Default = 4)

Aber es gibt noch zwei weitere Stellen, die mit IMF etwas zu tun haben:

  • Edge Server
    Dies ist eine "Besondere Form" der Hub/Transport Rolle, die aber unerwünschte Mails nur per SMTP bewerten und ablehnen kann. Sie hat keinen Durchgriff auf die Mailbox selbst
  • Transport Regeln
    Mit Exchange 2007 ist es relativ einfach, den SCL-Wert anhand einer Transportregel zu ändern. Der Assistent erlaubt schon die Auswahl verschiedener Kriterien (z.B. Text im Betreff oder in einer benutzerdefinierte Headerzeile) und die Korrektur des SCL-Werts absolut oder relativ. Allerdings greift dies erst, nachdem die Mail bereits empfangen worden ist. Ihr vorgelagerter Spamschutz kann also sein Rating der Mail hinzufügen, und Exchange empfängt diese ohne aktiven Filter auf der Transportrolle, wertet aber die Felder aus, damit die Mailboxrolle die Mails nach Junk-E-Mail verschieben kann.

Damit das aber alles funktioniert, ist etwas Konfiguration angesagt.

Kein EDGE
Alle Beschreibungen betreffen eine Installation ohne EDGE-Rolle. Diese ist nach meinen Erfahrungen eher selten installiert und in vielen Fällen gar nicht sinnvoll, z.B. wenn Sie eine kleinere Firma sind oder der Spamschutz bereits durch andere Produkte gewährleistet ist.

Spamschutz auf Hub-Transport aktivieren

Wenn Sie also ein kleines Netzwerk betreuen und auf die Edge-Rolle oder andere vorgelagerte Spamfilter verzichten, dann ist die Nutzung der in Exchange eingebauten Spamfilter durchaus anzuraten. Damit Sie die entsprechenden Karteikarten und Einstellungen jedoch vornehmen können, müssen wir einen Befehl auf der PowerShell ausführen. Ein einfacher "DIR"-Befehl im Exchange Skripts Verzeichnis zeigt, welche Funktionen per PowerShell erreichbar sind

Antispam Befehle

Für die Aktivierung müssen wir daher die Exchange Management Shell starten und folgenden Befehl ausführen

install-AntiSpamAgents.ps1

Ein direkter Aufruf aus der DOS-Box öffnet Notepad zum Bearbeiten des Skripts. Ein Aufruf aus der normalen PowerShell bricht ab, weil zusätzliche Befehle wie Get-Transportserver etc. nicht funktionieren,

Install-AntiSpamAgents

Direkt nach der Installation können wir dann in der Exchange Management Konsole die Veränderungen kontrollieren. Hier ein Bild "Vorher/Nachher"

MMC Antispam Einstellungen

Auch auf der Hub/Transport-Rolle des entsprechenden Servers zeigen sich kleine Änderungen :

Disable AntiSpam Updates

Denken Sie daran, dass Sie diese Einstellungen nur auf den Servern durchführen müssen, die Mails aus dem Internet von anonymen Absendern annehmen. Damit Sie die "Ablehnen"-Funktion von Exchange 2007 vernünftig nutzen könnten, sollte es kein System zwischen dem Absender und ihrem Exchange Server geben, welcher als "Relay" arbeitet, da sonst ihr eigenes Relay (oder das des Providers) nicht alle Mails zu ihnen senden kann und für abgelehnte Nachrichten eine unzustellbarkeit erstellen muss. (Siehe auch NDR Spamming)

Spamschutz konfigurieren

Die komplette Konfiguration erfolgt wieder "Organisationsweit". Eine Einstellung pro Server oder nach Domänen (also z.B. Kunden oder Abteilungen) ist nicht vorgesehen. für solche erweiterten Funktionen sind wieder Drittprodukte erforderlich. Folgende Einstellungen sind möglich.  Teilweise können aber einzelne Mailadressen besonders behandelt werden.

  • Filterung auf IP-Adressenliste
    Hier bietet Exchange wie alle Mailserver die Möglichkeit, bestimme IP-Adressen als Absender generell zu erlauben oder zu verbieten. Die Verbindung von diesen Adressen wird dann immer angenommen oder abgelehnt.
  • RBL (IP AllowList Providers und IP Blocklist Providers
    Diese Filter sind die ganz normalen RBL-Filter, die IP-Adressen ablehnen oder erlauben,  wenn diese von einem Anbieter (einer Datenbank) entsprechend gekennzeichnet werden. Neu ist hier vielleicht der Ansatz, dass es bald "AllowListProviders" geben soll. Dies wäre dann ein SPF/CallerID-Ansatz ohne Mitarbeit der Absender
  • Content Filterung
    Wie bisher auch kennt Exchange 2007 die Filterung anhand einer von Microsoft bereit gestellten "Wissensdatenbank". Dahinter verbirgt sich eine Art Bayes-Funktion.
    Contentfilter
    Interessant ist hier, dass man auch über die GUI nun eigene Wortlisten pflegen kann. Über die Exceptions können einzelne Empfänger vom Contentscan ausgeschlossen werden. Allerdings dürfte Exchange 2007 hier beim Ablehnen auch in Probleme kommen, wenn eine Spam-Mail an zwei Empfänger geht und einer davon nicht gefiltert werden dar. Ich weiß noch nicht, ob Exchange dann trotzdem die komplette Mail ablehnt oder beiden Usern zustellt.
  • Empfängerfilterung
    Aus mir nicht ganz verständlichen Gründen ist bei der Empfängerfilterung die Prüfung gegen die GAL nicht aktiviert.
    Empfängerprüfung
    Wenn Sie also sicher sind, dass ihr AD alle gültigen Empfänger enthält, dann sollten Sie die hier gekennzeichnete Checkbox auch aktiv machen. (Siehe auch RCPTTO)
  • Sender Filterung
    Hierbei können Sie manuell Absenderadressen pflegen, von denen Sie keine Nachrichten annehmen wollen.  Dies ist sicher weniger ein Spamschutz, als vielmehr eine einfache Möglichkeit unliebsame Absender auszusperren, z.B. Firmen, die auch auf Abbestellungen von Newslettern nicht reagieren.
  • SPF
    Die Verarbeitung von Nachrichten anhand eines SPF/SenderID-Eintrags erlaubt Exchange 2007 ebenfalls. In der Standardeinstellung werden die Mails, die anscheinend "falsch" sind, nur gekennzeichnet.
    SPF
    Ein Ablehnen wäre zwar schöner aber leider müssten dazu auch die Absender ein "-all" als Option mit in ihrem DNS-Eintrag hinterlegen. Die wenigsten machen dies aktuell.
  • Sender Reputation
    Bei dieser Prüfung nimmt Exchange die SMTP-Befehle genauer unter die Lupe. So prüft er, ob der beim HELO/EHLO angegeben Name gültig ist (Siehe auch HELO). Auch schaut er nach, wie Mails von dieser Domäne in der Vergangenheit bezüglich des SCLs abgeschnitten haben. Exchange kann anscheinend sogar aktiv einen Test machen, ob der einliefernde Mailserver ein offenes System ist.
    Sender Reputation
    Sender Reputation - Actions
    Standardmäßig sind diese Funktionen sogar wie abgebildet konfiguriert

Die Konfiguration der Spamschutzeinstellungen können natürlich auch über die PowerShell erfolgen. Hier die ContentFilterConfig:

Set-ContentFilterConfig
 -BypassedRecipients
 -BypassedSenderDomains
 -BypassedSenders 
 -Enabled <$true | $false>
 -OutlookEmailPostmarkValidationEnabled <$true | $false>
 -QuarantineMailbox
 -RejectionResponse
 -SCLDeleteEnabled <$true | $false>
 -SCLDeleteThreshold'
 -SCLQuarantineEnabled <$true | $false>
 -SCLQuarantineThreshold
 -SCLRejectEnabled <$true | $false>
 -SCLRejectThreshold

Diese AntiSpam Agenten setzen für jede Mail, die nicht gleich abgewiesen oder in die Quarantäne (Edge only) verschoben wird, einen SCL-Wert, anhand dieser der Informationsspeicher dann die Mail z.B. nach Junk-E-Mail

Einstellung der Mailboxrolle auf der Organisation

Für die Funktion, Mails anhand des SCL in den "Junk-E-Mail"-Ordner zu verschieben ist eine globale Konfiguration in der Organisation zuständig. (Default = 4 bzw. die von Exchange 2003 übernommene Einstellung)

Get-OrganizationConfig | Set-OrganizationConfig -SCLJunkThreshold:4

Damit wird eingestellt, ab welcher Stufe die Mails verschoben werden. Die höchste Zahl ist "9", womit die Funktion abgeschaltet wird. Eine Mail wird nur verschoben, wenn Sie einen höheren Wert hat, auch wenn in einigen Dokumentationen noch ein "größer oder gleich" steht, was aber falsch ist.. Mails ohne SCL werden ebenfalls nicht berücksichtigt.

Einstellungen pro Benutzer

Auch wenn es die Exchange 2007 Management Console noch nicht offenbart, so können auch beim Benutzer entsprechende Werte konfiguriert werden. Hier mal ein Auszug von "Get-Mailbox"

SCl Benutzereinstellungen

Die Konfiguration ist natürlich auch wieder nur per PowerShell mit "SET-MAILBOX" möglich.

get-Mailbox | set-Mailbox -SCLJunkThreshold 4 -SCLJunkEnable $true

Eine Einstellung auf dem Benutzer überschreibt die Einstellungen auf der Organisation. Daher kann die Benutzerkonfiguration nicht nur die Werte "$true" und "$false" annehmen, sondern auch "$null".

Achtung:
Die SCL-Verarbeitung auf einem Postfach wird ausgesetzt, wenn das Postfach über seinem Quota ist.

Transport Regeln

Mit Exchange 2007 Transport Regeln kann man auf zwei Arten mit SCLs umgehen.

  • SCL abfragen um darauf zu reagieren
    Sie können die SCL-Bewertung des Hub/Transport oder EDGE-Servers auswerten um basierend darauf weitere Aktionen anzustoßen.
  • SCL aufgrund anderer Kriterien setzen
    Alternativ können Sie natürlich die Vielzahl der Bedingungen nutzen, um die Mails heraus zu finden, die sie mit einem eigenen SCL-Wert versehen wollen. Allerdings dürfte die Mailbox Rolle die zur Zeit einzige Rolle sein, die dann diese Mails nach Junk-E-Mail verschiebt.

Denkbar ist natürlich, dass Sie auch komplett eigene Transportagenten entwickeln. Diese Funktion ist besonders hilfreich, wenn man einen vorgelagerten Spamschutz hat, welcher in einem Header die Spambewertung hinterlegt.

Exchange 2007 Antispam, Transportregeln und Spam Assasin

Viele Firmen nutzen schon Exchange 2007, aber betreiben z.B. SpamAssassin vor der Exchange Umgebung als vorgelagerten Spamschutz. Mit Exchange 2007 Transport Regeln und etwas Konfiguration können Sie Exchange Veranlassen, Mails mit einem bestimmten Spamrating auf dem Server nach "Junk-E-Mail" zu verschieben. Sie können mit SpamAssassin daher eine dreistufige Kette aufbauen:

  • Stufe 1: Ablehnen
    SpamAssassin kann klar erkennbaren Spam direkt ablehnen. So können IP-Adressen von RBL-Listen oder natürlich ungültige Empfänger sofort verhindert werden
  • Stufe 2: Gateway Quarantäne
    Mails, die nicht sofort abgelehnt werden aber z.B. "Gefährlich" sind (ausführbare Anlagen o.ä.) kann der Administrator weiter in die Quarantäne auf dem Gateway ablegen, so dass der Anwender nicht darauf zugreifen kann
  • Stufe 3: Taggen und Zustelen
    Alle anderen Mails werden durch SpamAssassin mit einem Header "X-Spam-Score:" versehen, welcher durch ein oder mehrere "*"-Zeichen die Spamwahrscheinlichkeit darstellt. Mit Exchange können nun Mails, die eine bestimmte Anzahl an "*" überschreiten, mit einem SCL versehen werden, welcher dann den Informationsspeicher anweist, diese Mails nach Junk-E-Mail" zu verschieben.

Damit landen im Postfach die nicht als SPAM erkannten Mails und in Junk-E-Mail mögliche Spam-Nachrichten, welcher nicht abgelehnt oder in der Gateway-Quarantäne festgehalten wurden.

Die Konfiguration ist ganz einfach:

  1. SpamAsssin muss eingehende Mails mit einem Header kennzeichnen
    Kontrollieren Sie den Header einer heute bereits erhaltenen Mail und suchen Sie den Header "X-Spam-Score". Er sollte das Rating der Mail in "Sternen" enthalten und danach eventuell die Einzelbewertung der Filter. Wenn dies noch nicht so ist, dann müssen Sie SpamAssassin oder ihren Antispamfilter entsprechend anpassen.
  2. Transportregel einrichten
    Konfigurieren Sie nun in Exchange 2007 eine Transportregel, die alle Mails, die im Header "X-Spam-Score" z.B. 5 und mehr Sterne enthalten, einen SCL von 5 erhalten. Sie können natürlich im mehrere Transportregeln einrichten, die je nach Empfänger oder Headerinhalt unterschiedliche SCL-Werte 1-9 vergeben, aber sinnvoll ist dies nur, wenn ein Schwellwert nicht ausreicht und Empfänger gerne unterschiedliche Schwellwerte benötigen:


    Wichtig: Bei der Eingabe der "Textmuster" können reguläre Expressions genutzt werden. Allerdings hat bei mir ein "\*{5,}" nicht funktioniert. ein "\*\*\*\*\*" führte dann aber zum Ergebnis
  3. SCL-Verhalten des Store einstellen
    Wenn die überwiegende Anzahl an Postfächern "gleich" behandelt werden soll, dann ist eine Einstellung auf der Organisation meist ausreichend. "Ausreißer" nach oben oder unten können Sie beim Benutzer abweichen konfigurieren. Entgegen der Beschreibung in der Exchange Hilfe muss die Mail einen höheren SCL haben und nicht "Größer/Gleich" sein. Ein SCL von 9 an dieser Stelle deaktiviert also die Logik, weil keine Mail einen SCL von 9,000001 haben kann.

Set-OrganizationConfig -SCLJunkThreshold 5

Zum Testen müssen sie nicht einmal eine SpamMail durch SpamAssassin jagen. Ein einfacher Test mit TELNET (siehe SMTP Telnet) reicht aus, da Sie auch hier den Header direkt mit übermitteln können.

HELO test
MAIL FROM:<absender@spamdomain.tld>
RCPT TO:<ihrUser@ihredomain.tld>
DATA
Subject: Test mit 6 Sternen
X-Spam-Score: 6.38 (******) Filter, Filter, Filter
 
Spam
.

Exchange sollte diese Mail nun annehmen und anhand des Headers einen SCL setzen, der dann vom Informationsspeicher als hoch genug angesehen wird, um die Mail direkt in ihren Junk-E-Mail-Ordner zu legen. Ob allerdings die Empfänger etwas davon haben, immer mal wieder nach "Junk-E-Mail" zu schauen, ist fraglich. Ich persönlich würde lieber jede Mail, die ich nicht in den Posteingang zustellen werde, gleich vorne ablehnen, damit der entfernte Mailserver eine unzustellbarkeit erzeugen kann.

  • 922260 Messages are not moved to the Junk E-mail folder of a mailbox in Exchange Server 200
  • 823920 Messages appear in the offline junk e-mail folder and do not appear in the online junk e-mail folder in Outlook 2007 and in Outlook 2003
  • Spam Assassing Transport Agent für Exchange 2007
    http://www.ppc.at/software/eigene-software/exchange-2007-spamassassin

Zwischenstatus

Wenn man all dies zusammenfasst, dann ist der Spamschutz in Exchange 2007 nicht sehr viel leistungsfähiger geworden, als die in Exchange 2003 bereits der Fall war. Die üblichen Filter durch RBL-Listen und die Analyse von Inhalten über den Content-Scanner sind gängige Ansätze, um ziemlich viel Spam vorab schon zu filtern. Sehr lobenswert ist natürlich die Funktion, solche Nachrichten gar nicht erst anzunehmen und in eine Quarantäne zuzustellen oder zu löschen. Exchange lehnt hier die Mails auf SMTP-Level schon ab, wie ich es mit NoSpamProxy schon tue.

Allerdings fehlt dem Exchange Spamschutz immer noch die Funktion, um auch in größeren Umgebungen einen abgestuften flexiblen Spamschutz einzurichten. Auch die Empfängerprüfung sollte heute für jeden Mailserver und jede Firma zur Regel werden. Schade, dass Exchange diese Funktion nicht von Hause aus aktiviert hat. Vermutlich um all die Firmen zu schonen, die ein Relay zwischen Internet und Exchange betreiben.

Höherwertige Funktionen, wie z.B.: das "Lernen" von ausgehenden Verbindungen und eine entsprechende Nutzung dieses Wissens für eingehende Verbindungen sind nicht vorhanden. Dazu kommt, dass auch die RBL-Filter immer absolut wirken, d.h. wenn ihr Kommunikationspartner irrtümlich auf einer RBL-Liste steht, dann hilft es auch nicht, dass er ihnen eigentlich nur eine Antwort auf ihre Anfrage senden wollte.

Weitere Links