Rspamd - Custom LUA-Filter aktivieren
-
Hi, ich suche schon den halben Tag und habe auch die Dokumentation gelesen, leider bislang erfolglos.
Vielleicht habe ich ja hier Glück und jemand hatte schon mal ein ähnliches Problem.
Ich möchte einen LUA-Filter aktivieren/einschalten, der E-Mails mit einem spezifischen Betreff ("Spamtest") um 6 hochstuft:
rspamd.local.lua
:rspamd_config:register_symbol{ type = 'normal', -- or virtual, callback, prefilter or postfilter name = 'BAD_SUBJECT', callback = function(task) local util = require "rspamd_util" local sbj = task:get_header('Subject') if sbj then local my_sbj = sbj:lower() if my_sbj and my_sbj:find('spamtest') then return true end end return false end, score = 6.0, -- Metric score group = 'headers', -- Metric group description = 'Subject contains spamtest', flags = 'fine', -- fine: symbol is always checked, skip: symbol is always skipped, empty: symbol allows to be executed with no message -- priority = 2, -- useful for postfilters and prefilters to define order of execution }
Die Datei liegt zurzeit in
/etc/rspamd/rspamd.local.lua
.rspamadm configtest
sagt, es ist alles ok ... vermutlich, weil dieser Filter nicht aufgegriffen wird.Auch
rspamadm configgraph | grep lua
sagt nix.Nach der offiziellen Dokumentation https://rspamd.com/doc/developers/examples.html sollte diese Datei auch genau dort liegen.
Auf der Web-Oberfläche sehe ich dieses Symbol aber nicht und E-Mails mit diesem Betreff werden auch nicht gefiltert.
-
Es hat geklappt
cat /etc/rspamd/override.d/multimap.conf
:bad_subject { type = "header"; header = "subject"; filter = "full"; map = ["/.*spamtest.*/i"]; regexp = true; description = "Checks the subject against Spamtest ..."; symbol = "BAD_SUBJECT"; action = "rewrite subject"; score = 9.9; }
Diese Regel wird nun in
/etc/rspamd/modules.d/multimap.conf
inkludiert (das geschieht automatisch ...) und der Filter/das Symbol greift auch bei entsprechendem Betreff.Schönen Abend noch
-
Hab noch einmal bissel was geändert:
bad_subject { type = "header"; header = "subject"; filter = "headers"; map = ["/.*spamtest.*/iu"]; regexp = true; description = "Checks the subject against Spamtest ..."; symbol = "BAD_SUBJECT"; action = "add header"; score = 10.0; }
a)
filter = "headers";
, da "full" nach "Subject:" unnötigerweise auch im Body suchen würde
b)"/.*spamtest.*/iu"
, +"u", damit auch in non-ascii Betreffen (UTF8 und so) nach "spamtest" gesucht wird
c)"add header"
, damit (nur) ein Header hinzugefügt wird und die betreffende E-Mail in den Junk-Ordner gesteckt werden kann
d)score = 10.0;
, damit zusätzlich eine von mir eingestellte Spam-Schwelle erreicht wird (zwischen greylist+add header und rewrite subject+reject)Das passt alles und ist vielleicht für den ein oder anderen von euch auch von Interesse. (Falls nicht: lesen und vergessen.)
-
Der Filter
"headers"
ist fürtype = "header"
ungültig, es muss doch"full"
sein ... ansonsten funktioniert es zwar, 's gibt aber Fehlermeldungen im Log. Mea culpa ist hier aber die Doku.