Spam-Filterung verbessern

Kategorie: E-Mail
Erstellt: 25.11.2019
Aktualisiert: 31.08.2020

Dieses Dokument beschreibt wie die Spam-Filterung mit LiveConfig funktioniert und gibt einige Tipps wie die Erkennunsrate von Spam verbessert werden kann.

Übersicht

Im Idealfall gibt es mehrere Ebenen der Spam-Filterung:

  1. DNS-Blacklists - die IP-Adresse jeder eintreffenden Verbindung wird (in Echtzeit) mittels einer oder mehreren DNS-Blacklists überprüft. Wenn der Absender ein bekannter Spammer ist, wird die E-Mail mit einer entsprechenden Fehlermeldung abgelehnt.

  2. Greylisting - wenn eine E-Mail von einer bislang unbekannten Absender-IP eingeliefert wird, wird diese für ein paar Minuten vorübergehend abgelehnt. Jeder “normale” Mailserver versucht eine erneute Mailzustellung, viele Spam-Absender machen das aus Performance-Gründen nicht.

    E-Mails von großen, bekannten Absendern (wie Google Mail, Microsoft, etc.) können mittels einer DNS-Whitelist ohne Verzögerung akzeptiert werden.

  3. Inhalts-Analyse - der Inhalt einer E-Mail wird anhand einer langen Regel-Liste bewertet. Je höher die Bewertung, desto wahrscheinlicher ist die E-Mail “Spam”.

Die Reihenfolge ist dabei sehr wichtig: eine DNS-Blacklist-Anfrage ist sehr schnell und kann problemlos für hunderte Verbindungen gleichzeitig durchgeführt werden, während eine Inhaltsanalyse sehr ressourcenhungrig ist. Das Ziel ist also, so viel Spam wie möglich herauszufiltern bevor die “teuren” Inhalts-Analysen erfolgen.

Konfiguration

Um die Spam-Filterung zu aktivieren und zu konfigurieren, melden Sie sich als admin an und gehen auf Serververwaltung -> E-Mail. Bearbeiten Sie die Einstellungen von Postfix:

E-Mail-Spamfilter konfigurieren

DNS-Blacklists

Es gibt zahlreiche DNS-Blacklists, die meisten davon können kostenfrei genutzt werden. Aber sein Sie vorsichtig bei der Auswahl einer DNS-Blacklist - diese könnte darüber entscheiden welche E-Mails Ihr Server annimmt und welche er ablehnt. Verwenden Sie daher nur seriöse DNS-Blacklists, welche u.a. folgende Anforderungen erfüllen:

  • transparenter “unlisting”-Prozess
  • aktive Pflege (keine “toten” Listen)
  • kurze Aktualisierungs-Intervalle

Sie können mehrere DNS-Blacklists mit LiveConfig verwenden, diese werden dann nacheinander abgefragt. Wir empfehlen aber nicht mehr als 2-3 DNS-Blacklists einzurichten.

Einige Beispiele für DNS-Blacklists sind:

Greylisting

Die Idee hinter Greylisting ist, dass Spammer versuchen ihre E-Mails so schnell wie möglich herauszusenden ohne auf Fehler zu achten. Mit Greylisting merkt sich ein E-Mail-Server das Tripel aus Absender-IP, Absenderadresse und Empfängeradresse. Jede E-Mail mit einem bislang unbekannten Tripel wird für einige Minuten vorübergehend abgelehnt. Jeder korrekt eingerichtete Mailserver versucht die Zustellung erneut, so dass die Mail zwar kurz verzögert aber dennoch zugestellt wird.

Jedes Tripel einer erfolgreichen Zustellung wird in einer Datenbank gespeichert, so dass weitere E-Mails des selben Absenders künftig sofort durchgelassen werden.

Für Greylisting muss das Paket postgrey installiert sein.

