Antispam

Angelegt Montag 12 Dezember 2022



Wie man Spam in Thunderbird vermeidet.


IP Adresse erkennen


E-Mail steht vor dem Kollaps. Immer mehr Spam verdeckt den Blick auf die wesentlichen Mails und ist mehr als lästig. Ich verwende den E-Mail Client Thunderbird (TB) um meine Mails abzuholen, zu lesen, zu sortieren und zu versenden. Ich habe Thunderbird den Vorzug vor Microsoft Outlook gegeben, weil es mir in diesem Programm leichter fällt etwas zu suchen oder die Kopfzeilen einer Mail anzuzeigen (Strg + u). Das Filtersystem von TB hat sehr gute Möglichkeiten eine Mail zu klassifizieren und entsprechend zu behandeln. Last but not least bleiben die Passwörter bei mir und sind nur in Thunderbird gespeichert. Bei Outlook habe ich den Eindruck, dass meine Credentials erst einmal in Kopie nach Redmond wandern und ich froh sein kann, wenn man mir anschließend meine Mails herausgibt, nachdem sie dort geprüft wurden.


Beim Kampf gegen Spam ( = unerwünschte Werbemails oder betrügerische Mails) ist es wichtig die genaue Herkunft einer Mail zu bestimmen. Das was sie als "Von:" in ihrer Mail lesen, sagt bei unseriösen Mails nichts über den wahren Urheber der Mail aus. Diese Eintragung kann leicht gefälscht werden. Das Internet wurde in den 70er und 80er Jahren von Studenten entwickelt, welche noch an das Gute glaubten und für die es nicht sehr wahrscheinlich war, dass Betrüger dieses Medium einmal missbrauchen werden. Da das SMTP Protokoll, welches für den Mailversand verwendet wird, ein einfaches TEXT-Protokoll ist, kann jeder der eine Tastatur bedienen kann einen gültige E-Mail zusammenstellen und auf den Weg bringen. Dazu reicht eine einfache Telnet-Verbindung zu einem SMTP Server.


Andere Daten einer Mail sind weniger leicht zu fälschen. Wenn der Spammer seine Mail für die Zustellung im Internet an seinen oder ihren Mail-Server übergibt, dann bekommt die Mail, wie auch in der realen Post, einen Eingangsstempel mit Datum, Uhrzeit und [IP Adresse des Absenders] in eckigen Klammern hinzugefügt. Den Eingangsstempel erzeugt der empfangende Server und kann daher vom Spam-Versender nicht beeinflusst werden.


Oft durchlaufen Mails bereits beim Versender oder auch beim Empfänger mehrere Server, bevor sie wirklich an einen Internet-Mailserver zur Zustellung in das Postfach übergeben werden. Diese "internen" Server benutzen oft interne, nicht routbare IP-Adressen aus den dafür vorgesehenen Adressbereichen für "private Netze".



Solche Adressen werden von einem gut konfigurierten Router blockiert und nicht in das Internet geroutet. Diese Adressen dienen der internen Kommunikation in einem LAN. Daher sind diese privaten Adressen für die Erkennung des Absenders einer Spam nicht von Bedeutung. Interessant wird es, wenn die Spam das heimische Netz des Spammers verlässt und einem SMTP Server mit öffentlich routbarer IP Adresse übergeben wird, der sich um die weitere Zustellung kümmert.


Diese Stelle in den Kopfzeilen der Mail zu finden ist die eigentlich spannende Aufgabe. Dabei ist das Wissen von Nutzen, dass Eingangsstempel nicht unten an die Mail angehängt werden, sondern oben vor die Mail geschrieben werden. Dies geschieht durch Hinzufügen von RECEIVED: Zeilen vor den Text der eingelieferten Mail. Wird eine solche Mail nach ihrem ersten Empfang durch einen Server (z.B. für die Virusprüfung) an einen weiteren Mail-Server weitergeleitet, dann schreibt dieser Server wieder eine RECEIVED Zeile vor den Text der empfangenen Mail - die Mail wird dadurch am oberen Ende einige Zeilen länger. Die geschieht so oft, bis die Mail bei ihrem Zielserver angekommen ist. Das ist der Mail-Server des Empfängers, der die Mail im Postfach speichert und wartet, dass der Adressat diese abholt und liest.


