rendered paste body#/usr/bin/env python2.5# David Bremner 2007/10/10# placed in the public domainfrom mailbox import Maildirfrom email import utilsimport osimport timeimport datetimeimport loggingimport fcntlconfig = { 'loglevel':logging.DEBUG, 'logfile':os.path.expanduser('~/var/log/scan-whitelist.log'), 'keepdays':14, 'maildir':os.path.expanduser("~/Maildir/"), 'whitelistfolder':'whitelist', 'outfile':os.path.expanduser("~/var/mail/whitelist"), }logging.basicConfig(level=config['loglevel'], format='%(asctime)s %(levelname)s %(message)s', filename=config['logfile'], filemode='a')fd=open(config['outfile'],'r+')exists={}fcntl.lockf(fd,fcntl.LOCK_EX)for line in fd.readlines(): exists[line.strip()]=1now=datetime.datetime.now()mainbox=Maildir(config['maildir'])whitelist=mainbox.get_folder(config['whitelistfolder'])for key in whitelist.keys(): msg=whitelist.get_message(key) addr=msg['from'] exists[addr]=1 logging.debug('processing %s %s' %(key,addr)) whitelist.discard(key)fd.seek(0)for line in sorted(exists.keys()): print >>fd,linefcntl.lockf(fd,fcntl.LOCK_UN)fd.close()