From 7e154f7d5410f7bdae4021f202f40e68c9ea151e Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 3 Sep 2014 18:34:38 +0100 Subject: [PATCH] Fix maillist plugin. --- src/plugins/lua/maillist.lua | 124 ++++++++++++++++------------------- 1 file changed, 58 insertions(+), 66 deletions(-) diff --git a/src/plugins/lua/maillist.lua b/src/plugins/lua/maillist.lua index f9c534fce..d265e1518 100644 --- a/src/plugins/lua/maillist.lua +++ b/src/plugins/lua/maillist.lua @@ -10,33 +10,32 @@ local rspamd_logger = require "rspamd_logger" -- List-Unsubscribe: ') then + header = task:get_header('list-subscribe') + if not header or not string.find(header, '') then return false end - header = message:get_header('list-unsubscribe') - if not header or not string.find(header[1], '') then + header = task:get_header('list-unsubscribe') + if not header or not string.find(header, '') then return false end @@ -115,37 +113,36 @@ end -- List-Owner: -- List-Post: NO local function check_ml_subscriberu(task) - local message = task:get_message() -- List-Id - local header = message:get_header('list-id') - if not header or not string.find(header[1], '^<.*%.subscribe%.ru>$') then + local header = task:get_header('list-id') + if not header or not string.find(header, '^<.*%.subscribe%.ru>$') then return false end -- Precedence - header = message:get_header('precedence') - if not header or not string.match(header[1], '^normal$') then + header = task:get_header('precedence') + if not header or not string.match(header, '^normal$') then return false end -- Other headers - header = message:get_header('list-archive') - if not header or not string.find(header[1], '^$') then + header = task:get_header('list-archive') + if not header or not string.find(header, '^$') then return false end - header = message:get_header('list-owner') - if not header or not string.find(header[1], '^$') then + header = task:get_header('list-owner') + if not header or not string.find(header, '^$') then return false end - header = message:get_header('list-help') - if not header or not string.find(header[1], '^$') then + header = task:get_header('list-help') + if not header or not string.find(header, '^$') then return false end -- Subscribe and unsubscribe - header = message:get_header('list-subscribe') - if not header or not string.find(header[1], '^$') then + header = task:get_header('list-subscribe') + if not header or not string.find(header, '^$') then return false end - header = message:get_header('list-unsubscribe') - if not header or not string.find(header[1], '^$') then + header = task:get_header('list-unsubscribe') + if not header or not string.find(header, '^$') then return false end @@ -155,17 +152,16 @@ end -- RFC 2369 headers local function check_rfc2369(task) - local message = task:get_message() - local header = message:get_header('List-Id') + local header = task:get_header('List-Id') if not header then return false end - header = message:get_header('List-Unsubscribe') - if not header or not string.find(header[1], '^^<.+>$') then + header = task:get_header('List-Unsubscribe') + if not header or not string.find(header, '^^<.+>$') then return false end - header = message:get_header('List-Subscribe') - if not header or not string.find(header[1], '^^<.+>$') then + header = task:get_header('List-Subscribe') + if not header or not string.find(header, '^^<.+>$') then return false end @@ -174,9 +170,8 @@ end -- RFC 2919 headers local function check_rfc2919(task) - local message = task:get_message() - local header = message:get_header('List-Id') - if not header or not string.find(header[1], '^<.+>$') then + local header = task:get_header('List-Id') + if not header or not string.find(header, '^<.+>$') then return false end @@ -188,8 +183,7 @@ end -- RFC 2919 headers exist -- local function check_ml_googlegroup(task) - local message = task:get_message() - local header = message:get_header('X-Google-Loop') + local header = task:get_header('X-Google-Loop') if not header then return false @@ -204,14 +198,13 @@ end -- -- And nothing more can be extracted :( local function check_ml_majordomo(task) - local message = task:get_message() - local header = message:get_header('Sender') - if not header or (not string.find(header[1], '^owner-.*$') and not string.find(header[1], '^.*-owner$')) then + local header = task:get_header('Sender') + if not header or (not string.find(header, '^owner-.*$') and not string.find(header, '^.*-owner$')) then return false end - local header = message:get_header('Precedence') - if not header or (header[1] ~= 'list' and header[1] ~= 'bulk') then + local header = task:get_header('Precedence') + if not header or (header ~= 'list' and header ~= 'bulk') then return false end @@ -223,8 +216,7 @@ end -- RFC 2919 headers exist -- local function check_ml_cgp(task) - local message = task:get_message() - local header = message:get_header('X-Listserver') + local header = task:get_header('X-Listserver') if not header or header ~= 'CommuniGate Pro LIST' then return false -- 2.39.5