From cc44d7f58baf761410db51c766332f03f66f2304 Mon Sep 17 00:00:00 2001 From: Florent Bruneau Date: Sat, 19 Jan 2008 23:07:41 +0100 Subject: [PATCH] All lists that moderate or drop spam, now moderate 'Unsure' mails. Migration script MUST NOT be run more than once or filtering will be corrupted. Signed-off-by: Florent Bruneau --- ChangeLog | 5 ++-- bin/lists.rpc.py | 7 ++++-- upgrade/0.9.16/update.sh | 3 +++ upgrade/0.9.16/upgrade_lists.py | 53 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 4 deletions(-) create mode 100755 upgrade/0.9.16/upgrade_lists.py diff --git a/ChangeLog b/ChangeLog index c644723..fe122be 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,11 +8,12 @@ New: * Core: - New PlProfiler tool -FRU - - * Goodies: - Integration of goodies/external tools with local rss/iCal -VZA - iGoogle gadgets for latest events and directory search -VZA + * Lists: + - Unsure mails are moderated -FRU + Bug/Wish: * Emails: diff --git a/bin/lists.rpc.py b/bin/lists.rpc.py index ea7e412..c4c0e49 100755 --- a/bin/lists.rpc.py +++ b/bin/lists.rpc.py @@ -687,10 +687,10 @@ def get_bogo_level(userdesc, perms, vhost, listname): if mlist.header_filter_rules == []: return 0 try: - action = mlist.header_filter_rules[1][1] + action = mlist.header_filter_rules[2][1] return 2 except: - action = mlist.header_filter_rules[0][1] + action = mlist.header_filter_rules[1][1] if action == mm_cfg.HOLD: return 1 if action == mm_cfg.DISCARD: @@ -708,11 +708,14 @@ def set_bogo_level(userdesc, perms, vhost, listname, level): return 0 hfr = [] if int(level) is 1: + hfr.append(('X-Spam-Flag: Unsure', mm_cfg.HOLD, False)) hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) elif int(level) is 2: + hfr.append(('X-Spam-Flag: Unsure', mm_cfg.HOLD, False)) hfr.append(('X-Spam-Flag: Yes, tests=bogofilter, spamicity=(0\.999999|1\.000000)', mm_cfg.DISCARD, False)) hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) elif int(level) is 3: + hfr.append(('X-Spam-Flag: Unsure', mm_cfg.HOLD, False)) hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False)) if mlist.header_filter_rules != hfr: mlist.Lock() diff --git a/upgrade/0.9.16/update.sh b/upgrade/0.9.16/update.sh index de82fc0..30823e5 100755 --- a/upgrade/0.9.16/update.sh +++ b/upgrade/0.9.16/update.sh @@ -2,6 +2,9 @@ . ../inc/pervasive.sh +echo "Upgrading bogofilter settings for ML" +sudo -u list ./upgrade_lists.py + mailman_stop mailman_templates mailman_start diff --git a/upgrade/0.9.16/upgrade_lists.py b/upgrade/0.9.16/upgrade_lists.py new file mode 100755 index 0000000..e62561c --- /dev/null +++ b/upgrade/0.9.16/upgrade_lists.py @@ -0,0 +1,53 @@ +#!/usr/bin/python + +import sys +sys.path.append('/usr/lib/mailman/bin') +import paths +from Mailman import MailList +from Mailman import Utils +from Mailman import mm_cfg + +def get_bogo_level(mlist): + """ Retreive the old style bogo level """ + try: + if mlist.header_filter_rules == []: + return 0 + try: + action = mlist.header_filter_rules[1][1] + return 2 + except: + action = mlist.header_filter_rules[0][1] + if action == mm_cfg.HOLD: + return 1 + elif action == mm_cfg.DISCARD: + return 3 + except: + return 0 + +def set_bogo_level(mlist, level): + """ Convert bogo level to the new level structure """ + if level == 0: + return + hfr = [] + if level == 1: + hfr.append(('X-Spam-Flag: Unsure', mm_cfg.HOLD, False)) + hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) + elif level == 2: + hfr.append(('X-Spam-Flag: Unsure', mm_cfg.HOLD, False)) + hfr.append(('X-Spam-Flag: Yes, tests=bogofilter, spamicity=(0\.999999|1\.000000)', mm_cfg.DISCARD, False)) + hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) + elif level == 3: + hfr.append(('X-Spam-Flag: Unsure', mm_cfg.HOLD, False)) + hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False)) + mlist.Lock() + mlist.header_filter_rules = hfr + mlist.Save() + mlist.Unlock() + + +names = Utils.list_names() +names.sort() +for name in names: + mlist = MailList.MailList(name, lock=0) + set_bogo_level(mlist, get_bogo_level(mlist)) + -- 2.1.4