diff options
-rw-r--r-- | conf/modules.d/ratelimit.conf | 4 | ||||
-rw-r--r-- | src/plugins/lua/ratelimit.lua | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/conf/modules.d/ratelimit.conf b/conf/modules.d/ratelimit.conf index 08109b820..521bdb1a8 100644 --- a/conf/modules.d/ratelimit.conf +++ b/conf/modules.d/ratelimit.conf @@ -30,6 +30,10 @@ ratelimit { #} # If symbol is specified, then it is inserted instead of setting result #symbol = "R_RATELIMIT"; + + # If info_symbol is specified, then it is inserted next to set the result + #info_symbol = "R_RATELIMIT_INFO"; + whitelisted_rcpts = "postmaster,mailer-daemon"; max_rcpt = 5; diff --git a/src/plugins/lua/ratelimit.lua b/src/plugins/lua/ratelimit.lua index e060fe084..1d22f8838 100644 --- a/src/plugins/lua/ratelimit.lua +++ b/src/plugins/lua/ratelimit.lua @@ -377,8 +377,16 @@ local function ratelimit_cb(task) if err then rspamd_logger.errx('cannot check limit %s: %s %s', prefix, err, data) elseif type(data) == 'table' and data[1] and data[1] == 1 then - if settings.info_symbol then - task:insert_result(settings.info_symbol, 1.0, prefix) + -- set symbol only and do NOT soft reject + if settings.symbol then + task:insert_result(settings.symbol, 0.0, lim_name .. "(" .. prefix .. ")") + rspamd_logger.infox(task, + 'set_symbol_only: ratelimit "%s(%s)" exceeded, (%s / %s): %s (%s:%s dyn)', + lim_name, prefix, bucket[2], bucket[1], data[2], data[3], data[4]) + return + -- set INFO symbol and soft reject + elseif settings.info_symbol then + task:insert_result(settings.info_symbol, 1.0, lim_name .. "(" .. prefix .. ")") end rspamd_logger.infox(task, 'ratelimit "%s(%s)" exceeded, (%s / %s): %s (%s:%s dyn)', |