rspamd_resolverThis module allows to resolve DNS names from LUA code. All resolving is executed asynchronously. Here is an example of name resolution:
local function symbol_callback(task)
local host = 'example.com'
local function dns_cb(resolver, to_resolve, results, err, _, authenticated)
if not results then
rspamd_logger.infox('DNS resolving of %1 failed: %2', host, err)
return
end
for _,r in ipairs(results) do
-- r is of type rspamd{ip} here, but it can be converted to string
rspamd_logger.infox('Resolved %1 to %2', host, tostring(r))
end
end
task:get_resolver():resolve_a(task:get_session(), task:get_mempool(),
host, dns_cb)
endFunctions:
Methods:
The module rspamd_resolver defines the following functions.
rspamd_resolver.init(ev_base, config)Parameters:
ev_base {event_base}: event base used for asynchronous eventsconfig {rspamd_config}: rspamd configuration parametersReturns:
{rspamd_resolver}: new resolver object associated with the specified baseBack to module description.
The module rspamd_resolver defines the following methods.
resolver:resolve_a(session, pool, host, callback)Resolve A record for a specified host.
Parameters:
session {async_session}: asynchronous session normally associated with rspamd task (task:get_session())pool {mempool}: memory pool for storing intermediate datahost {string}: name to resolvecallback {function}: callback function to be called upon name resolution is finished; must be of type function (resolver, to_resolve, results, err)Returns:
{boolean}: true if DNS request has been scheduledBack to module description.
resolver:resolve_ptr(session, pool, ip, callback)Resolve PTR record for a specified host.
Parameters:
session {async_session}: asynchronous session normally associated with rspamd task (task:get_session())pool {mempool}: memory pool for storing intermediate dataip {string}: name to resolve in string form (e.g. ‘8.8.8.8’ or ‘2001:dead::’)callback {function}: callback function to be called upon name resolution is finished; must be of type function (resolver, to_resolve, results, err)Returns:
{boolean}: true if DNS request has been scheduledBack to module description.
resolver:resolve_txt(session, pool, host, callback)Resolve TXT record for a specified host.
Parameters:
session {async_session}: asynchronous session normally associated with rspamd task (task:get_session())pool {mempool}: memory pool for storing intermediate datahost {string}: name to get TXT record forcallback {function}: callback function to be called upon name resolution is finished; must be of type function (resolver, to_resolve, results, err)Returns:
{boolean}: true if DNS request has been scheduledBack to module description.
resolver:resolve_mx(session, pool, host, callback)Resolve MX record for a specified host.
Parameters:
session {async_session}: asynchronous session normally associated with rspamd task (task:get_session())pool {mempool}: memory pool for storing intermediate datahost {string}: name to get MX record forcallback {function}: callback function to be called upon name resolution is finished; must be of type function (resolver, to_resolve, results, err)Returns:
{boolean}: true if DNS request has been scheduledBack to module description.
resolver:resolve_ns(session, pool, host, callback)Resolve NS records for a specified host.
Parameters:
session {async_session}: asynchronous session normally associated with rspamd task (task:get_session())pool {mempool}: memory pool for storing intermediate datahost {string}: name to get NS records forcallback {function}: callback function to be called upon name resolution is finished; must be of type function (resolver, to_resolve, results, err)Returns:
{boolean}: true if DNS request has been scheduledBack to module description.
Back to top.