Mit LiveConfig können Benutzer das Greylisting pro Postfach aktivieren. So kann man etwa das Greylisting für alle Postfächer aktivieren, mit Ausnahme einer E-Mail-Adresse wie z.B. notfall-support@example.org.

DNS-Whitelist

Wenn Greylisting aktiviert ist, können Sie optional eine DNS-Whitelist konfigurieren. Wenn die IP-Adresse einer eintreffenden Verbindung auf einer Whitelist gefunden wird, dann wird diese als legitim betrachtet und vom Blacklisting und Whitelisting ausgeschlossen.

Eine bekannte DNS-Whitelist ist dnswl.org. Um die dnswl.org-Whitelist zu nutzen und dabei nur “echte” Treffer (keine Fehlermeldungen) zu berücksichtigen, verwenden Sie die folgende Syntax:

list.dnswl.org=127.0.[0..255].[0..3]

Inhaltsanalyse: SpamAssassin

SpamAssassin ist eine freie Software zur Analyse von E-Mail-Inhalten. Sie müssen das Paket spamassassin installiert und am Laufen haben. Wenn Sie SpamAssassin mit LiveConfig aktivieren, wird ein Dienst namens lcsam (LiveConfig SpamAssassin Milter) eingerichtet und gestartet, welcher Postfix mit SpamAssassin verbindet.

Die Arbeitsweise von SpamAssassin ist recht einfach: es erhält eine E-Mail als Eingabe, und liefert eine Punktzahl zwischen -999 und +999 zurück, welche die Wahrscheinlichkeit beschreibt dass es sich bei der E-Mail um Spam handelt. Wenn ein Anwender als SpamAssassin für ein Postfach aktiviert, muss er zwei Schwellwerte definieren: einem ab dem E-Mails als “Spam-verdächtig” markiert werden sollen, einen anderen zum Ablehnen von E-Mails.

Wenn eine E-Mail den Ablehnungs-Schwellwert überschreitet, wird diese vom Mailserver nicht angenommen, d.h. der Mailserver des Absenders wird dem Absender einen Fehler melden. Wenn eine E-Mail nur den Warn-Schwellwert überschreitet, wird diese zugestellt, aber dem Mail-Betreff wird ***SPAM-Verdach*** vorangestellt (jeweils in der Sprache des LiveConfig-Benuters, der das Postfach angelegt/bearbeitet hat).

Ausführlicher Spam-Bericht

Jede mit SpamAssassin geprüfte E-Mail erhält drei zusätzliche Mail-Header:

  • X-Spam-Flag - ist immer NO (alle E-Mails mit YES werden automatisch abgelehnt)

  • X-Spam-Score - die von SpamAssassin berechnete Wahrscheinlichkeits-Punktzahl

  • X-Spam-Status - ein kompakter Spam-Status, der die Punktzahl, die konfigurierten Schwellwerte und die erfüllten Tests beschreibt. Beispiel:

    X-Spam-Status: No score=-0.7 tagged_above=3.0 required=5.0 tests=[RCVD_IN_DNSWL_LOW]

Optional kann lcsam einen ausführlichen Spam-Berichte an jede E-Mail anfügen (per X-Spam-Report:-Header). Um diesen zu aktivieren, führen Sie den Befehl systemctl edit lcsam.service aus und legen Sie folgenden Service-Override an:

[Service]
ExecStart=
ExecStart=/usr/lib/liveconfig/lcsam -g spamd -U postfix -r

Das fügt effektiv die Option -r zu lcsam hinzu. Starten Sie den Dienst dann neu (service lcsam restart).

Alle mit SpamAssassin gescannten E-Mails enthalten nun den zusätzlichen Header X-Spam-Report:, zum Beispiel:

