rules { QUARANTINE { backend = "http"; url = "http://nginx:9081/pipe.php"; selector = "reject_no_global_bl"; formatter = "default"; meta_headers = true; } RLINFO { backend = "http"; url = "http://nginx:9081/pipe_rl.php"; selector = "ratelimited"; formatter = "json"; } PUSHOVERMAIL { backend = "http"; url = "http://nginx:9081/pushover.php"; selector = "mailcow_rcpt"; formatter = "json"; meta_headers = true; } } custom_select { mailcow_rcpt = <<EOD return function(task) local action = task:get_metric_action('default') if task:has_symbol('NO_LOG_STAT') or (action == 'soft reject' or action == 'reject' or action == 'add header' or action == 'rewrite subject') then return false else if task:get_symbol("RCPT_MAILCOW_DOMAIN") then return true end return false end end EOD; ratelimited = <<EOD return function(task) local ratelimited = task:get_symbol("RATELIMITED") if ratelimited then return true end return false end EOD; reject_no_global_bl = <<EOD return function(task) if not task:has_symbol('GLOBAL_SMTP_FROM_BL') and not task:has_symbol('GLOBAL_MIME_FROM_BL') and not task:has_symbol('LOCAL_BL_ASN') and not task:has_symbol('GLOBAL_RCPT_BL') and not task:has_symbol('BAD_SUBJECT_00') and not task:has_symbol('MAILCOW_BLACK') then local action = task:get_metric_action('default') if action == 'reject' or action == 'add header' or action == 'rewrite subject' then return true end end return false end EOD; } custom_format { msgid = <<EOD return function(task) return task:get_message_id() end EOD; }