]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Reputation: Another try to fix split_symbols
authorVsevolod Stakhov <vsevolod@rspamd.com>
Wed, 18 May 2022 19:43:44 +0000 (20:43 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Wed, 18 May 2022 19:43:44 +0000 (20:43 +0100)
src/plugins/lua/reputation.lua

index b41f66f5126df7d8ba254df3603f9f2a58306daa..dd1cfd91337998a84ba10089510205b77021e144 100644 (file)
@@ -70,16 +70,29 @@ local function generic_reputation_calc(token, rule, mult, task)
 end
 
 local function add_symbol_score(task, rule, mult, params)
-  if not params then params = {tostring(mult)};
-
+  if not params then
+    params = {tostring(mult)}
   end
+
   if rule.selector.config.split_symbols then
+    local sym_spam = rule.symbol .. '_SPAM'
+    local sym_ham = rule.symbol .. '_HAM'
+    if not rule.static_symbols then
+      rule.static_symbols = {}
+      rule.static_symbols.ham = rspamd_config:get_symbol(sym_ham)
+      rule.static_symbols.spam = rspamd_config:get_symbol(sym_spam)
+    end
     if mult >= 0 then
-      task:insert_result(rule.symbol .. '_SPAM', mult, params)
+      task:insert_result(sym_spam, mult, params)
     else
-      -- We assume that `HAM` symbol has negative score...
-      -- It is probably good to verify on config stage (TODO)
-      task:insert_result(rule.symbol .. '_HAM', math.abs(mult), params)
+      -- Avoid multiplication of negative the `mult` by negative static score of the
+      -- ham symbol
+      if rule.static_symbols.ham and rule.static_symbols.ham.score then
+        if rule.static_symbols.ham.score < 0 then
+          mult = math.abs(mult)
+        end
+      end
+      task:insert_result(sym_ham, mult, params)
     end
   else
     task:insert_result(rule.symbol, mult, params)