1local rspamd_dns = require "rspamd_dns" 2local logger = require "rspamd_logger" 3 4local function dns_sync_symbol(task) 5 local to_resolve = tostring(task:get_request_header('to-resolve')) 6 local is_ok, results = rspamd_dns.request({ 7 task = task, 8 type = 'a', 9 name = to_resolve , 10 }) 11 12 logger.errx(task, "is_ok=%1, results=%2, results[1]=%3", is_ok, results, results[1]) 13 14 if not is_ok then 15 task:insert_result('DNS_SYNC_ERROR', 1.0, results) 16 else 17 task:insert_result('DNS_SYNC', 1.0, tostring(results[1])) 18 end 19end 20 21rspamd_config:register_symbol({ 22 name = 'SIMPLE_DNS_SYNC', 23 score = 1.0, 24 callback = dns_sync_symbol, 25 no_squeeze = true, 26 flags = 'coro', 27}) 28 29 30-- Async request 31local function dns_symbol(task) 32 local function dns_cb(_, to_resolve, results, err) 33 logger.errx(task, "_=%1, to_resolve=%2, results=%3, err%4", _, to_resolve, results, err) 34 if err then 35 task:insert_result('DNS_ERROR', 1.0, err) 36 else 37 task:insert_result('DNS', 1.0, tostring(results[1])) 38 end 39 end 40 local to_resolve = tostring(task:get_request_header('to-resolve')) 41 42 task:get_resolver():resolve_a({ 43 task = task, 44 name = to_resolve, 45 callback = dns_cb 46 }) 47end 48 49rspamd_config:register_symbol({ 50 name = 'SIMPLE_DNS', 51 score = 1.0, 52 callback = dns_symbol, 53})