From: Vsevolod Stakhov Date: Sun, 16 Jan 2022 20:20:34 +0000 (+0000) Subject: [Minor] Fix for random monitored X-Git-Tag: 3.2~94 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e27291f671d8707f2f98d62448b0fdf4f205fcd0;p=thirdparty%2Frspamd.git [Minor] Fix for random monitored Reported by: @moisseev --- diff --git a/lualib/plugins/rbl.lua b/lualib/plugins/rbl.lua index 973ba33c76..2b0630164f 100644 --- a/lualib/plugins/rbl.lua +++ b/lualib/plugins/rbl.lua @@ -109,6 +109,7 @@ local rule_schema_tbl = { monitored_address = ts.string:is_optional(), no_ip = ts.boolean:is_optional(), process_script = ts.string:is_optional(), + random_monitored = ts.boolean:is_optional(), rbl = ts.string, rdns = ts.boolean:is_optional(), received = ts.boolean:is_optional(), diff --git a/src/plugins/lua/rbl.lua b/src/plugins/lua/rbl.lua index 22305aa1f6..49b67221f0 100644 --- a/src/plugins/lua/rbl.lua +++ b/src/plugins/lua/rbl.lua @@ -48,12 +48,18 @@ local url_flag_bits = rspamd_url.flags local function get_monitored(rbl) local function is_random_monitored() - return (rbl.dkim - or rbl.urls - or rbl.emails - or rbl.no_ip - or rbl.rdns - or rbl.helo) + -- Explicit definition + if type(rbl.random_monitored) == 'boolean' then + return rbl.random_monitored + end + + -- We check 127.0.0.1 for merely RBLs with `from` or `received` and only if + -- they don't have `no_ip` attribute at the same time + -- + -- Convert to a boolean variable using the common idiom + return (not (rbl.from or rbl.received) + or rbl.no_ip) + and true or false end local default_monitored = '1.0.0.127'