diff options
-rw-r--r-- | src/plugins/lua/spf.lua | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/plugins/lua/spf.lua b/src/plugins/lua/spf.lua index f664661f9..10daa0d2b 100644 --- a/src/plugins/lua/spf.lua +++ b/src/plugins/lua/spf.lua @@ -93,8 +93,8 @@ local function spf_check_callback(task) -- We can use the next header as a source of IP address if rh[i + 1] then local nhdr = rh[i + 1] - lua_util.debugm(N, task, 'found external relay %s at received header %s -> %s', - local_config.external_relay, hdr, nhdr.real_ip) + lua_util.debugm(N, task, 'found external relay %s at received header number %s -> %s', + local_config.external_relay, i, nhdr.real_ip) if nhdr.real_ip then ip = nhdr.real_ip @@ -218,6 +218,19 @@ if local_config.whitelist then "radix", "SPF whitelist map") end +if local_config.external_relay then + local rspamd_ip = require "rspamd_ip" + local ip = rspamd_ip.from_string(local_config.external_relay) + + if not ip or not ip:is_valid() then + rspamd_logger.errx(rspamd_config, "invalid external relay IP: %s", + local_config.external_relay) + local_config.external_relay = nil + else + local_config.external_relay = ip + end +end + for _,sym in pairs(local_config.symbols) do rspamd_config:register_symbol{ name = sym, |