26. August 2012

Mails auf IMAP Server automatisiert verschieben

26. August 2012 - Geschrieben von Martin - 2 Kommentare

Wie schon im Beitrag „too much – Tag 0“ erwähnt, habe ich nun einen Serverseitigen Mail Filter entwickelt, der mir alle Mails von Facebook, Twitter, etc. in einen extra Ordner verschiebt. Warum? Ganz einfach – weder mein Android Handy, als auch mein iPhone können Mail Filter auf die INBOX anwenden, also wurden die Mails nur automatisch einsortiert wenn zuhause mein Thunderbird lief. Da ich den Rechner aber kaum anwerfe sondern nur am Handy bin, platzte meine Inbox also immer aus allen Nähten.
Im übrigen hat das Serverseitige verschieben den positiven Nebeneffekt, das nicht mehr so viele Mails auf dem Handy laden und so weniger Traffic verbraucht wird.

Folgendes Python Script hab ich mir geschustert:

# 
# This python script is to move mails automated by a filter inside of an imap4 mailbox
# You can use it to sort out mails by several criteria, eg moving all mails from facebook to an seperate mailbox
#
# @author	Martin Lantzsch <martin@linux-doku.de>
#
 
import imaplib
 
# connect to server
m = imaplib.IMAP4('YOURSERVER.TLD')
m.login('USERNAME', 'PASSWORD')
 
# filter function
def filterMessages(mailbox, filter, newMailbox):
	m.select(mailbox, readonly=False)
	typ, data = m.search(None, filter)
	for num in data[0].split():
		typ, data = m.fetch(num, 'RFC822')
		m.copy(num, newMailbox)
		m.store(num, '+FLAGS', '\\Deleted')
		print 'Moved and deleted Message %s from %s to %s' % (num, mailbox, newMailbox)
	m.close()
 
# fire!
filterMessages('INBOX', '(FROM "@facebookmail.com")', 'INBOX.Internet.Facebook')
filterMessages('INBOX', '(FROM "@postmaster.twitter.com")', 'INBOX.Internet.Twitter')
 
# close connection
m.logout()

Wie die IMAP4 Filter funktionieren, ist in diesem Wiki ganz gut erklärt: SEARCH command

Nun einfach einen CronJob drauf setzen, der alle 10 Minuten das Script aufruft und schon hat man Ruhe :-)