|
|
|
@ -829,6 +829,24 @@ local function gen_rbl_callback(rule) |
|
|
|
return true |
|
|
|
end |
|
|
|
|
|
|
|
local function check_mid(task, requests_table, whitelist) |
|
|
|
local function get_raw_header(name) |
|
|
|
return ((task:get_header_full(name) or {})[1] or {})['value'] |
|
|
|
end |
|
|
|
|
|
|
|
local mid = get_raw_header('Message-ID') |
|
|
|
if mid then |
|
|
|
local md = rspamd_util.parse_mail_address(mid, task:get_mempool()) |
|
|
|
lua_util.debugm(N, task, 'check message-id %s', md[1]) |
|
|
|
|
|
|
|
if md and md[1] and (md[1].addr and #md[1].addr > 0) then |
|
|
|
check_email_table(task, md[1], requests_table, whitelist, 'mid') |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
return true |
|
|
|
end |
|
|
|
|
|
|
|
-- Create function pipeline depending on rbl settings |
|
|
|
local pipeline = { |
|
|
|
is_alive, -- check monitored status |
|
|
|
@ -866,6 +884,10 @@ local function gen_rbl_callback(rule) |
|
|
|
pipeline[#pipeline + 1] = check_replyto |
|
|
|
description[#description + 1] = 'replyto' |
|
|
|
end |
|
|
|
if rule.mid then |
|
|
|
pipeline[#pipeline + 1] = check_mid |
|
|
|
description[#description + 1] = 'mid' |
|
|
|
end |
|
|
|
|
|
|
|
if rule.urls or rule.content_urls or rule.images or rule.numeric_urls then |
|
|
|
pipeline[#pipeline + 1] = check_urls |
|
|
|
@ -1028,7 +1050,7 @@ local function add_rbl(key, rbl, global_opts) |
|
|
|
end |
|
|
|
|
|
|
|
-- Check if rbl is available for empty tasks |
|
|
|
if not (rbl.emails or rbl.urls or rbl.dkim or rbl.received or rbl.selector or rbl.replyto) or |
|
|
|
if not (rbl.emails or rbl.urls or rbl.dkim or rbl.received or rbl.selector or rbl.replyto or rbl.mid) or |
|
|
|
rbl.is_empty then |
|
|
|
flags_tbl[#flags_tbl + 1] = 'empty' |
|
|
|
end |
|
|
|
@ -1118,7 +1140,7 @@ local function add_rbl(key, rbl, global_opts) |
|
|
|
end |
|
|
|
|
|
|
|
if not rbl.whitelist and not rbl.ignore_url_whitelist and (global_opts.url_whitelist or rbl.url_whitelist) and |
|
|
|
(rbl.urls or rbl.emails or rbl.dkim or rbl.replyto) and |
|
|
|
(rbl.urls or rbl.emails or rbl.dkim or rbl.replyto or rbl.mid) and |
|
|
|
not (rbl.from or rbl.received) then |
|
|
|
local def_type = 'set' |
|
|
|
rbl.whitelist = lua_maps.map_add_from_ucl(rbl.url_whitelist or global_opts.url_whitelist, def_type, |
|
|
|
|