Beispiel für RECEIVED Zeilen:


Die RECEIVED Zeilen dienen u.a. dazu Mail-Loops zu verhindern. Als man diese entdeckt hatte, hängte man diese RECEIVED Zeilen an und verwendete zusätzlich die Regel, dass eine Mail, welche bereits den eigenen Eingangsstempel besaß und erneut empfangen wurde, gelöscht werden darf. Damit war maximal ein Loop möglich. Eine Ursache für solche Mail-Loops waren z.B. Abwesenheitsnachrichten oder automatische Weiterleitungen. Das kann auch über mehrere Stationen erfolgen: A → B → C → A.


Was ist also die Aufgabe?


Finde eine RECEIVED-Zeile in der Spam, welche:



Ich suche mir immer die "erste" öffentlich routbare IP Adresse, die der Spammer verwendet, nachdem die Spam dessen eigenes lokales Netzwerk verlassen hat. Im Beispiel oben ist das die [103.102.236.36]. Sie ist keine Adresse aus einem privaten Addressbereich, sie gehört nicht zu meinem Provider und sie ist in[..] Klammern geschrieben.


WHOIS-Analyse


Mit dieser IP-Adresse [103.102.236.36] haben wir den Mail-Server identifiziert, welcher die Spam als erster entgegengenommen hat und zu uns weitergeleitet hat. Wir kennen jetzt zwar seine IP -Adresse, aber nicht seinen Namen oder Standort - Informationen, die nützlich sein können, wenn es um die Klassifikation einer Mail als Spam, Betrug oder 'völlig legitim' geht. Angenommen Sie bekommen eine Mail von ihrer deutschen Bank, die auf den ersten Blick seriös aussieht und sogar das richtige Logo aufweist und dann stellen sie fest, dass der Mail-Server dieser Bank in Brasilien steht. Das ist natürlich nicht ausgeschlossen, es gibt schließlich Zweigstellen, aber es weckt Zweifel daran, dass die Mail eine "echte" Mail von ihrer Bank ist.


Wie kann man also feststellen, woher eine Mail kommt?


Dazu dient eine WHOIS-Abfrage. Die WHOIS-Datenbank kann entweder über eine Webseite durchgeführt werden, oder sie verwenden ein fortschrittliches Betriebssystem z.B. Linux, wo ein Kommandozeilenbefehl 'whois' installiert und verwendet werden kann.


Beispiel einer WHOIS Abfrage zu einer IP-Adresse:

Das Resultat der Abfrage teilt dann z.B. mit, dass der SMTP Server, welcher die Mail weitergeleitet hatte in Dhaka in Bangladesh (BD) steht und einem gewissen Salman Sakir oder zu dessen Netzwerk gehört.


So jetzt weiß ich schon eine ganze Menge über die Mail. Sie stammt aus dem Ausland und ein gewisser Herr Sakir ist im weitesten Sinne dafür verantwortlich, dass er entweder selbst oder einer seiner Kunden unaufgeforderte Werbe Mails versendet.


Jetzt brauche ich eine Strategie oder Regel, wie ich mit solchen Mails umgehen möchte. Man könnte versucht sein den Absender der Mail (Alpenfein Südtirol), so wie er in der From: Zeile notiert ist zu blockieren, aber wie wir bereits gehört haben, kann dieser Eintrag gefälscht sein. Jeder kann sich als jeder ausgeben - damit scheidet dieses Kriterium aus, weil ich davon ausgehen kann, dass der Spammer diese Adresse kein zweites Mal verwenden wird oder vielleicht sogar gestohlen hat (Identitätsdiebstahl).


Die nächst strengere Filter-Regel wäre die ganze Domain des Absenders zu sperren. Das wäre dann diese: isaemailmarketing.co . Doch was ist, wenn diese Domain nur kurze Zeit existiert und danach durch eine andere ausgetauscht wird?


