Die letzten 5%

Antispam;- Spam;- Postfix;- Bash;-

Jeder gute Admin hat auf seinen Systemen verschiedene Stapel von Spam-Schutz Mechanismen eingebaut. Amavis, Spamassassin, etc. und daneben natürlich auch: Aktuelle Verschlüsselung, Zugangsbeschränkungen, automatische Blocklisten (Spamhouse und Co.), DKIM, etc. PP…

Trotzdem schaffen es einige Spammer doch immer wieder mal ihrem Müll durchzubringen. Ist nicht viel, aber den lieben Admin nerft es dann doch, weil es ihn einfach ärgert.

Man könnte … Nur sind die meisten Maßnahmen entweder nicht überzeugend oder einfach viel zu händisch, und Admin hasst unnötige Arbeit.

Für Postfix gibt es Blocklisten. Das sind primär einfache Textfiles, die in binäre DB überführt werden, damit Postfix sie schneller verarbeiten kann.

Dann brauchen wir noch die Spam-Domains, und die liegen sogar schon als gesammelter Spam in Spam-Ordner vor. 🙂

Muss Admin also nur noch rauspulen, einfaches Bash-Scripting reicht dafür. Beispiel für MBox-Format:

find $PATH_TO_SPAM_EMAILS -iname '*Junk*' -not -iname '*.msf' | while read F ; do grep -e 'Received: from' "${F}" ; done | awk '{print $3}' | sort | uniq -ci | sort -h

Das gibt uns dann z.B. sowas:

      5 blabla.com
      6 blabla.at
 [...]
     16 bindoof.li
     22 undgemein.es
 [...]
    972 meineserver.tdl

Coool! 😃

Klar meine Server, localhost, etc. nehmen wir über eine Filterliste noch raus und aus den übrigen Ergebnissen, alle ab einer Startzahl - die richtet sich ja nach Vorlieben aber vor allen nach Aufwand, schließlich wollen wir ja keinen sperren der da nur zufällig mal draufgeraten ist. Halt ein möglichst sinnvoller Schwellenwert.

Nun brauchen wir nur noch die Domain'en davon nach /etc/postfix/bogus_senders in der Form:

spamdomain.tdl    REJECT You may a Spammer

zu schreiben und mit:

#- erzeugen der binär DB's
cd /etc/postfix
postmap bogus_senders
rcpostfix restart
#- ggf.
# rcpostfix status

das Ganze zu aktivieren. Ab dann werden alle eingetragenen Domain'en von Postfix (mit genanntem Grund) abgewiesen. Und so gut sie auch waren und sich viell^Whoffentlich richtig viel Arbeit gemacht haben… Ätsch! 😛

Den Prozess automatisieren. Ist, je mach Umgebung immer anders, darum nur grob beschrieben.

  • Es gibt einen Ordner mit den (durchgekommenen) Spammails. Nur von Menschen erkannter (richtiger) Spam kommt da rein.
  • Der wird nach $T Zeit (~=1Tag je nach Aufkommen) auf oben beschriebene Art ausgewertet.
  • Aus allen Treffern werden die eingenen Domain'en ausgefiltert.
  • Zusätzlich ausgefiltert wird noch die Allow-Liste, wo man z.B. Externe einträgt, die aus Umständen immer wieder zu Unrecht im Spam landen.
  • Es gibt eine Last-Seen-Liste, wo alle Domains mit letztem Sichtungsdatum aufgeführt sind. Alle älteren als $TV Verfallszeit, werden gelöscht, nachdem die neuen hinzugekommen sind.
  • Eventuell gibt es auch eine Deny-Liste, wo die immer zu blockierenden aufgeführt sind.
  • Das Ergebnis wird entsprechend aufbereitet, in die DB geschrieben und aktiviert.

Um das noch effektiver zu machen, braucht es: Mehr Daten!

Naja, eigentlich mehr Teilnehmer. Was ja auf manchem Hosting durchaus vorkommen soll, dass es viele, möglicherweise sogar als IMAP, betriebene Email-Konten gibt.

Dann kann Admin das nämlich auch als zentralen Spam-Drop allen Nutzern zu Verfügung stellen. (!) Achtung! Sollte gegen Automatismen möglichst gesperrt sein. Dadurch werden es mehr Treffer und in der Folge sinkt die Rate der False-Posivives, so die Schwellenwerte richtig angepasst werden.

Alles nicht so schwer. Bildung hilft. Nachdenken auch.

Viel Spaß damit!

  • Zuletzt geändert: 2021-01-05 17:29
  • von Admin