瀏覽代碼

Quarantine notifications - don't send if sender is blacklisted (#3428)

Signed-off-by: Kristián Feldsam <feldsam@gmail.com>
Kristian Feldsam 5 年之前
父節點
當前提交
fd49958a00
共有 1 個文件被更改,包括 4 次插入1 次删除
  1. 4 1
      data/Dockerfiles/dovecot/quarantine_notify.py

+ 4 - 1
data/Dockerfiles/dovecot/quarantine_notify.py

@@ -97,7 +97,10 @@ def notify_rcpt(rcpt, msg_count, quarantine_acl):
       print('%s'  % (ex))
       time.sleep(3)
 
-records = query_mysql('SELECT IFNULL(user_acl.quarantine, 0) AS quarantine_acl, count(id) AS counter, rcpt FROM quarantine LEFT OUTER JOIN user_acl ON user_acl.username = rcpt WHERE notified = 0 AND rcpt in (SELECT username FROM mailbox) GROUP BY rcpt')
+records = query_mysql('SELECT IFNULL(user_acl.quarantine, 0) AS quarantine_acl, count(id) AS counter, rcpt, sender FROM quarantine LEFT OUTER JOIN user_acl ON user_acl.username = rcpt WHERE notified = 0 AND rcpt in (SELECT username FROM mailbox)
+# dont send notifications for blacklisted senders
+AND (SELECT prefid FROM filterconf WHERE option = "blacklist_from" AND (object = rcpt OR object = SUBSTRING(rcpt, LOCATE("@", rcpt) + 1)) AND sender REGEXP(REPLACE(value, '*', '.+'))) IS NULL
+GROUP BY rcpt')
 
 for record in records:
   attrs = ''