Informationstechnologie

Mittel gegen NDR-Spam

Spam ist nicht nur für diejenigen ein Problem, die als Empfänger auf der Liste des Spammers stehen. Durch Spam werden eine Vielzahl von Emails generiert, die eigentlich unerwünscht sind und als Ursache den Spam haben. Das wird auch als Kollateral-Spam bezeichnet.

Eine Plage sind in letzter Zeit Tausende von NDR (non delivery reports), die die Postfächer unserer Kunden geflutet haben.

Bei Emails und natürlich auch Spam kann die Absenderadresse beliebig gefälscht werden. Daher nutzen viele Spammer für den Absender einige der Adressen, die sie sowieso schon in ihren Datenbanken haben.

Kann eine Spam-Mail beim Empfängerserver nicht zugestellt werden, etwa, weil es die Adresse dort nicht gibt, verhält sich der Empfägerserver so, wie es das SMTP-Protokoll vorschreibt: Er teilt dem (vermeintlichen) Absender mit, dass und weshalb diese Mail nicht zugestellt werden konnte.

Das hat für das Opfer, dessen Mailadresse als Absender missbraucht wurde, böse Folgen. Je nachdem, wieviele Emails der Spammer an falsche Empfängeradressen versendet, landen bis zu 50 Unzustellbarkeitsnachrichten pro Minute (!) in seinem Postfach. Der traurige Rekord, der uns bekannt ist, waren über 2000 Nachrichten nach einem Wochenende.

Das Filtern dieser unerwünschten Emails stößt auf Schwierigkeiten, da einige der gängigen Mechanismen in diesem Fall nicht greifen:
  • Das Überprüfen des Senders anhand von Blacklists wie sie etwa von spamhaus.org, dnsbl.sorbs.net oder bl.spamcop.net zur Verfügung gestellt werden, schlägt fehl, da die Unzustellbarkeitsnachricht ja vom Empfängerserver generiert wird. Dieser ist nicht gelistet.
  • Viele Spamfilter nutzen als wesentliches Kriterium, welche SMTP-Software die Emails versendet. So wird ein PHP-Mailer oder ein Perl-Skript deutlich öfter geblockt werden als ein Mailserver wie Postfix, Exim oder Microsoft Exchange. gerade von solchen "echten" Mailservern werden aber die Unzustellbarkeitsnachrichten erzeugt - entsprechend höher ist die Wahrscheinlichkeit, dass sie die Filter passieren.
  • Dasselbe gilt für weitere Spam-Merkmale wie HTML-Inhalte, Phishing-URLs etc. Unzustellbarkeitsnachrichten enthalten nichts derartiges.
  • Und schlussendlich wird kaum jemand sagen können: "OK - Unzustellbarkeitsnachrichten blocken wir generell.". Es könnte sich ja tatsächlich einmal bei einer regulären Email beim Empfänger irren - in diesem Fall will man ja eine Unzustellbarkeitsnachricht.

Wenn jemand einen eigenen Mailserver betreibt, kann er zumindest teilweise für Abhilfe sorgen.

Jede Email besteht aus einem Umschlag (Envelope), einem Kopf (Header) und dem Text (Body) der Email, evtl. noch mit Anhängen. Der Umschlag dient der Abwicklung des SMTP-Protokolls und ist an dieser Stelle uninteressant. Im Header stehen jedoch einige wichtige Informationen, die beim Filtern hilfreich sein können.

Rechts sehen Sie ein Beispiel eines solchen Headers. Wichtig ist, dass in der Unzustellbarkeitsnachricht immer auch der Header der Original-Nachricht enthalten ist.

Der Header enthält für jeden Mailserver, den die Email passiert hat, eine Zeile

Received from: Absender by Empfänger.

Das heißt, dass eine Unzustellbarkeitsnachricht, die auf eine Mail von uns generiert wird, immer unseren Mailserver in einer dieser "Received from"-Zeilen enthalten muss. Und das sind letztendlich die einzigen Unzustellbarkeitsnachrichten, die uns interessieren.


Wenn unser Mailserver in der Lage ist, anhand bestimmter Header-Zeilen zu filtern, lässt sich das Problem NDR-Spam wie folgt lösen:
  1. Als erstes wird eine Regel definiert, die alle Mails, die eine Zeile "from: unser-mail-server" enthalten, zulässt.
  2. Anschließend werden die Regeln definiert, die Emails mit Betreffs wie "Undeliverable Emails", etc. ablehnen. Hier wird man mit wenig Aufwand das Aufkommen von NDR-Spam bereits um deutlich über 95% reduzieren können.

Setzen Sie zum Beispiel Postfix als Mailer ein, könnte das wie folgt aussehen:

Eintrag in der Datei main.cf header_checks = regexp:/etc/postfix/header_checks
Einträge in der Datei header_checks /from fw2\.korb-it\.de/ FILTER smtp:interner-mailserver
/^Subject: Unzustellbar/ Discard
/^Subject: Undeliverable/ Discard
/^Subject: Returned mail/ Discard
/^Subject: failure notice/ Discard
/^Subject: \[--Formal Message--\] Undeliverable mail/ Discard
/^Subject: Delivery Status/ Discard
/^Subject: Mail delivery failed/ Discard
/^Subject: Undelivered Mail/ Discard
/^Subject: Mail could not be delivered/ Discard
/^Subject: Delivery Notification/ Discard

Die Zeile in der Datei main.cf sorgt dafür, dass jeder Header einer Email die in der Datei Header_Checks definierten Filter durchläuft.

In der Datei Header_Checks wird definiert, dass
  1. alles, was eine Reaktion auf eine Email unseres eigenen Servers (fw2.korb-it.de) ist, akzeptiert wird, und
  2. alles andere, was aussieht wie eine Unzustellbarkeitsnachricht, verworfen wird.


Es ist an dieser Stelle definitv sinnvoll, die eingehenden Emails einfach still und leise zu löschen, da jedes andere Verhalten den Kollateral-Spam noch verstärkt.

Für das Internet ist eine echte gefälschte Absenderadresse ja nur das zweitgrößte Übel. Stellen Sie sich vor, die Absenderadresse (etwa otto.korb@korb-it.de) existiert in ihrer Domäne auch nicht. Dann wird der Emailserver auf diese (überflüssige) Unzustrellbarkeitsnachricht mit einer weiteren Unzustellbarkeitsnachricht reagieren...