diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-03-11 13:59:58 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-03-11 13:59:58 +0000 |
commit | a1c871c9f6a29754f88867b077b67531dcb2a001 (patch) | |
tree | 3ca8dfa8e33356162c62eda6aa4cad0bd672ec18 /rules | |
parent | 6b2a4ed2d7ec14aafabb059ff583f8c1bcd85f9c (diff) | |
download | rspamd-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.lua | 98 |
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', |