#! /home/tgolden/bin/python import os, sys from mailbox import PortableUnixMailbox local_domains = ["timgolden.me.uk", "goodtoread.org", "weekdaymasses.org.uk", "westpark-club.org.uk", "sabren.com"] mail_root = os.path.join (os.path.expanduser ("~"), "mail") folders = ['Personal', 'Python', 'Websites'] ##mailboxes = ['personal', 'python', 'websites', 'Westpark', 'goodtoread.org', 'weekdaymasses.org.uk', 'work', 'IN-archive', 'Sent', 'winsys'] addresses = set () for folder in folders: folder_path = os.path.join (mail_root, folder) if not os.path.isdir (folder_path): print folder_path, "not found" continue for mailbox in os.listdir (folder_path): mailbox_path = os.path.join (folder_path, mailbox) print mailbox_path mbox = PortableUnixMailbox (open (mailbox_path, 'U')) for mail in mbox: name, address = mail.getaddr ("From") if address: addresses.add (address) name, address = mail.getaddr ("To") if address: addresses.add (address) for domain in local_domains: addresses = set (a for a in addresses if domain not in a.lower ()) f = open (os.path.join (os.path.expanduser ("~"), ".procmail_whitelist"), "w") try: f.write ("\n".join (addresses)) finally: f.close ()