| 1 | #!/usr/bin/python |
| 2 | |
| 3 | import sys |
| 4 | sys.path.append('/usr/lib/mailman/bin') |
| 5 | import paths |
| 6 | from Mailman import MailList |
| 7 | from Mailman import Utils |
| 8 | from Mailman import mm_cfg |
| 9 | |
| 10 | def get_bogo_level(mlist): |
| 11 | """ Retreive the old style bogo level """ |
| 12 | try: |
| 13 | if mlist.header_filter_rules == []: |
| 14 | return 0 |
| 15 | try: |
| 16 | action = mlist.header_filter_rules[1][1] |
| 17 | return 2 |
| 18 | except: |
| 19 | action = mlist.header_filter_rules[0][1] |
| 20 | if action == mm_cfg.HOLD: |
| 21 | return 1 |
| 22 | elif action == mm_cfg.DISCARD: |
| 23 | return 3 |
| 24 | except: |
| 25 | return 0 |
| 26 | |
| 27 | def set_bogo_level(mlist, level): |
| 28 | """ Convert bogo level to the new level structure """ |
| 29 | if level == 0: |
| 30 | return |
| 31 | hfr = [] |
| 32 | if level == 1: |
| 33 | hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) |
| 34 | hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) |
| 35 | elif level == 2: |
| 36 | hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) |
| 37 | hfr.append(('X-Spam-Flag: Yes, tests=bogofilter, spamicity=(0\.999999|1\.000000)', mm_cfg.DISCARD, False)) |
| 38 | hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False)) |
| 39 | elif level == 3: |
| 40 | hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False)) |
| 41 | hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False)) |
| 42 | mlist.Lock() |
| 43 | mlist.header_filter_rules = hfr |
| 44 | mlist.Save() |
| 45 | mlist.Unlock() |
| 46 | |
| 47 | |
| 48 | names = Utils.list_names() |
| 49 | names.sort() |
| 50 | for name in names: |
| 51 | mlist = MailList.MailList(name, lock=0) |
| 52 | set_bogo_level(mlist, get_bogo_level(mlist)) |
| 53 | |