#! /usr/bin/env python """ maildir-dedupe [maildir1 [maildir2 [...]]] Remove Messages with duplicate IDs from Maildirs --drt@un.bewaff.net -- http://c0re.jp/ """ import rfc822 import os, sys def dedupe(dirname): msgbase = {} # check for new mail newdir = os.path.join(dirname, 'new') boxes = [os.path.join(newdir, f) for f in os.listdir(newdir) if f[0] != '.'] # Now check for current mail in this maildir curdir = os.path.join(dirname, 'cur') boxes += [os.path.join(curdir, f) for f in os.listdir(curdir) if f[0] != '.'] for fn in boxes: fp = open(fn) msg = rfc822.Message(fp) msgid = msg['Message-Id'] if msgid in msgbase: print "deleting dupe %r: %r" % (msgid, fn) os.unlink(fn) else: msgbase[msgid] = None if len(sys.argv) == 1: print __doc__ else: for x in sys.argv[1:]: dedupe(x)