#!/usr/bin/env python # -*- coding: iso-8859-1 -*- # # Finde anhand der Daten in ~/Maildir, die # vertrauenswürdigen Emailadressen. # fd.read() + regex.findall() # real 1m5.447s # user 1m2.640s # sys 0m0.910s # # for line in fd: # real 1m17.975s # user 1m15.010s # sys 0m0.880s import os import re import sys mailhome=os.path.join(os.environ["HOME"], "Maildir") # relative to mailhome # maildir: Every email is in *one* file # under cur/ or new/ maildirfolders=["bank", "bayreuther", "chemnitz", "clug", "dresden", "ebay", "familie", "firma", "goesta", "htwler", "inet", "katja", "laufen", "lt", "lug-dd", "online-shops", "outbox", "python-de", "wlan"] # absolute path mailfiles=[ "/home/guettli/doc/adressen.html", "/home/guettli/.mail-lists"] adress_regex=re.compile(r'[a-zA-Z_.\-%=0-9]+@[a-zA-Z_.\-%=0-9]+') def do_file(filename, found): try: fd=open(filename) except: print "%s kann nicht geöffnet werden" % filename return for line in fd: if line.startswith("Message-Id"): continue email_adrs=adress_regex.findall(line) for e in email_adrs: e=e.lower() if found.has_key(e): continue found[e]=1 #print "%s %s" % (filename, e) def main(): found={} paths=[] for folder in maildirfolders: for dir in ["cur", "new"]: path=os.path.join(mailhome, folder, dir) if not os.path.isdir(path): print "%s does not exist" % path sys.exit(1) paths.append(path) for path in paths: for mail in os.listdir(path): mail=os.path.join(path, mail) do_file(mail, found) for file in mailfiles: do_file(file, found) emails=found.keys() emails.sort() len_emails=len(emails) print "# %s email adresses in whitelist" % len_emails for email in emails: print email if __name__=="__main__": main()