From 6d46ee795b3ef6e772ba754b263a8be37a12fe65 Mon Sep 17 00:00:00 2001 From: andryyy Date: Fri, 6 Nov 2020 12:26:01 +0100 Subject: [PATCH] [Rspamd] Log mail that was put into junk folder and keep a copy in quarantine --- data/conf/rspamd/local.d/metadata_exporter.conf | 4 +++- data/conf/rspamd/meta_exporter/pipe.php | 14 +++----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/data/conf/rspamd/local.d/metadata_exporter.conf b/data/conf/rspamd/local.d/metadata_exporter.conf index 877fd341..9fb22b23 100644 --- a/data/conf/rspamd/local.d/metadata_exporter.conf +++ b/data/conf/rspamd/local.d/metadata_exporter.conf @@ -53,7 +53,9 @@ return function(task) and not task:has_symbol('GLOBAL_RCPT_BL') and not task:has_symbol('MAILCOW_BLACK') then local action = task:get_metric_action('default') - return (action == 'reject') + if action == 'reject' or action == 'add header' then + return true + end end return false end diff --git a/data/conf/rspamd/meta_exporter/pipe.php b/data/conf/rspamd/meta_exporter/pipe.php index 63d0f7fd..88e66e8e 100644 --- a/data/conf/rspamd/meta_exporter/pipe.php +++ b/data/conf/rspamd/meta_exporter/pipe.php @@ -220,15 +220,8 @@ foreach (json_decode($rcpts, true) as $rcpt) { foreach ($rcpt_final_mailboxes as $rcpt_final) { error_log("QUARANTINE: quarantine pipe: processing quarantine message for rcpt " . $rcpt_final . PHP_EOL); try { - // Fall back to reject - if ($action == "add header") { - $action = "header"; - } - else { - $action = "reject"; - } - $stmt = $pdo->prepare("INSERT INTO `quarantine` (`qid`, `subject`, `score`, `sender`, `rcpt`, `symbols`, `user`, `ip`, `msg`, `action`, `fuzzy_hashes`, `type`) - VALUES (:qid, :subject, :score, :sender, :rcpt, :symbols, :user, :ip, :msg, :action, :fuzzy_hashes, :type)"); + $stmt = $pdo->prepare("INSERT INTO `quarantine` (`qid`, `subject`, `score`, `sender`, `rcpt`, `symbols`, `user`, `ip`, `msg`, `action`, `fuzzy_hashes`) + VALUES (:qid, :subject, :score, :sender, :rcpt, :symbols, :user, :ip, :msg, :action, :fuzzy_hashes)"); $stmt->execute(array( ':qid' => $qid, ':subject' => $subject, @@ -240,8 +233,7 @@ foreach ($rcpt_final_mailboxes as $rcpt_final) { ':ip' => $ip, ':msg' => $raw_data, ':action' => $action, - ':fuzzy_hashes' => $fuzzy, - ':type' => $action + ':fuzzy_hashes' => $fuzzy )); $stmt = $pdo->prepare('DELETE FROM `quarantine` WHERE `rcpt` = :rcpt AND `id` NOT IN ( SELECT `id`