['default_exclude_local'] = true,
['default_no_ip'] = false,
['default_dkim_match_from'] = false,
+ ['default_selector_flatten'] = true,
}
local return_codes_schema = ts.map_of(
returnbits = return_bits_schema:is_optional(),
returncodes = return_codes_schema:is_optional(),
selector = ts.one_of{ts.string, ts.table}:is_optional(),
+ selector_flatten = ts.boolean:is_optional(),
symbol = ts.string:is_optional(),
symbols_prefixes = ts.map_of(ts.string, ts.string):is_optional(),
unknown = ts.boolean:is_optional(),
local res = selector(task)
if res then
- for _,r in ipairs(res) do
- add_dns_request(task, r, false, false, requests_table,
- selector_label, whitelist)
+ if rule.selector_flatten then
+ add_dns_request(task, table.concat(res, ''), false, false,
+ requests_table, selector_label, whitelist)
+ else
+ for _,r in ipairs(res) do
+ add_dns_request(task, r, false, false, requests_table,
+ selector_label, whitelist)
+ end
end
end
end
known_selectors[selector].id)
rbl.selectors[selector_label] = known_selectors[selector].selector
else
- -- Create a new flattened closure
- local sel = selectors.create_selector_closure(rspamd_config, selector, '', true)
+
+ local sel = selectors.create_selector_closure(rspamd_config, selector, '',
+ rbl.selector_flatten)
if not sel then
rspamd_logger.errx('invalid selector for rbl rule %s: %s', key, selector)