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;
 |