From: Vsevolod Stakhov Date: Wed, 18 May 2022 19:43:44 +0000 (+0100) Subject: [Minor] Reputation: Another try to fix split_symbols X-Git-Tag: 3.3~235 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1a673e2fbe24882365ad15636283e19a404623d1;p=rspamd.git [Minor] Reputation: Another try to fix split_symbols --- diff --git a/src/plugins/lua/reputation.lua b/src/plugins/lua/reputation.lua index b41f66f51..dd1cfd913 100644 --- a/src/plugins/lua/reputation.lua +++ b/src/plugins/lua/reputation.lua @@ -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)