diff options
author | Andrew Lewis <nerf@judo.za.org> | 2016-08-31 10:37:50 +0200 |
---|---|---|
committer | Andrew Lewis <nerf@judo.za.org> | 2016-08-31 10:37:50 +0200 |
commit | 169892ea1cf03e4f82d4ebd6e005cfebca3e8b55 (patch) | |
tree | 6b0cb93fc449f596f5f6ab026b3b692426b03b71 | |
parent | dacfdb076ba21ef1c3be5c9d7bb87723f74d952b (diff) | |
download | rspamd-169892ea1cf03e4f82d4ebd6e005cfebca3e8b55.tar.gz rspamd-169892ea1cf03e4f82d4ebd6e005cfebca3e8b55.zip |
[Feature] Support excluding selected users from ratelimits
-rw-r--r-- | src/plugins/lua/ratelimit.lua | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/plugins/lua/ratelimit.lua b/src/plugins/lua/ratelimit.lua index e261a9275..b80a122f1 100644 --- a/src/plugins/lua/ratelimit.lua +++ b/src/plugins/lua/ratelimit.lua @@ -42,6 +42,7 @@ local bounce_senders = {'postmaster', 'mailer-daemon', '', 'null', 'fetchmail-da -- Do not check ratelimits for these recipients local whitelisted_rcpts = {'postmaster', 'mailer-daemon'} local whitelisted_ip +local whitelisted_user local max_rcpt = 5 local redis_params local ratelimit_symbol @@ -346,7 +347,11 @@ local function rate_test_set(task, func) -- Get user (authuser) local auser = task:get_user() if auser and settings['user'][1] > 0 then - table.insert(args, {settings['user'], make_rate_key ('user', {['user'] = auser}) }) + if whitelisted_user and whitelisted_user:get_key(auser) then + rspamd_logger.infox(task, 'skip ratelimit for whitelisted user') + else + table.insert(args, {settings['user'], make_rate_key ('user', {['user'] = auser}) }) + end end local asn if settings['asn'][1] > 0 then @@ -470,6 +475,10 @@ if opts then whitelisted_ip = rspamd_config:add_radix_map(opts['whitelisted_ip'], 'Ratelimit whitelist ip map') end + if opts['whitelisted_user'] then + whitelisted_user = rspamd_config:add_kv_map(opts['whitelisted_user'], 'Ratelimit whitelist user map') + end + if opts['symbol'] then -- We want symbol instead of pre-result ratelimit_symbol = opts['symbol'] |