Kriterium


Mein Kriterium für die Spamabwehr ist daher das Netzwerk, aus dem die Mail kommt. Es ist schwieriger sich neue IP-Adressen zu verschaffen als neue Namen für Dienste in diesen Netzwerken zu erfinden. Daher sind die IP-Adressen die konstante Größe, welche über längere Zeiträume bestimmten Benutzern oder schädlichen Aktivitäten zugeordnet werden können. Ich führe damit die "Sippenhaft" ein - Ein Netzadministrator der zulässt, dass aus seinem Netzwerk Spam versendet wird, hat sein Netz nicht im Griff. Daher blockiere ich zukünftig Mails aus diesem Netzwerk. Wer der konkrete Absender ist, wie seine Domain heißt oder welchen konkreten Mailserver er verwendet, ist mir egal. Ich nehme zukünftig keine Mails aus dem kompletten Netzwerk an.


Um ein Netzwerk zu definieren, welches zu einer Spam-Mail gehört nehme ich recht grobschlächtig die ersten 3 Zahlen aus der oben festgestellten IP-Adresse: Im Beispiel ist das dieses Netzwerk 103.102.236(.0)
Ich werde schließlich meinem Mail-Filter beibringen, keine Mails mehr anzunehmen, bzw. diese Mails zu löschen, welche eine Zeichenkette enthalten, in welcher das Wort: RECEIVED und [103.102.236 in einer Zeile vorkommen. Ich nehme die '[' Klammer mit, weil ich nur nach IP Adressen suche, welche mit der 103 beginnen. Ansonsten würde der Filter auch die Adressen 1.103.102.236, 2.103.102.236,...,255.103.102.236 filtern.


Diese Methode ist natürlich der Holzhammer, weil es durchaus kleine Netzwerke gibt, welche nur über 4, 8 oder 16 Adressen verfügen. Mit meiner Methode kann es passieren, dass auch "gute" Server in Nachbarnetzen keine Mails mehr an mich senden können, ich blockiere schließlich 254 Adressen. Aber das Risiko nehme ich in Kauf zumal mich Mails aus unbekannten Ländern nicht sonderlich interessieren, wenn ich dort niemanden kenne. Wenn ich gerade Zeit habe, gebe ich mir auch mehr Mühe das Netzwerk des Spammers noch genauer zu definieren, aber der Holzhammer funktioniert recht gut.


Ein Wort zur Vorsicht sei jedoch angemerkt. Wenn die Mail von einem bekannten Anbieter stammt, z.B. t-online.de, gmx.de, gmail.com,.. dann sollte man diese Strategie der Netzblockade nicht verwenden, da es sonst passieren kann, dass man von sehr vielen Menschen, Freunden und Bekannten keine Mails mehr erhält. In diesem Fall lohnt es aber direkt mit den Anbietern Kontakt aufzunehmen (abuse@..) und die Problematik anzusprechen. Große Anbieter, wie die gerade genannten, haben eigene Abteilungen, die sich um diese Missstände kümmern und ggf. Konten sperren. Bei der Meldung dort, sind jedoch die Kopfzeilen der Spam erforderlich, damit genau festgestellt werden kann, welcher Kunde die Mail versendet hat. Ich kopiere die komplette Mail einschließlich aller Kopfzeilen (Strg + u, Strg + c, Strg + v in TB) und sende sie an abuse@t-online.de, abuse@gmail.com, junk@office365.microsoft.com etc. Die genauen Adressen kann man in der whois-Abfrage nachlesen.


Halten wir fest: Als erstes müssen wir feststellen, welche IP Adresse ein SMTP Server hat, welcher die Spam weitergeleitet hat. Wenn diese Adresse bekannt ist bestimmen wir das Netzwerk, in dem sich diese Adresse befindet. Damit können wir nun einen Filter in TB anlegen bzw. erweitern.


Thunderbird Filter



TB verfügt im Extras-Menü über die Möglichkeit Filter zu definieren. Man kann dort für jedes definierte E-Mail Konto eine eigene Liste mit Filtern erzeugen. Sind mehrere Konten vorhanden, sollte zunächst das Konto gewählt werden, für das die Filter gelten sollen.


Im Bild ist die Filterliste für das Konto test@ poipoi.de noch leer. Eine neue Filterregel wird durch Drücken des "Neu..." Knopfes erzeugt.



Im ersten Schritt sollte dem Filter ein sprechender Name z.B. Spamkiller gegeben werden. Er dient nur dazu, dass der Anwender den Filter besser verwalten kann und später ggf. erweitern, korrigieren, aktivieren oder löschen kann. Der Name hat nichts mit der Filterwirkung zu tun und kann frei gewählt werden.


Die fünf Ankreuzfelder lassen wir unverändert. Sie dienen der genaueren Steuerung des Filters, sind jedoch passend voreingestellt.


Wichtig hingegen ist die Einstellung ob:



gewählt ist. Sind in dem noch weißen Fenster unterhalb dieser drei Auswahlfelder später mehrere Regeln definiert, dann wird der gesamte Filter nur wirksam, wenn entweder alle Regeln gleichzeitig zutreffen (UND), mindestens eine Regel zutrifft (ODER) oder keine Regel zutrifft (NICHT).


Ich entscheide mich bei mehreren Regeln für die ODER Einstellung, weil ich möchte, dass jede Mail für Spam erklärt wird, auf welche mindestens eine der Regeln zutrifft, die ich im Folgenden definieren werde.


Dort wo das Wort Betreff steht, kann ein Feld gewählt werden, welches in einer Mail auftreten kann. Dies schließt die Kopfzeilen ein. Wenn ein bestimmtes Kopfzeilenelement noch nicht in der Liste vorhanden ist, können über den Punkt "Anpassen..." weitere Felder definiert werden.


Als erstes definiere ich mir das Kopfzeilenelement: Received und gebe damit meinem Filter die Möglichkeit die RECEIVED: Zeilen der Mails zu filtern.



Dann kann ich die erste Regel meines Spamkiller Filters formulieren:



Dieser Filter durchsucht die Kopfzeilen einer Mail. Wenn er eine Received-Zeile findet, schaut er nach, ob die Zeichenkette "[103.102.236" in der gleichen Zeile enthalten ist. Wenn Ja, dann ist die Regel erfüllt und die unten gewählte Aktion "Löschen der Nachricht" wir auf der Mail ausgeführt.


Wenn ich morgen eine neue Spam von einem anderen Netzwerk erhalte, dann mache ich mir keinen neue Spamkiller Filter, sondern ich ergänze den vorhandenen Spamkiller-Regelsatz um eine weitere Regel, indem ich das "+" Zeichen drücke und eine weitere Zeile anfüge. Da ich "Mindestens eine Bedingung erfüllen" gewählt habe, werden alle Mails ausgefiltert und gelöscht, auf welche mindestens eine der Regeln zutrifft.


Ich habe also einen Spammkiller Filter aber potentiell viele hundert Regeln in diesem Filter - für jedes Spam-Netzwerk eine.


Das Fertige Resultat sieht dann im Filtermenü von TB so aus:



Über den Schalter Aktiviert kann ich die Regel temporär aus- oder einschalten. Mit Bearbeiten kann ich später Regeln zum Filter hinzufügen oder auch wieder löschen oder ändern.


Mein aktueller Spamkiller enthält einen Filter mit ca. 290 Regeln und sorgt dafür, dass ich fast keine Spam mehr erhalte. Man sieht daran, dass die Spam ihren Ursprung in nur wenigen kommerziell betriebenen Netzwerken haben, welche irgendwann in meinen Filter aufgenommen werden. Am Anfang kamen noch relativ häufig neue Spams. Je länger ich diese Technik anwende, desto weniger Spams schaffen es durch den Filter. Heute sind es nur noch einzelne pro Woche.