From: Andrew Lewis Date: Mon, 22 Jun 2015 19:40:21 +0000 (+0200) Subject: Add whitelist_exception setting to RBL module X-Git-Tag: 0.9.7~13^2~1 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ea91b8335d462f6583a509b9733b3777a2d4f9b1;p=rspamd.git Add whitelist_exception setting to RBL module --- diff --git a/doc/markdown/modules/rbl.md b/doc/markdown/modules/rbl.md index 33c3a4c18..b5f797fd3 100644 --- a/doc/markdown/modules/rbl.md +++ b/doc/markdown/modules/rbl.md @@ -105,3 +105,8 @@ an_rbl { } ~~~ +The following extra settings are valid in the RBL subsection: + +- whitelist_exception + +(For whitelists) - Symbols named as parameters for this setting will not be used for neutralising blacklists (set this multiple times to add multiple exceptions). diff --git a/src/plugins/lua/rbl.lua b/src/plugins/lua/rbl.lua index eddb4c77b..6a4d5024c 100644 --- a/src/plugins/lua/rbl.lua +++ b/src/plugins/lua/rbl.lua @@ -353,7 +353,22 @@ for key,rbl in pairs(opts['rbls']) do if type(rspamd_config.get_api_version) ~= 'nil' then rspamd_config:register_virtual_symbol(s, 1) if(rbl['is_whitelist']) then - table.insert(white_symbols, s) + if type(rbl['whitelist_exception']) == 'string' then + if (rbl['whitelist_exception'] ~= s) then + table.insert(white_symbols, s) + end + elseif type(rbl['whitelist_exception']) == 'table' then + local foundException = false + for _, e in pairs(rbl['whitelist_exception']) do + if e == s then + foundException = true + break + end + end + if not foundException then + table.insert(white_symbols, s) + end + end else table.insert(black_symbols, s) end