Effektiv Spam bekämpfen mit Wegwerf-Mail-Adressen
in Open Source, Tipp | Tags: Email, LDAP, Postfix, SpamMan kann seinen Mail-Server leider nicht gegen jeden Spammer schützen, das ist klar. Es werden sich immer wieder neue Lücken für Unrat auftun. Seien es Sicherheitslücken oder auch derart, dass eine Email-Adresse publiziert werden muss. Zum Beispiel, wenn man Ansprechpartner für ein gewisses Thema ist. Deswegen habe ich über eine andere Alternative nachgedacht und dabei sind mir Einmal-Mail-Adressen in den Sinn gekommen. Die Idee dahinter: Email-Adressen, die automatisch ablaufen.
Dazu ist natürlich eine ganze Reihe von Infrastruktur notwendig. Deswegen eignen sich solche Spielchen nur, wenn man einen eigenen Mailserver betreibt, an dessen Regelwerk man auch noch ungefragt herumschrauben darf. Da ich Herr meines eigenen Postfix bin, kann ich mich hier vollstens austoben. Das heißt, obwohl ich hier nur die Idee vorstellen möchte, kann es sein, dass ich einige Postfix-Spezifika berühre. Man möge es mir verzeihen.
Das Konzept
Zunächst war die Idee eine andere: Man möchte wissen, welche schlampigen Institutionen die eigenen Daten weiterverkaufen. Man gibt einem Shop oder einer Webseite daher nicht die eigentliche private Mail-Adresse, sondern einen Alias, der nur für diese Webseite bestimmt ist. Zumeist werden diese Aliase in einem LDAP oder in der Datei /etc/aliases angelegt. Zum Beispiel legt man sich im eigenen LDAP eine Reihe von kryptischen Email-Adressen zu, die etwa ixfklhs7@meine-domain.de heißen. Trifft nun nach einer gewissen Zeit Spam an diese exklusiv vergebene Email-Adresse ein, so kann man a) den Betreiber auffordern, die Weitergabe abzustellen (Abmahnung etc.), oder auch b) ganz einfach relaxen und diesen Alias streichen.
Vorteil dieser Lösung ist: Sie macht nur mäßig Aufwand und ist relativ leicht zu adminstrieren.
Nachteile sind: Die Alias-Email-Adresse gilt für immer. Habe ich viele Websites, auf denen ich gelegentlich shoppe, so muss ich irgendwann dringend aufräumen (OK, solange ich nicht viel Spam auf diese Aliase erhalte, kann ich sie aktiviert lassen).
Die Zeit-Komponente
Weiter darüber nachgedacht, könnte man sich das Leben noch einfacher gestalten und die Alias-Email-Adresse automatisch löschen lassen. Man vergibt quasi ein Ablaufdatum an eine Email-Adresse. Damit ist eine Email-Adresse eine Art temporäres Kommunikations-Token. Nehmen wir mal an, man definiert ein Token für 3 Monate als gültig. Wer innerhalb dieser 3 Monate auf meine Email antwortet oder selbst eine Email verfasst, der kommt durch. Danach wird die Email als nicht-existent abgewiesen (“Local recipient unknown” etc.)
Der Vorteil: Ich muss mich nicht mehr bemühen, alte Alias zu löschen.
Der Nachteil: Ich muss mich um ständig neue Aliase kümmern.
Die Praxis
Egal, ob es sich um den ersten oder um den zweiten Ansatz handelt: Sicherlich ist alles organisatorisch zu lösen, schöner wäre doch aber eine transparente Lösung. Diese würde uns die Nachteile jeder Lösung teilweise wettmachen. Ich stelle mir das so vor:
1. Meinem Mail-Client gebe ich ein Häkchen mit “individuelle Email erzeugen”. Er schaut also ins LDAP und vergibt eine neue EMail-Adresse, in dem er gleich ein neues, temporäres Benutzer-Objekt anlegt. Dort wird auch das Ablaufdatum hinterlegt. Als Maildrop-Attribut wird meine richtige Adresse hinterlegt. Ich könnte dann noch die Domäne des Shops hinterlegen, um a) zu wissen, wofür ich das angelegt habe, und b) um den Empfang später auf diese Domäne einzuschränken.
2. Es wird nun die temporäre Email-Adresse zur Erzeugung der Email verwendet.
2. Postfix versendet diese Email nichts-wissend.
3. Ein mir unbekannter Absender schreibt diese Email an. Nun kann ich die Virtual Lookups im LDAP so gestalten, dass ein Suchmuster verwendet wird, was nur nicht-abgelaufene Aliase heraussucht. Dazu muss ich das LDAP-Query des Postfix entsprechend mit zwei oder mehr Suchparametern ausstatten:
1 | (&(mail=%s)(dtCreated>=20101012000000+0200)) |
(&(mail=%s)(dtCreated>=20101012000000+0200))
Das Datum muss also dynamisch übergeben werden. Sollte das technisch schwierig werden, bietet es sich vielleicht an, per Cronjob täglich einmal abgelaufene Aliase aus dem LDAP zu streichen oder ein bAktiv-Flag auf FALSE zu setzen. Dann kann auch ein statisches Suchmuster in Postfix angegeben werden. Kombinierbar wäre das Vorgehen ebenso mit einem Filter, der die Absender-Domäne im LDAP-Objekt mit prüft. Das beugt der Absenderfälschung zwar wenig vor, aber es gibt eine Menge Domains und bis die passende gefunden ist, sollte der Spammer auf eine der bekannten RBL-Listen auftauchen.
4. Wenn die Email abgelaufen ist, so wird sie nicht gefunden und damit die Mail nicht zugestellt. Das Postfach bleibt leer.
Alternativ zu diesem Vorgehen könnte der MTA-Client ein Loopup im LDAP machen. Findet er dort einen Eintrag für die Ziel-Email im Adressbuch (also ein Bekannter), wird die Email nicht umgeschrieben. Ist kein Eintrag vorhanden, wird transparent eine temporäre Email-Adresse verwendet. Das setzt allerdings gute Pflege des Adressbuchs voraus.
Fazit
Soviel zu meiner Idee, ich werde mich demnächst damit etwas praktischer beschäftigen und würde eventuell noch ein paar Code-Zeilen dazu posten. Wenn jemand Anmerkungen oder weiterführende Ideen hat, bitte ich um aktiven Beitrag. Vielleicht kennt jemand schon Plugins, die so etwas tun?
Leave a Reply