aboutsummaryrefslogtreecommitdiffstats
path: root/rules
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-03-11 13:59:58 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2017-03-11 13:59:58 +0000
commita1c871c9f6a29754f88867b077b67531dcb2a001 (patch)
tree3ca8dfa8e33356162c62eda6aa4cad0bd672ec18 /rules
parent6b2a4ed2d7ec14aafabb059ff583f8c1bcd85f9c (diff)
downloadrspamd-a1c871c9f6a29754f88867b077b67531dcb2a001.tar.gz
rspamd-a1c871c9f6a29754f88867b077b67531dcb2a001.zip
[Fix] Follow the traditional symbols conventions in RCPT_COUNT rule
Diffstat (limited to 'rules')
-rw-r--r--rules/headers_checks.lua98
1 files changed, 89 insertions, 9 deletions
diff --git a/rules/headers_checks.lua b/rules/headers_checks.lua
index fc041c57d..18785234e 100644
--- a/rules/headers_checks.lua
+++ b/rules/headers_checks.lua
@@ -20,16 +20,93 @@ local table = table
local fun = require "fun"
local E = {}
-rspamd_config.CHECK_RECEIVED = {
- callback = function (task)
+local rcvd_cb_id = rspamd_config:register_symbol{
+ name = 'CHECK_RECEIVED',
+ type = 'callback',
+ callback = function(task)
+ local cnts = {
+ [1] = 'ONE',
+ [2] = 'TWO',
+ [3] = 'THREE',
+ [5] = 'FIVE',
+ [7] = 'SEVEN',
+ [12] = 'TWELVE'
+ }
+ local def = 'ZERO'
local received = task:get_received_headers()
- received = fun.filter(function(h)
- return not h['artificial']
- end, received):totable()
- task:insert_result('RCVD_COUNT_' .. #received, 1.0)
+ local nreceived = fun.reduce(function(acc, rcvd)
+ return acc + 1
+ end, 0, fun.filter(function(h)
+ return not h['artificial']
+ end, received))
+
+ for k,v in pairs(cnts) do
+ if nreceived >= tonumber(k) then
+ def = v
+ end
+ end
+
+ task:insert_result('RCVD_COUNT_' .. def, 1.0, tostring(nreceived))
end
}
+rspamd_config:register_symbol{
+ name = 'RCVD_COUNT_ZERO',
+ score = 0.0,
+ parent = rcvd_cb_id,
+ type = 'virtual',
+ description = 'No received',
+ group = 'header',
+}
+rspamd_config:register_symbol{
+ name = 'RCVD_COUNT_ONE',
+ score = 0.0,
+ parent = rcvd_cb_id,
+ type = 'virtual',
+ description = 'One received',
+ group = 'header',
+}
+rspamd_config:register_symbol{
+ name = 'RCVD_COUNT_TWO',
+ score = 0.0,
+ parent = rcvd_cb_id,
+ type = 'virtual',
+ description = 'Two received',
+ group = 'header',
+}
+rspamd_config:register_symbol{
+ name = 'RCVD_COUNT_THREE',
+ score = 0.0,
+ parent = rcvd_cb_id,
+ type = 'virtual',
+ description = '3-5 received',
+ group = 'header',
+}
+rspamd_config:register_symbol{
+ name = 'RCVD_COUNT_FIVE',
+ score = 0.0,
+ parent = rcvd_cb_id,
+ type = 'virtual',
+ description = '5-7 received',
+ group = 'header',
+}
+rspamd_config:register_symbol{
+ name = 'RCVD_COUNT_SEVEN',
+ score = 0.0,
+ parent = rcvd_cb_id,
+ type = 'virtual',
+ description = '7-11 received',
+ group = 'header',
+}
+rspamd_config:register_symbol{
+ name = 'RCVD_COUNT_TWELVE',
+ score = 0.0,
+ parent = rcvd_cb_id,
+ type = 'virtual',
+ description = '12+ received',
+ group = 'header',
+}
+
rspamd_config.HAS_X_PRIO = {
callback = function (task)
local xprio = task:get_header('X-Priority');
@@ -149,6 +226,7 @@ rspamd_config:register_symbol{
description = 'Reply-To display name matches From',
group = 'header',
}
+-- XXX: fix it
rspamd_config:register_symbol{
name = 'FROM_NAME_HAS_TITLE',
score = 2.0,
@@ -159,8 +237,10 @@ rspamd_config:register_symbol{
}
rspamd_config:register_dependency(check_replyto_id, 'FROM_NAME_HAS_TITLE')
-local check_mime_id = rspamd_config:register_callback_symbol('CHECK_MIME', 1.0,
- function (task)
+local check_mime_id = rspamd_config:register_symbol{
+ name = 'CHECK_MIME',
+ type = 'callback',
+ callback = function(task)
local parts = task:get_parts()
if not parts then return false end
@@ -211,7 +291,7 @@ local check_mime_id = rspamd_config:register_callback_symbol('CHECK_MIME', 1.0,
end
end
end
-)
+}
rspamd_config:register_symbol{
name = 'MISSING_MIME_VERSION',