#/etc/rspamd/local.d/multimap.conf
FROM_BLACKLISTED {
type = "header";
header = "From";
map = "${LOCAL_CONFDIR}/maps.d/blacklist_from.map";
regexp = true;
action = "reject"; # Prefilter mode
description = "Blacklist map for FROM_BLACKLISTED";
}
# /etc/rspamd/maps.d/blacklist_from.map
/cialis/i
/erektion/i
/errektion/i
/v[i!1][a@]gr[a@]/i # deckt unterschiedliche Schreibweisen von viagra ab
/voegeln/i
/poppen/i
/kaufland abteilung/i
/ficken/i
/sex[^yu]/i # findet sex, aber nicht sexy oder sexualkunde
/mcafee/i
/sofort abnehmen/i
/smava/i
/druckerpatronen.de/i
/bei arte/i
/bet-at-home/i
/jetzt klicken/i
/testsieger arte/i
/testsieger pro7/i
/k-tropfen/i
Damit das dann auch über die Weboberfläche ohne Fehlermeldung gepflegt werden kann, habe ich noch mit chmod 777 /etc/rspamd/maps.d
Schreibrechte gegeben.
In der Weboberfläche unter Smbols nach FROM_BLACKLISTED suchen und den Wert 15 eintragen (wenn eine RegEx in der Map zutrifft 15 Punkte geben).
Die Map checkt das From der Spammails nach den Zeichenketten, wenn die gefunden werden, gibt es Strafpunkte und die Mail wird gleich rejected. Die Mails werden mit der Fehlermeldung 554 5.7.1 Matched map: FROM_BLACKLISTED
rejected.
Die Website regex101.com ist nützlich beim ausprobieren der Regular Expressions.
Rspamd benutzt Hyperscan für die Regular Expressions. Alles, was nicht von Hyperscan unterstützt wird, sollte generell nicht in regulären Ausdrücken von Rspamd verwendet werden, ansonsten bekommt man im Logfile eine Fehlermeldung, wie diese: cannot create tree of regexp when processing ‘sex(?!y|u)’: Zero-width assertions are not supported.
Eine Zeile pro Regular Expression.
Jede startet und endet mit einem /, das i am Ende steht für Case insensitive match, als Groß- / Kleinschreibung ignorieren.
.* bedeutet beliebig viele Zeichen oder keines
\s steht für Leerzeichen / Whitespace
| steht für oder
$ steht für Ende der Zeile
[i!1] bedeutet, dass eines der Zeichen in den Klammern an die Stelle kommt, in dem Fall also i oder ! oder 1. Setzt man ein ? dahinter, bedeutet das, es könnte eines der Zeichen dort stehen, muss aber nicht. *? bedeutet, eines oder mehrere dieser Zeichen könnten dort stehen, muss aber nicht.
Hier ist der Beitrag, wie man die Betreffzeile filtert.