|  | @@ -23,40 +23,46 @@ auth_domain_map = rspamd_config:add_map({
 | 
	
		
			
				|  |  |    description = 'Map of domains we are authoritative for'
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -rspamd_config.ADD_DELIMITER_TAG = {
 | 
	
		
			
				|  |  | -  callback = function(task)
 | 
	
		
			
				|  |  | -    local tag = nil
 | 
	
		
			
				|  |  | -    local util = require("rspamd_util")
 | 
	
		
			
				|  |  | -    local rspamd_logger = require "rspamd_logger"
 | 
	
		
			
				|  |  | -    local user_tagged = task:get_recipients(2)[1]['user']
 | 
	
		
			
				|  |  | -    local domain = task:get_recipients(1)[1]['domain']
 | 
	
		
			
				|  |  | -    local user, tag = user_tagged:match("([^+]+)+(.*)")
 | 
	
		
			
				|  |  | -    local authdomain = auth_domain_map:get_key(domain)
 | 
	
		
			
				|  |  | +rspamd_config:register_post_filter(function(task)
 | 
	
		
			
				|  |  | +  local tag = nil
 | 
	
		
			
				|  |  | +  local util = require("rspamd_util")
 | 
	
		
			
				|  |  | +  local rspamd_logger = require "rspamd_logger"
 | 
	
		
			
				|  |  | +  local user_tagged = task:get_recipients(2)[1]['user']
 | 
	
		
			
				|  |  | +  local domain = task:get_recipients(1)[1]['domain']
 | 
	
		
			
				|  |  | +  local user, tag = user_tagged:match("([^+]+)+(.*)")
 | 
	
		
			
				|  |  | +  local authdomain = auth_domain_map:get_key(domain)
 | 
	
		
			
				|  |  | +  local action = task:get_metric_action('default')
 | 
	
		
			
				|  |  | +  local action = task:get_metric_action('default')
 | 
	
		
			
				|  |  | +  rspamd_logger.infox("metric action now: %s", action)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    if tag and authdomain then
 | 
	
		
			
				|  |  | -      rspamd_logger.infox("domain: %1, tag: %2", domain, tag)
 | 
	
		
			
				|  |  | -      local user_untagged = user .. '@' .. domain
 | 
	
		
			
				|  |  | -      rspamd_logger.infox("querying tag settings for user %1", user_untagged)
 | 
	
		
			
				|  |  | -      if modify_subject_map:get_key(user_untagged) then
 | 
	
		
			
				|  |  | -        rspamd_logger.infox("found user in map for subject rewrite")
 | 
	
		
			
				|  |  | -        local sbj = task:get_header('Subject')
 | 
	
		
			
				|  |  | -        new_sbj = '=?UTF-8?B?' .. tostring(util.encode_base64('[' .. tag .. '] ' .. sbj)) .. '?='
 | 
	
		
			
				|  |  | -        task:set_rmilter_reply({
 | 
	
		
			
				|  |  | -          remove_headers = {['Subject'] = 1},
 | 
	
		
			
				|  |  | -          add_headers = {['Subject'] = new_sbj}
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -      else
 | 
	
		
			
				|  |  | -        rspamd_logger.infox("add X-Moo-Tag header")
 | 
	
		
			
				|  |  | -        task:set_rmilter_reply({
 | 
	
		
			
				|  |  | -          add_headers = {['X-Moo-Tag'] = 'YES'}
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -      end
 | 
	
		
			
				|  |  | +  if action ~= 'no action' and action ~= 'greylist' then
 | 
	
		
			
				|  |  | +    return false
 | 
	
		
			
				|  |  | +  end
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  if tag and authdomain then
 | 
	
		
			
				|  |  | +    rspamd_logger.infox("domain: %1, tag: %2", domain, tag)
 | 
	
		
			
				|  |  | +    local user_untagged = user .. '@' .. domain
 | 
	
		
			
				|  |  | +    rspamd_logger.infox("querying tag settings for user %1", user_untagged)
 | 
	
		
			
				|  |  | +    if modify_subject_map:get_key(user_untagged) then
 | 
	
		
			
				|  |  | +      rspamd_logger.infox("found user in map for subject rewrite")
 | 
	
		
			
				|  |  | +      local sbj = task:get_header('Subject')
 | 
	
		
			
				|  |  | +      new_sbj = '=?UTF-8?B?' .. tostring(util.encode_base64('[' .. tag .. '] ' .. sbj)) .. '?='
 | 
	
		
			
				|  |  | +      task:set_rmilter_reply({
 | 
	
		
			
				|  |  | +        remove_headers = {['Subject'] = 1},
 | 
	
		
			
				|  |  | +        add_headers = {['Subject'] = new_sbj}
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  |      else
 | 
	
		
			
				|  |  | -      rspamd_logger.infox("skip delimiter handling for untagged message or authenticated user")
 | 
	
		
			
				|  |  | +      rspamd_logger.infox("add X-Moo-Tag header")
 | 
	
		
			
				|  |  | +      task:set_rmilter_reply({
 | 
	
		
			
				|  |  | +        add_headers = {['X-Moo-Tag'] = 'YES'}
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  |      end
 | 
	
		
			
				|  |  | -    return false
 | 
	
		
			
				|  |  | +  else
 | 
	
		
			
				|  |  | +    rspamd_logger.infox("skip delimiter handling for untagged message or authenticated user")
 | 
	
		
			
				|  |  |    end
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +  return false
 | 
	
		
			
				|  |  | +end)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  rspamd_config.MRAPTOR = {
 | 
	
		
			
				|  |  |    callback = function(task)
 |