[rspamd] Frage: Eigenes Modul aktivieren
Carsten Rosenberg
cr at ncxs.de
Fr Mär 4 16:29:05 CET 2022
Hey
On 04.03.22 11:10, Achim Lammerts via Postfixbuch-users wrote:
> Guten Morgen,
> inzwischen bin ich dem Fehler bzgl. der Initialisierung von Modulen auf
> die Schliche gekommen. Allerdings gibt es nun einen anderen Fehler, den
> ich noch nicht verstehe:
>
> 2022-03-04 11:03:10 #1152774(rspamd_proxy) <b779e5>; proxy;
> lua_metric_symbol_callback: call to (MAIL2FILE) failed (2):
> /etc/rspamd/plugins.d//mail2file.lua:12: bad argument #1 to 'write'
> (string expected, got userdata); trace: [1]:{[C]:-1 - write [C]};
> [2]:{/etc/rspamd/plugins.d//mail2file.lua:12 - <unknown> [Lua]};
> Laut Doku liefert die Funktion einen String zurück:
> https://rspamd.com/doc/lua/rspamd_task.html#mcea29
>
task:get_message() gibt dir den Typ rspamd_text (userdata) zurück. Der
müsste für write erst mit tostring(messRaw) umgewandelt werden.
>
> Also probiere ich es mal mit *messFile:write('Test')*
> Dann funktioniert es. Es soll jedoch die Nachricht im Rohformat in die
> Datei gespeichert werden …
>
> Bei *rspamd_logger.infox(task, messRaw)* kommt übrigens auch nichts im
> log an. Was ist falsch?
>
rspamd_logger.infox sollte eigentlich userdata ausgeben können, aber als
2. Option wird wahrscheinlich auch hier ein String erwartet. Vielleicht
brauchts hier aber doch auch ein tostring. Rspamd meckert wenn aber
immer recht ordentlich.
> Vielen Dank für die Hilfe!
> LG/A
Rspamd hat eigentlich für alles auch schon interne Funktionen. Es geht
eigentlich immer recht gut im Lua Teil zu stöbern. Probiers mal so:
rspamd_config.MAIL2FILE = {
callback = function(task)
local messRaw = task:get_message()
local rspamd_logger = require 'rspamd_logger'
local rspamd_util = require "rspamd_util"
rspamd_logger.infox(task, 'MAIL2FILE - I am alive')
rspamd_logger.infox(task, 'MAIL2FILE - message: %s', tostring(messRaw))
local messFile = rspamd_util.create_file('/tmp/maildump/test')
if not messFile then
rspamd_logger.infox(task, "MAIL2FILE Couldn't open file: %s", err)
else
messRaw:save_in_file(messFile)
end
end
}
Viele Grüße
Carsten
Mehr Informationen über die Mailingliste Postfixbuch-users