Der Spamschlucker

Ein Mann.
Eine Mailbox.
Eine Herausforderung.

Spam-Statistik (Stand: 24.05.2013, 02:00 Uhr)

  letzte 24 Stunden 2013 seit 01/2007
stephan@spamschlucker.org 153 11.695 311.614
bm@schweinischer-bote.de 74 9.908 404.569
schlucks@gmx.net 17 4.012 97.098

Spamschlucker jetzt voll automatisiert

Seit gestern läuft der Spamschlucker voll automatisiert. Das bedeutet: Sämtliche Mailaccounts werden automatisiert abgefragt und alle Zahlen in einer Datenbank gespeichert. Charts und Tabellen werden aus diesen Werten automatisch generiert.

Abschied von Thunderbird

Spamschlucker: Thunderbird im Einsatz

Vom 01.01.2007 bis 31.12.2010 habe ich wöchentlich meine Spam-Accounts mit dem Mailprogramm Thunderbird abgerufen. Thunderbird hat dabei außerordentlich stabil und zuverlässig performt - besonders bemerkenswert angesichts der Tatsache, dass die Mailboxen am Schluss knapp 30 Gigabyte groß waren und ich regelmäßig mehrere tausend Mails auf einmal von einem Ordner in einen anderen verschob. Lediglich ein einziges Mal musste ich die Index-Datei neu anlegen (mehr) - ansonsten keine Abstürze und gute Performance (Spamschlucker: Thunderbird ist die Spamschlucker-Software der Wahl und Spamschlucker: Thunderbird als Ausbund der Stabilität).

Automatisierungpläne: Die Riesen-Spam-Datenbank

Vier Jahre lang habe ich einmal wöchentlich Thunderbird angeschmissen und meine Spam-Mails gecheckt. Die Anzahl habe ich jeweils in eine Excel-Tabelle eingetragen und daraus Diagramme erzeugt. Auf die Dauer war das ziemlich ätzend; aus informationstechnologischer Sicht war dieses höchst analoge Vorgehen auch alles andere als elegant.

Deshalb beschloss ich, die ganze Sache zu automatisieren. Mein ursprünglicher Plan, alle Mails in eine Datenbank zu schreiben und für jede Mail einen eigenen Blog-Eintrag erzeugen zu lassen, der die Header, Betreff, Textkörper und evtl. Anhänge der Spams enthielt, scheiterte aus zwei Gründen:

  1. Es war mir doch etwas zu heiß, unbesehen mehrere tausend Mails völlig zweifelhaften Ursprungs, teilweise mit Schadprogrammen versucht, auf meiner Website zu veröffentlichen. Letzt könnten über dieses System bspw. Terroristen kommunizieren (indem Sie einfach Mails an meine Spam-Adressen schicken).
  2. Auch in technischer Hinsicht gab es eine Menge Probleme. Ein automatisierter Mailabruf war fast unmöglich, da in vielen Spam-Mails eigenartige Zeichen verwendet werden, die PHP- und MySQL-Befehle zerhauen (also quasi unfreiwillige MySQL-Injections) - obwohl ich die gängigen problematischen Zeichen escapte oder einfach ersetzte. Dazu kam, dass eine große Menge Mails bzw. Mails mit größeren Anhängen abzuholen auf manchen Mailservern zu Timeouts führt. Ich hätte hier ab und an manuell eingreifen müssen, und das wollte ich vermeiden.

Also: Keine riesige Spam-Datenbank. Dabei reizt mich der Gedanke heute noch. Immerhin hätte ich damit als Nebeneffekt auch noch das hochfrequenteste Blog der Erde geschaffen - mehrere hunderttausend neue Beiträge im Jahr!

Realisierung mit PHP-imap, Cronjobs, MySQL und der Google-Chart-API

Die aktuelle Lösung sieht so aus:

  • Cronjobs rufen regelmäßig zwei Skripte auf, die auf den Mailservern die vorhandenen Spam-Mails zählen, die Zahlen in eine Datenbank schreiben und anschließend die Mails auf den Servern löschen. Das zweite Skript berechnet aus den vorhandenen Zahlen wichtige Größen (Spam-Mails gesamt, pro Woche, in diesem Jahr usw.) und aktualisiert eine entsprechende Tabelle; damit vermeide ich die Serverlast, die entstünde, wenn bei jedem Besuch der Website alle Berechnungen ad hoc vorgenommen werden würden.
  • Bestimmte Seiten des verwendeten CMS ExpressionEngine 2 generieren mit PHP den notwendigen Output. Während Tabellen einfach mit PHP/HTML erzeugt werden, benutze ich die Google-Chart-API. Unter Verwendung der Zahlen aus der Datenbank generieren die Skripte URLs, die entsprechende Diagramme zurückgeben. Die Diagramme werden per iframe eingebunden.

To come

(eher als Notiz an mich selbst:) Einige Statistiken müssen noch aufbereitet werden (die GET-URLs für die Google-Chart-API dürfen maximal 2kB lang sein, das ist ein ernstliches Problem; die Alternative mit POST bzw. Javascript zu arbeiten ist nicht besonders appetitlich). Außerdem muss ich noch einige Oberflächendinge anpassen (Paginierung, einige hässliche Designdetails). Kommentarvorschau dürfte auch noch nicht funktionieren. Das Suchfeld ist auch noch unstylish.

Eingetragen: 12.03.2011, 20:04 in Aktivitaeten

Permalink; 1828

Späterer Eintrag: Perfekt gemachter Phishing-Spam für WoW-Account

Früherer Eintrag: Spam-Mails verloren gegangen

4 Kommentare

  1. Der eine meint dazu:

    Ist ja langweilig. Meine Spam-Datenbank würde seit letztem Jahr 380 Millionen Spam Mails umfassen. Da ich aber nur die letzten 2 Monate aufheben, sind immer noch 40 Millionen Mails in der Datenbank.
    Und das ohne “Escapen” von Sonderzeichen. Wozu kann man schließlich Daten binär in der Datenbank speichern?


  2. Der andere meint dazu:

    Vielleicht sollten die Emaildiense einmal diese Daten zugesandt bekommen! Ein ganz schöner Haufen Arbeit, den Sie sich da aufbürden.


  3. Joaquin meint dazu:

    Interessant wäre hier aber auch noch, wie hoch das Spamaufkommen wirklich wäre, wenn nicht zuvor zahlreiche Mails durch die jeweilige Serversoftware zuvor heraus gefiltert würde. Hier wird doch in der Regel SpamAssasin verwendet.


  4. Paroli meint dazu:

    Der meiste Spam lässt sich ganz gut ausfiltern. Schwieriger ist es immer noch bei Mails mit ganz harmlosen Texten und zusätzlichen Grafiken, auf denen sich die Spaminhalte befinden.


Smileys

Angaben merken
Bei Antworten per E-Mail informieren