#!/usr/bin/env python import os import re from operator import itemgetter mboxdir = '/usr/local/mailman/archives/private' emaildict = {} def getfiles () : files = [] for filename in os.listdir( mboxdir ): match = re.match(r'(.*)\.mbox$', filename) if match: files.append(filename) return files def getemail ( files ) : emails = [] for file in files: file = mboxdir+'/'+file+'/'+file try: h = open(file, 'r'); except IOError, e: continue for line in h.readlines(): match = re.match(r'^From: (.*)\<([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})\>$', line) if match: emails.append(match.group(2)) return emails def main() : files=getfiles() emaillist=getemail(files) for email in emaillist: if not email in emaildict.keys(): emaildict[ email ] = 0 emaildict[ email ] += 1 for (email, value) in sorted(emaildict.items(), key=itemgetter(1), reverse=True): print "%04s: %s" % (value, email) main()