From 9b8f8d728cebc0e0fe777f55d6d02cff9ea9e792 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 13 Jun 2016 19:06:16 +0100 Subject: [PATCH] [Feature] Enable forced resolving for some lua plugins Issue: #661 Reported by: @FelixSchwarz --- src/plugins/lua/dmarc.lua | 9 ++++++--- src/plugins/lua/once_received.lua | 3 ++- src/plugins/lua/rbl.lua | 23 ++++++++++++++++------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/plugins/lua/dmarc.lua b/src/plugins/lua/dmarc.lua index 063142f24..cb65a6875 100644 --- a/src/plugins/lua/dmarc.lua +++ b/src/plugins/lua/dmarc.lua @@ -80,7 +80,8 @@ local function dmarc_callback(task) task:get_resolver():resolve_txt({ task=task, name = resolve_name, - callback = dmarc_dns_cb}) + callback = dmarc_dns_cb, + forced = true}) return end @@ -182,7 +183,8 @@ local function dmarc_callback(task) task:get_resolver():resolve_txt({ task=task, name = resolve_name, - callback = dmarc_dns_cb}) + callback = dmarc_dns_cb, + forced = true}) return else @@ -263,7 +265,8 @@ local function dmarc_callback(task) task:get_resolver():resolve_txt({ task=task, name = resolve_name, - callback = dmarc_dns_cb}) + callback = dmarc_dns_cb, + forced = true}) end local opts = rspamd_config:get_all_opt('dmarc') diff --git a/src/plugins/lua/once_received.lua b/src/plugins/lua/once_received.lua index 341618429..63de22776 100644 --- a/src/plugins/lua/once_received.lua +++ b/src/plugins/lua/once_received.lua @@ -80,7 +80,8 @@ local function check_quantity_received (task) if (not hn or hn == 'unknown') and task_ip and task_ip:is_valid() then task:get_resolver():resolve_ptr({task = task, name = task_ip:to_string(), - callback = recv_dns_cb + callback = recv_dns_cb, + forced = true }) return end diff --git a/src/plugins/lua/rbl.lua b/src/plugins/lua/rbl.lua index 91e20dc5b..2a0042019 100644 --- a/src/plugins/lua/rbl.lua +++ b/src/plugins/lua/rbl.lua @@ -147,7 +147,8 @@ local function rbl_cb (task) task:get_resolver():resolve_a({task = task, name = havegot['helo'] .. '.' .. rbl['rbl'], callback = rbl_dns_cb, - option = k}) + option = k, + forced = true}) end)() end @@ -173,7 +174,8 @@ local function rbl_cb (task) task:get_resolver():resolve_a({task = task, name = d .. '.' .. rbl['rbl'], callback = rbl_dns_cb, - option = k}) + option = k, + forced = true}) end end)() end @@ -214,14 +216,16 @@ local function rbl_cb (task) task:get_resolver():resolve_a({task = task, name = domain .. '.' .. rbl['rbl'], callback = rbl_dns_cb, - option = k}) + option = k, + forced = true}) end else for _, email in pairs(havegot['emails']) do task:get_resolver():resolve_a({task = task, name = email .. '.' .. rbl['rbl'], callback = rbl_dns_cb, - option = k}) + option = k, + forced = true}) end end end)() @@ -242,7 +246,8 @@ local function rbl_cb (task) task:get_resolver():resolve_a({task = task, name = havegot['rdns'] .. '.' .. rbl['rbl'], callback = rbl_dns_cb, - option = k}) + option = k, + forced = true}) end)() end @@ -263,7 +268,8 @@ local function rbl_cb (task) task:get_resolver():resolve_a({task = task, name = ip_to_rbl(havegot['from'], rbl['rbl']), callback = rbl_dns_cb, - option = k}) + option = k, + forced = true}) end end)() end @@ -287,10 +293,13 @@ local function rbl_cb (task) ((rbl['exclude_private_ips'] and not rh['real_ip']:is_local()) or not rbl['exclude_private_ips']) and ((rbl['exclude_local_ips'] and not is_excluded_ip(rh['real_ip'])) or not rbl['exclude_local_ips']) then + -- Disable forced for received resolving, as we have no control on + -- those headers count task:get_resolver():resolve_a({task = task, name = ip_to_rbl(rh['real_ip'], rbl['rbl']), callback = rbl_dns_cb, - option = k}) + option = k, + forced = false}) end end end -- 2.39.5