diff options
Diffstat (limited to '.maildirproc')
l--------- | .maildirproc | 1 | ||||
-rw-r--r-- | .maildirproc/default.rc | 352 |
2 files changed, 1 insertions, 352 deletions
diff --git a/.maildirproc b/.maildirproc new file mode 120000 index 0000000..ac993e9 --- /dev/null +++ b/.maildirproc @@ -0,0 +1 @@ +.config/maidirproc
\ No newline at end of file diff --git a/.maildirproc/default.rc b/.maildirproc/default.rc deleted file mode 100644 index c2ad6f2..0000000 --- a/.maildirproc/default.rc +++ /dev/null @@ -1,352 +0,0 @@ -# -*- mode: python; -*- - -import subprocess - -processor.maildir_base = "~/Maildir" -processor.auto_reload_rcfile = True - -def is_to_or_from(mail,address): - """ - Return true if [mail] is to or from an address that contains [address]. - """ - return ( - mail["From"].contains(address) - or mail.target.contains(address)) -def is_to_or_from_re(mail,address): - """ - Return true if [mail] is to or from an address that matches the - regex [address]. - """ - return ( - mail["From"].matches(address) - or mail.target.matches(address)) - -def bogofilter_auto(mail): - p = subprocess.Popen( - ["bogofilter", "-u", "-v", "-I", mail.path], - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - (output, _) = p.communicate() - processor.log("*** Bogofilter result: {0!r}".format(output.rstrip())) - if p.returncode not in [0, 1, 2]: - processor.log_error( - "Error running bogofilter: Return code = {0!r}".format( - p.returncode)) - return p.returncode - -def bogofilter_ham(mail): - subprocess.call(["bogofilter", "-S", "-n", "-I", mail.path]) - -def bogofilter_spam(mail): - subprocess.call(["bogofilter", "-N", "-s", "-I", mail.path]) - -def handle_incoming_spam_training(mail): - bogofilter_spam(mail) - mail.move(".Bulk Mail") - -def handle_incoming_ham_training(mail): - bogofilter_ham(mail) - handle_incoming_ham(mail) - -def handle_incoming_ham(mail): - my_filters(mail) -def handle_incoming_spam(mail): - mail.move(".Bulk Mail") - -def handle_incoming_unknown(mail): - # Filter spam - - spam = bogofilter_auto(mail) - if spam == 0: - handle_incoming_spam(mail) - return - elif spam == 1: - handle_incoming_ham(mail) - return - elif spam == 2: - # maybe spam - return - else: - mail.move(".Error") - return - -def my_filters(mail): - # Sort mail from GNU mailing lists - for list in [ 'bug-gsrc', 'bug-make', 'help-make', 'social', 'help-grub' ]: - if ( - False - or mail["List-Id"].matches(list+"\.gnu\.org") - or mail["Subject"].contains(list) - ): - mail.move(".software."+list) - return - - # Sort mail from other software mailing lists - if ( - False - or mail["List-Id"].matches("social-discuss\.gnu\.org") - or mail["Subject"].contains("social-discuss") - ): - mail.move(".software.social") - return - - if mail["List-Id"].matches("maintenance.lists.parabolagnulinux.org"): - mail.move(".software.parabola-maintenance") - return - if ( - False - or mail["List-Id"].matches("parabolagnulinux.org") - or is_to_or_from(mail, "parabolagnulinux.org") - or is_to_or_from(mail, "parabola.nu") - ): - mail.move(".software.parabola-dev") - return - - if (mail["List-Id"].matches("pacman-dev.archlinux.org")): - mail.move(".software.pacman-dev") - return - - for subject_re in [ - "\[Stow-[^\]]*\].*", - ]: - if mail["Subject"].matches(subject_re): - mail.move(".software") - return - - # Sort mail from some social websites - if mail["From"].matches("facebook(|mail)\.com"): - mail.move(".Social.Facebook") - return - - if ( - False - or mail["From"].matches("identi\.ca") - or mail["From"].matches("statusnet") - ): - mail.move(".Social.Identica") - return - - if mail["From"].matches("twitter\.com"): - mail.move(".Social.Twitter") - return - - if mail["From"].matches("@xkcd\.com"): - mail.move(".Social.xkcd") - return - - # Sort mail related to Troop 276 - if ( - False - or mail["List-Id"].contains("troopmailinglist.troop276.net") - or is_to_or_from(mail,"t276_announcements@att.net") - or mail["Subject"].matches("troop") - or mail["Subject"].matches("merit\s*badge") - or is_to_or_from(mail,"jsting@sbcglobal.net") - or is_to_or_from(mail,"trdindy@comcast.net") - or is_to_or_from(mail,"wjensen111@aol.com") - or is_to_or_from(mail,"dhoyt@yourhomecompany.com") - or is_to_or_from(mail,"salupo_vincent_p@lilly.com") - or is_to_or_from(mail,"basu@maharjan.org") - or is_to_or_from(mail,"muellerindy@yahoo.com") - or is_to_or_from(mail,"solorzano.luis@rocketmail.com") - or is_to_or_from(mail,"eldredmac@comcast.net")# MacDonell - or is_to_or_from(mail,"mitchprather@sbcglobal.net") - or is_to_or_from(mail,"oa_wap@yahoo.com") - or is_to_or_from(mail,"mytroop.us") - ): - mail.move(".Troop276") - return - - # Sort mail from misc people - if mail["From"].matches("margieshu@sbcglobal\.net"): - mail.move(".misc.Mom") - return - - for address in [ - "justicejade10@aol.com", - "parsonsjade@aol.com", - "parsonstjade@gmail.com", - ]: - if mail["From"].contains(address): - mail.move(".misc.Jade") - return - - for address in [ - "nintendo.com", - "nintendo-news.com", - ]: - if mail["From"].contains(address): - mail.move(".misc.Nintendo") - return - - for address in [ - "@lpi.org", - "@pearson.com", - "CompTIA", - ]: - if mail["From"].contains(address): - mail.move(".misc.CompTIA") - return - - # Sort mail from FRC people - for address in [ - "jeffreysmith@msdlt.k12.in.us", - "jason.zielke@gmail.com", - "allison.m.babcock@gmail.com", - "william.walk@gmail.com", - "BBonahoom@stanleyworks.com", - "wcxctrack829@aim.com", # Pat - "djnels1@comcast.net", # Dave and Julie Nelson - "sarahlittell@comcast.net", - "skiplittell@comcast.net", - "dave.nelson@ecolab.com", - "@ni.com", - "@usfirst.org", - "gamefreak207@gmail.com", # Brett Leedy - "tswilson4801@att.net", - "silioso@gmail.com", - "cdewalt3@yahoo.com", - "bryanbonahoom@gmail.com", - ]: - if is_to_or_from(mail,address): - mail.move(".School.Robotics") - return - for subject_re in [ - "FIRST", - "robotics", - "1024", - "kil-?a-?bytes", - ]: - if mail["Subject"].matches(subject_re): - mail.move(".School.Robotics") - return - - # Sort mail from software people - for address in [ - "gnu.org", - "eff.org", - "gitorious.org", - "sourceforge.com", - "ietf.org", - "kde.org", - "trustees@core3.amsl.com", - "esr@thyrsus.com", - "canonical.org", - "foocorp.net", - "cnuk.org", - "@archlinux.org", - "@github.com", - ]: - if is_to_or_from(mail,address): - mail.move(".software") - return - - - # Sort mail from the school newspaper - if ( - False - or is_to_or_from(mail, "@lnnorthstar.org") - or is_to_or_from(mail, "lnnorthstar.org@tigertech.net") - ): - mail.move(".School.Newspaper") - return - - # Sort mail from various employers/people who pay me - if is_to_or_from(mail, "@precisepath.com"): - mail.move(".Work.PrecisePath") - return - - if is_to_or_from(mail,"susyphil@aol.com"): - mail.move(".Work.PMCH") - - for address in [ - "d.farrar@comcast.net", - "dfarrar@avacoustics.net", - "@vmware.com", - ]: - if is_to_or_from(mail,address): - mail.move(".Work.FAST") - return - - # Sort misc newsletters - if ( - False - or mail["From"].contains("newsletter") - or mail["From"].contains("auto@comicsbyemail.com") - or mail["From"].contains("oreilly.com") - or mail["Subject"].contains("newsletter") - or mail["From"].contains("Info@mailing.jamendo.com") - or mail["From"].contains("info@demandprogress.org") - ): - mail.move(".misc.Newsletters") - return - - if ( - False - or mail["From"].contains("@msdlt.k12.in.us") - or mail["From"].contains("naviance.com") - or is_to_or_from(mail,"ibwhite@comcast.net") - or mail["Subject"].contains("IOA") - or mail["From"].contains("nths.org") - or mail["Subject"].contains("NTHS") - or mail["Subject"].contains("National Technical Honor Society") - or mail["Subject"].contains("NHS") - or mail["Subject"].contains("National Honor Society") - ): - mail.move(".School") - return - - # from college stuff - if ( - False - or mail["Subject"].contains("NYLF") # National Youth Leadership Conference - or mail["Subject"].contains("NSHSS") - ): - mail.move(".College.Societies") - return - if ( - False - or mail["From"].contains(".edu") - or mail["From"].contains("admissions@") - or mail["From"].contains("college") - or mail["From"].contains("university") - or mail["Subject"].contains("college") - # now we get to the BS - or mail["From"].contains("@dreamitdoitindiana.com") - or mail["From"].contains("@indianatechinfo.org") - ): - mail.move(".College") - return - - if mail["From"].contains("@projectwonderful.com"): - mail.move(".ProjectWonderful") - return - - if ( - False - or mail["From"].matches("@localhost") - or mail["From"].matches("@[^,>]*\.local") - or mail["From"].matches("@[^,>]*\.lukeshu\.ath\.cx") - or mail["To"].matches("luke@") - ): - mail.move(".LocalSystems") - return - if ( - False - or mail["Subject"].contains("password") - or mail["Subject"].contains("account") - ): - mail.move(".misc.accounts") - return - - mail.move(".Ham") - -handle_mapping = { - ".": handle_incoming_unknown, - ".spam-training": handle_incoming_spam_training, - ".ham-training": handle_incoming_ham_training, - #".Ham": handle_incoming_ham, - } -processor.maildirs = handle_mapping.keys() -for mail in processor: - handle_mapping[mail.maildir](mail) |