Da in der letzten Zeit die Spam-E-Mails an unsere Fachschaftsratsadresse (und auch meine eigene Adresse) stark zunahmen, habe ich einen Filter entwickelt, der einen Großteil des Spams ausfiltern soll.
Diesen Spamfilter stelle ich hiermit auch anderen Interessierten zur Verfügung, die einen E-Mail-Account am Institut für Mathematik haben.
Da unsere FSR-Verteilerliste bereits über Procmail verwaltet wird, habe ich die selbe Technik auch für den Spam-Filter benutzt.
Hierbei kann in einem Skript festgelegt werden, wie hereinkommende E-Mails zu behandeln sind - dabei können anhand des Inhaltes der E-Mail jeweils andere Aktionen ausgeführt werden.
Bei der Erkennung wird der Spam zunächst mit einem X-Spam-gefunden
-Header
(mit Erläuterung) versehen. Später wird dann (zumindest in der Standard-Version)
alle Mail mit dieser Marke an eine andere Adresse weiterzuleiten. Dort sehe ich
jeweils regelmäßig nach, ob nicht doch eine eigentlich erwünschte E-Mail mit
ausgefiltert wurde.
Außerdem passe ich den Mailfilter regelmäßig an, da sich auch die Spammer ständig neue Methoden ausdenken, und so doch Mails durchkommen.
Um den Filter anzuwenden, gibt die Möglichkeiten, meine Spamfang-Adressen mitzubenutzen oder eigene zu verwenden. Auch die Speicherung in lokalen Dateien ist möglich.
Achtung: Es werden natürlich nur E-Mails gefiltert, die über die Mathe-Adresse eingehen. (Bei mir sind das alle, da bis auf eine geheime Adresse alle Adressen hierher weitergeleitet werden.)
Hierfür sind folgende Schritte hinreichend (über notwendig sage ich nichts - es geht garantiert auch anders):
.forward
im eigenen Home-Verzeichnis mit dem Inhalt
"|exec /usr/bin/procmail"Dies sorgt dafür, dass jede eingehende E-Mail an das Procmail-Programm verfüttert wird.
.procmailrc
im eigenen Home-Verzeichnis mit dem folgenden Inhalt
# Suchpfad für Programme PATH=/bin:/usr/bin:/usr/local/bin # Verzeichnis, in dem Mail abgelegt wird MAILDIR=$HOME/mail # Was passiert mit übrigbleibender Mail? DEFAULT=$MAILDIR/mbox # Hier ein Protokoll schreiben LOGFILE=$MAILDIR/procmail.log # Spamfilter einbinden INCLUDERC = /u/ebermann/mailfilter/spamfilter-default.rcWillst du die E-Mails nicht direkt (z.B. mit PINE) oder POP3 vom Mathe-Server lesen, sondern an eine andere Adresse weiterleiten lassen (wie du es vielleicht schon vorher mit der
.forward
-Datei gemacht hast), so kannst du
am Ende noch eine passende Regel einfügen (damit werden
alle nicht-weggefilterten Mails behandelt):
:0 ! ZieladresseAuch beliebige weitere Behandlungen (sogar die Einrichtung einer Mailingliste etc.) ist hiernach möglich. Ich empfehle bei Interesse das Lesen der Manual-Page (
man procmail
)
bzw. Suchen im Internet.
Nun werden alle Spam-Mails an die Adresse weitergeleitet, die ich dafür vorgesehen habe. Ich werde mir diese mehr oder weniger regelmäßig ansehen und abrufen.
Diese Variante ist also nur dann zu empfehlen, wenn du mir vollkommen vertraust - zunächst bezüglich Nicht-Böswilligkeit (ich versuche nicht, deine E-Mails abzufangen) und weiterhin, dass ich nicht zu faul bin (oder es vergesse), dir versehentlich gefilterte Adressen zuzuschicken.
Falls du meinst, dass sowieso nichts wichtiges an diese Adresse kommt, kannst du natürlich dich auch so verhalten :-)
Wenn du mich nicht mit dem aussortieren Spam belasten willst,
kannst du dich auch selbst drum kümmern.
Dazu kann man einfach nur den Erkennungs-Teil des Filters
nutzen. Abweichend zu oben sieht dann die .procmailrc
z.B. so aus:
# Suchpfad für Programme PATH=/bin:/usr/bin:/usr/local/bin # Verzeichnis, in dem Mail abgelegt wird MAILDIR=$HOME/mail # Was passiert mit übrigbleibender Mail? DEFAULT=$MAILDIR/mbox # Hier ein Protokoll schreiben LOGFILE=$MAILDIR/procmail.log # Spamerkennung INCLUDERC = /u/ebermann/mailfilter/spamerkennung.rc # Nun die eigentliche Entsorgung: :0 h * ^X-Spam-gefunden: ! Spamfang-Adresse
Statt weiterleiten an eine spezielle Adresse (mit !
)
kannst du sie auch in einer Datei oder einem Verzeichnis speichern
(einfach den Namen angeben - mit kompletten Pfad, $HOME steht
für das eigene Home-Verzeichnis) oder sie an ein Programm
weitergeben (mit |
und dem Programmnamen).
Man kann auch einfach gar nichts machen, sondern nur das
eigene Mail-Lese-Programm dies ausfiltern lassen.
Genauso wie oben kann man natürlich auch hier danach die Mail selbst weiterbehandeln.
Auch hier ist Vertrauen zu mir erforderlich, denn ich habe auch hier die Möglichkeit, jegliche Mail an euch abzufangen (oder mir auch nur eine Kopie schicken zu lassen). Ich bräuchte dazu nur eine zusätzliche Weiterleitungsregel in das Erkennungs-Skript aufnehmen.
Hierfür wäre aber Absicht notwendig, Faulheit alleine reicht nicht.
Um das ganze außerhalb des Mathe-Netztes nutzen zu können, kann man sich auch die Filter-Dateien herunterladen.
Allerdings hat man dann keine automatische Aktualisierung, wenn ich den Filter anpasse (meist täglich, manchmal seltener), und muss sich selbst darum kümmern, regelmäßig eine neue Filter-Datei zu bekommen. Außerdem müssen die verwendeten Pfade in den Dateien natürlich angepasst werden.
.procmailrc