Module rspamd_resolver

This module allows to resolve DNS names from LUA code. All resolving is executed asynchronously. Here is an example of name resolution:

Example:

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)
end

Brief content:

Functions:

rspamd_resolver.init(ev_base, config)

Methods:

resolver:resolve_a(session, pool, host, callback)

resolver:resolve_ptr(session, pool, ip, callback)

resolver:resolve_txt(session, pool, host, callback)

resolver:resolve_mx(session, pool, host, callback)

resolver:resolve_ns(session, pool, host, callback)

Functions

The module rspamd_resolver defines the following functions.

Function rspamd_resolver.init(ev_base, config)

Parameters:

  • ev_base {event_base}: event base used for asynchronous events
  • config {rspamd_config}: rspamd configuration parameters

Returns:

  • {rspamd_resolver}: new resolver object associated with the specified base

Back to module description.

Methods

The module rspamd_resolver defines the following methods.

Method 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 data
  • host {string}: name to resolve
  • 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 scheduled

Back to module description.

Method 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 data
  • ip {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 scheduled

Back to module description.

Method 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 data
  • host {string}: name to get TXT record for
  • 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 scheduled

Back to module description.

Method 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 data
  • host {string}: name to get MX record for
  • 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 scheduled

Back to module description.

Method 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 data
  • host {string}: name to get NS records for
  • 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 scheduled

Back to module description.

Back to top.