35 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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;
 |