|
|
@@ -67,7 +67,6 @@ local default_config = { |
|
|
|
disable_ipv6 = false, |
|
|
|
symbols = symbols, |
|
|
|
external_relay = nil, |
|
|
|
external_map = nil, |
|
|
|
} |
|
|
|
|
|
|
|
local local_config = rspamd_config:get_all_opt('spf') |
|
|
@@ -90,7 +89,6 @@ local function spf_check_callback(task) |
|
|
|
local found = false |
|
|
|
|
|
|
|
for i,hdr in ipairs(rh) do |
|
|
|
--if hdr.real_ip and hdr.real_ip == local_config.external_relay then |
|
|
|
if hdr.real_ip and local_config.external_relay:get_key(hdr.real_ip) then |
|
|
|
-- We can use the next header as a source of IP address |
|
|
|
if rh[i + 1] then |
|
|
@@ -220,39 +218,13 @@ 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]] |
|
|
|
|
|
|
|
local function external_ip_spf(task) |
|
|
|
if local_config.external_relay then |
|
|
|
if local_config.external_relay:get_key(task:get_received_headers()) then |
|
|
|
task:insert_result('EXT_RELAY', 1.0, task:get_received_headers()) |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
if local_config.external_relay then |
|
|
|
local lua_maps = require "lua_maps" |
|
|
|
|
|
|
|
local_config.external_relay = lua_maps.map_add_from_ucl(local_config.external_relay, |
|
|
|
mtype: 'radix', description: 'External IP SPF map') |
|
|
|
"radix", "External IP SPF map") |
|
|
|
end |
|
|
|
|
|
|
|
rspamd_config:register_symbol{ |
|
|
|
type = 'normal' |
|
|
|
callback = external_ip_spf, |
|
|
|
name = 'EXT_RELAY' |
|
|
|
} |
|
|
|
|
|
|
|
for _,sym in pairs(local_config.symbols) do |
|
|
|
rspamd_config:register_symbol{ |
|
|
|
name = sym, |