|
@@ -7,6 +7,60 @@ rspamd_config.MAILCOW_AUTH = {
|
|
|
end
|
|
|
}
|
|
|
|
|
|
+rspamd_config:register_symbol({
|
|
|
+ name = 'KEEP_SPAM',
|
|
|
+ type = 'prefilter',
|
|
|
+ callback = function(task)
|
|
|
+ local util = require("rspamd_util")
|
|
|
+ local rspamd_logger = require "rspamd_logger"
|
|
|
+ local rspamd_ip = require 'rspamd_ip'
|
|
|
+ local uname = task:get_user()
|
|
|
+ if uname then
|
|
|
+ return false
|
|
|
+ end
|
|
|
+ local redis_params = rspamd_parse_redis_server('keep_spam')
|
|
|
+ local ip = task:get_from_ip()
|
|
|
+ local from_ip_string = ip:to_string()
|
|
|
+ ip_check_table = {from_ip_string}
|
|
|
+ local maxbits = 128
|
|
|
+ local minbits = 32
|
|
|
+ if ip:get_version() == 4 then
|
|
|
+ maxbits = 32
|
|
|
+ minbits = 8
|
|
|
+ end
|
|
|
+ for i=maxbits,minbits,-1 do
|
|
|
+ local nip = ip:apply_mask(i):to_string() .. "/" .. i
|
|
|
+ table.insert(ip_check_table, nip)
|
|
|
+ end
|
|
|
+ local function keep_spam_cb(err, data)
|
|
|
+ if err then
|
|
|
+ rspamd_logger.infox(rspamd_config, "keep_spam query request for ip %s returned invalid or empty data (\"%s\") or error (\"%s\")", ip, data, err)
|
|
|
+ return false
|
|
|
+ else
|
|
|
+ for k,v in pairs(data) do
|
|
|
+ if (v and v ~= userdata and v == '1') then
|
|
|
+ rspamd_logger.infox(rspamd_config, "found ip in keep_spam map, setting pre-result", v)
|
|
|
+ task:set_pre_result('accept', 'IP matched with forward hosts')
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ table.insert(ip_check_table, 1, 'KEEP_SPAM')
|
|
|
+ local redis_ret_user = rspamd_redis_make_request(task,
|
|
|
+ redis_params, -- connect params
|
|
|
+ 'KEEP_SPAM', -- hash key
|
|
|
+ false, -- is write
|
|
|
+ keep_spam_cb, --callback
|
|
|
+ 'HMGET', -- command
|
|
|
+ ip_check_table -- arguments
|
|
|
+ )
|
|
|
+ if not redis_ret_user then
|
|
|
+ rspamd_logger.infox(rspamd_config, "cannot check keep_spam redis map")
|
|
|
+ end
|
|
|
+ end,
|
|
|
+ priority = 19
|
|
|
+})
|
|
|
+
|
|
|
rspamd_config:register_symbol({
|
|
|
name = 'TAG_MOO',
|
|
|
type = 'postfilter',
|