sign_condition =<<EOD return function(task) local smtp_from = task:get_from('smtp') local mime_from = task:get_from('mime') local rspamd_logger = require "rspamd_logger" if smtp_from[1]['domain'] ~= nil and smtp_from[1]['domain'] ~= '' then domain = smtp_from[1]['domain'] rspamd_logger.infox(task, "set domain found in smtp from field to %s", domain) if not task:get_user() then rspamd_logger.infox(task, "found domain in smtp header field, but user is not authenticated - skipped") return false end elseif mime_from[1]['domain'] ~= nil and mime_from[1]['domain'] ~= '' then domain = mime_from[1]['domain'] rspamd_logger.infox(task, "set domain found in mime from field to %s", domain) else rspamd_logger.infox(task, "cannot determine domain for dkim signing") return false end local keyfile = io.open("/data/dkim/keys/" .. domain .. ".dkim") if keyfile then rspamd_logger.infox(task, "found dkim key file for domain %s", domain) keyfile:close() return { key = "/data/dkim/keys/" .. domain .. ".dkim", domain = domain, selector = "dkim" } else rspamd_logger.infox(task, "no key file for domain %s - skipped", domain) end return false end EOD;