X-Spam-Report: Spam detection software, running on the system "mx.example.org",
        has NOT identified this incoming email as spam.  The original
        message has been attached to this so you can view it or label
        similar future email.  If you have any questions, see
        @@CONTACT_ADDRESS@@ for details.
        
        Content preview:  [...]
           
        
        Content analysis details:   (-0.7 points, 5.0 required)
        
         pts rule name              description
        ---- ---------------------- --------------------------------------------------
        -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at http://www.dnswl.org/,
                                    low trust
                                    [198.51.100.100 listed in list.dnswl.org]

Die Liste der erfüllten Tests ist der wichtigste Teil für das Tuning von SpamAssassin. Sie können die Punktzahlen für einzelne Tests erhöhen und erniedrigen, indem Sie diese zu /etc/spamassassin/local.cf hinzufügen (vergessen Sie nicht, SpamAssassin anschließend neu zu laden).

Beispiel:

# E-Mails umgehend als SPAM markieren wenn diese in irgendeiner URI-Blacklist auftauchen:
score XPRIO 0
score URIBL_DBL_SPAM 6.0
score URIBL_BLACK 6.0
score RCVD_IN_BRBL_LASTEXT 6.0
score URIBL_ABUSE_SURBL 6.0

# URI-Blacklist-Prüfungen für einige bekannte Domains überspringen:
uridnsbl_skip_domain googleapis.com goo.gl googlegroups.com docs.google.com
uridnsbl_skip_domain youtu.be linkedin.com fbcdn.net licdn.com twimg.com redbox.com
uridnsbl_skip_domain amazon.ca amazonses.com amazonaws.com ssl-images-amazon.com images-amazon.com media-amazon.com
uridnsbl_skip_domain instagram.com pinterest.com pinimg.com facebookmail.com yahoodns.net tumblr.com
uridnsbl_skip_domain groupon.com grouponcdn.com office365.com booking.com

Standardwerte

Alle Standardeinstellungen für neue Postfächer (z.B. ob Greylisting aktiviert ist, oder die Schwellwerte für SpamAssassin) sind über LCDefaults konfigurierbar, siehe mail.greylisting.enabled, mail.spam.enabled, etc.

Empfehlungen

Unserer Erfahrung nach kann Greylisting bis zu 80% aller Spam-Mails filtern und ist dabei fast genauso treffsicher und wesentlich weniger ressourcenhungrig als SpamAssassin in dessen Standardkonfiguration. Zudem glauben wir, dass Bayer-Filter stark überbewertet sind.

Wir empfehlen

  • DNS-Blacklists zu aktivieren (2-3, nur vertrauenswürdige!)
  • Greylisting zu aktivieren
  • eine DNS-Whiteliste zu verwenden
  • SpamAssassin zu aktivieren, Warn-Schwellwert 2.6-2.8, Ablehnung bei etwa 5.0 Punkten

Abschließend raten wir noch dringend davon ab, verdächtige E-Mails automatisiert in einen “Spam-Ordner” zu verschieben. Die meisten Anwender schauen nicht regelmäßig (wenn überhaupt) in diesen Ordner und könnten daher wichtige E-Mails übersehen. LiveConfig bietet daher bewusst nicht diese Funktion, mit einem Sieve-Script wäre das aber machbar.

Fehlersuche

  • /var/run/spamd.sock wird nicht erstellt, aber SpamAssassin läuft nicht

    Vermutlich haben Sie SpamAssassin neu installiert oder dessen Konfiguration überschrieben.

    1. beenden Sie SpamAssassin: service spamassassin stop

    2. bearbeiten Sie die Datei /etc/defaults/spamsassassin. Suchen Sie nach der Zeile, die mit OPTIONS= beginnt, kommentieren Sie diese aus und fügen folgende Zeile ein:

      OPTIONS="-m 5 -H --socketpath=/var/run/spamd.sock --socketowner=root --socketgroup=spamd --socketmode=0660 -x --virtual-config-dir=/var/lib/spamassassin/%u/ -u spamd"
    3. starten Sie SpamAssassin neu: service spamassassin start