[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