Schlagwort-Archive: Bash-Script

Blacklist für maildrop halbautomatisch erstellen

Auf meinem Uberspace nutze ich eine Kombination aus maildrop und Spamassassin um nervigem Spam schnell und ohne manuelles Eingreifen aus dem Verkehr zuziehen. Manchmal kommt es jedoch vor, dass eine E-Mail nicht als Spam erkannt wird oder – ebenfalls blöd – erwünschte Mails herausgefischt werden.

Mein Setup sieht vor das Mails zunächst gegen eine Whitelist geprüft werden, anschliesend folgt eine Blacklist und zuletzt, wenn weder Whitelist noch Blacklist angeschlagen haben folgt der Spamassassin. Wenn jetzt eine E-Mail von einem Spamabsender doch mal durchkommt habe ich bisher über SSH die Blacklist angepasst. Diese ist mittels der lookup-Funktion von maildrop angebunden.
Diesen Vorgang wollte ich nun Vereinfachen und habe ein kleines Script geschrieben, welches ein bestimmtes Verzeichnis im Maildir einliest und alle Mailadressen im ersten From-Header Zeilenweise in eine Blacklist schreibt. Die Einträge werden alphabetisch Sortiert und Dubletten entfernt.
So muss dann die entsprechende E-Mail nur noch in das Verzeichnis verschoben oder kopiert werden, um einen Blacklist-Eintrag zu erhalten.
Dieses Script, das nebenbei nach dem gleichen Muster auch eine Whitelist erstellt (falls der Spamassassin mal zu übereifrig ist), lasse ich mittels Runwhen einmal täglich ausführen. Nach der dem Durchlauf des Scripts können die Mails dann wieder aus dem Verzeichnis entfernt werden, die Einträge bleiben dabei natürlich erhalten.

Konfigurieren muss man bei Verwendung des Scripts die Variablen OUTPUT und INPUT:

  • OUTPUT – Hier gehört das Verzeichnis hinein wohin das Script die Listen schreiben soll, natürlich muss dieses Beschreibbar sein
  • INPUT – Diese Variable wird erst für den Durchlauf der Blacklist konfiguriert, hier gehört der Pfad zum Blacklist-Maildir hin
  • INPUT –Beim zweiten mal für den Durchlauf der Whitelist gehört der Pfad zum Whitelist-Maildir hin

Hier noch das gesamte Script:

Weitere Informationen zu maildrop und zur Einrichtung eines runwhen-Dienstes finden sich im Wiki der Ubernauten.

Update

Jetzt auch als Gist auf GitHub unter https://gist.github.com/golderweb/e02d405699588af09383 verfügbar, zum einfachen klonen oder forken.

Mein persönliches Uberspace-Init Script

Ich habe mir ein kleines Script gebastelt, mit dem ich neuen Uberspaces mit wenigen Befehlen einge Voreinstellungen verpassen kann.

Die Funktion in Kürze:

  • Einen Symlink für das Übergeordnete Verzeichnis der Pseudo-DOCUMENT_ROOTs. Zwar nicht unbedingt notwendig aber cd www ist schneller getippt wie cd /var/www/virtual/$USER
  • Vorbereitung für die Daemontools: uberspace-setup-svscan
  • Ein bin– und ein git-Verzeichnis – benötige ich öfters.
  • E-Mail Weiterleitung zu einer auszuwählenden E-Mail-Adresse, oder ins Maildir.
  • Außerdem hole ich mir noch angepasste bash Konfigurationsdateien, die ich bei github abgelegt habe.

Mit dem Parameter bash-config-update wird nur der letzte Punkt ausgeführt. Mit dem Parameter cleanup werden Sicherungskopien der bash Konfiguration von bash-config-update nach /dev/null befördert.

Wenn dir das Uberspace-Init Script gefällt darfst du es gerne unter den Bedingungen der GNU GPLv3 weiterverwenden. Du findest es unter https://gist.github.com/golderweb/4feb43ed41b49bd7bc27. Einfach den Quelltext kopieren, mit git clonen oder einen Github-Fork erstellen.