On Wed, Feb 12, 2003 at 04:30:37AM -0600, Gary Turner wrote: [...] | And to think, I've been wanting the other lists I subscribe to to lose | the habit. It's a serious waste of high dollar screen real estate. I solve that using a filter. The gist of it is this : --- #!/usr/bin/python import email import sys import re # first parse out the message itself try : # Be aware that this reads the entire message into memory at once. data = sys.stdin.read() message = email.message_from_string( data ) except : # if we can't parse the message (eg malformed MIME), leave it alone sys.stdout.write( data ) sys.exit( 0 ) del data subject_patterns = ( ( r"\[6bone\] " , "" ) , ( r"\[Aegis\]" , "" ) , ( r"\[Exim\] " , "" ) , ) ## ---------- # clean up the Subject: header Subject = "Subject" if Subject in message : subj = message[ Subject ] subj_orig = subj for pat , repl in subject_patterns : # collapse "Re: [Foo] Re: [Foo] bar" to "Re: bar" subj = re.sub( r'^[ ]*(?:R[Ee]:)?[ ]*'+pat+r'[ ]*R[Ee]:[ ]*' , r'Re: '+repl , subj ) # remove other instances of "[Foo]" subj = re.sub( pat , repl , subj ) # Only replace the subject if it changed. That way the order of the headers # is maintained if it isn't changed. if subj != subj_orig : del message[ Subject ] message[ Subject ] = subj ## ---------- # return the shiny clean message on stdout sys.stdout.write( message.as_string( unixfrom=False ) ) --- I actually do a bunch more in the script such as removing munged Reply-To: headers, removing pointless MS or AV headers, stripping list trailers/ads, and removing some "privacy disclaimers". The script requires python >= 2.2 or a local installation of the 'email' package. Since I am currently using maildrop for local delivery, I use it's "xfilter" command to run list messages through the cleanup script. Some messages, such as cvs notifications and "personal" messsages, I wouldn't trust a blanket cleanup to not accidentally destroy. Maybe some day I'll release it publicly, but it needs a lot more refinement before that would happen. -D -- Come to me, all you who are weary and burdened, and I will give you rest. Take my yoke upon you and learn from me, for I am gentle and humble in heart, and you will find rest for your souls. For my yoke is easy and my burden is light. Matthew 11:28-30 http://dman.ddts.net/~dman/
Attachment:
pgpcozu0Kj33_.pgp
Description: PGP signature