From: Vsevolod Stakhov Date: Mon, 8 Jul 2024 18:22:25 +0000 (+0100) Subject: [Rework] Introduce dynamic_rate_limit for ratelimits X-Git-Tag: 3.9.0~4^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=69621218bc47eb54a0dffda7ce819c9309e42c67;p=thirdparty%2Frspamd.git [Rework] Introduce dynamic_rate_limit for ratelimits --- diff --git a/src/plugins/lua/ratelimit.lua b/src/plugins/lua/ratelimit.lua index add5741e8a..470ac5f074 100644 --- a/src/plugins/lua/ratelimit.lua +++ b/src/plugins/lua/ratelimit.lua @@ -42,6 +42,8 @@ local settings = { -- Do not check ratelimits for these recipients whitelisted_rcpts = { 'postmaster', 'mailer-daemon' }, prefix = 'RL', + -- If enabled, we apply dynamic rate limiting based on the verdict + dynamic_rate_limit = false, ham_factor_rate = 1.01, spam_factor_rate = 0.99, ham_factor_burst = 1.02, @@ -361,17 +363,19 @@ local function make_prefix(redis_key, name, bucket) local hash = settings.prefix .. string.sub(rspamd_hash.create(redis_key):base32(), 1, hash_len) -- Fill defaults + -- If settings.dynamic_rate_limit is false, then the default dynamic rate limits are 1.0 + -- We always allow per-bucket overrides of the dyn rate limits if not bucket.spam_factor_rate then - bucket.spam_factor_rate = settings.spam_factor_rate + bucket.spam_factor_rate = settings.dynamic_rate_limit and settings.spam_factor_rate or 1.0 end if not bucket.ham_factor_rate then - bucket.ham_factor_rate = settings.ham_factor_rate + bucket.ham_factor_rate = settings.dynamic_rate_limit and settings.ham_factor_rate or 1.0 end if not bucket.spam_factor_burst then - bucket.spam_factor_burst = settings.spam_factor_burst + bucket.spam_factor_burst = settings.dynamic_rate_limit and settings.spam_factor_burst or 1.0 end if not bucket.ham_factor_burst then - bucket.ham_factor_burst = settings.ham_factor_burst + bucket.ham_factor_burst = settings.dynamic_rate_limit and settings.ham_factor_burst or 1.0 end return {