summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-12-07 18:17:41 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2017-02-11 18:27:06 -0500
commit111574bcf3e81ae6b6da95ce11d56de22342490c (patch)
treeb1dda8989dbe72d10212daf5787ba07d01ead927
parent7469ba154623ce5b231ae902d4cfb617927cebeb (diff)
maildirproc: update
-rw-r--r--.config/maildirproc/att.rc453
-rw-r--r--.config/maildirproc/purdue.rc395
2 files changed, 223 insertions, 625 deletions
diff --git a/.config/maildirproc/att.rc b/.config/maildirproc/att.rc
index ecd9c20..79d4469 100644
--- a/.config/maildirproc/att.rc
+++ b/.config/maildirproc/att.rc
@@ -5,12 +5,9 @@ import os.path
import subprocess
import datetime
import re
+#
+# Mail attribute utilities
-processor.maildir_base = "~/Maildir"
-processor.auto_reload_rcfile = True
-
-# FIXME: this doesn't handle the case where someone replies `To` you
-# directly an `Cc`s the list.
def mailman_domain(mail, domain):
"""
Return a string that is the list-name for a mailman domain
@@ -38,6 +35,18 @@ def ezmlm_domain(mail, domain):
return m.group(1)
return None
+def majordomo_domain(mail, domain):
+ """
+ Return a string that is the list-name for a majordomo domain
+ """
+ m = mail["List-Id"].matches("^(.*<|)([^<]*)\."+re.escape(domain))
+ if m:
+ return m.group(2)
+ for hdr in [ 'To', 'Cc', 'From' ]:
+ m = mail[hdr].matches("((\w|-)*)@"+re.escape(domain))
+ if m:
+ return m.group(1)
+
def is_to_or_from(mail,address):
"""
Return true if [mail] is to or from an address that contains [address].
@@ -55,17 +64,9 @@ def is_to_or_from_re(mail,address):
return (
mail["From"].matches(address)
or mail.target.matches(address))
-def move_ham(mail,folder):
- y = datetime.datetime.now().year
- folder = "FOLDERS.Ham."+str(y)+folder
- dir = processor.maildir_base+"/"+folder
- if not os.path.isfile(dir+"/maildirfolder"):
- os.makedirs(dir+"/tmp", 0o777, True)
- os.makedirs(dir+"/new", 0o777, True)
- os.makedirs(dir+"/cur", 0o777, True)
- open(dir+"/maildirfolder", 'a').close()
- mail.move(folder)
-
+#
+# bogofilter utilites
+
def bogofilter_auto(mail):
p = subprocess.Popen(
["bogofilter", "-u", "-v", "-I", mail.path],
@@ -82,26 +83,26 @@ def bogofilter_ham(mail):
subprocess.call(["bogofilter", "-S", "-n", "-I", mail.path])
def bogofilter_spam(mail):
subprocess.call(["bogofilter", "-N", "-s", "-I", mail.path])
+#
+# The core of my filters
-def handle_incoming_ham_training(mail):
- bogofilter_ham(mail)
- handle_incoming_ham(mail)
-def handle_incoming_spam_training(mail):
- bogofilter_spam(mail)
- mail.move("FOLDERS.Spam")
-
-def handle_incoming_ham(mail):
- my_filters(mail)
-def handle_incoming_spam(mail):
- mail.move("FOLDERS.Spam")
-
-def handle_incoming_unknown(mail):
- # Filter spam
+def move_ham(mail,folder):
+ y = datetime.datetime.now().year
+ folder = "FOLDERS.Ham."+str(y)+folder
+ dir = processor.maildir_base+"/"+folder
+ if not os.path.isfile(dir+"/maildirfolder"):
+ os.makedirs(dir+"/tmp", 0o777, True)
+ os.makedirs(dir+"/new", 0o777, True)
+ os.makedirs(dir+"/cur", 0o777, True)
+ open(dir+"/maildirfolder", 'a').close()
+ mail.move(folder)
- # Whitelist
- if (
+def my_whitelist(mail):
+ return (
False
+ or is_to_or_from(mail, "@opengroup.org")
or is_to_or_from(mail, "@purestorage.com")
+ or is_to_or_from(mail, "@vger.kernel.org")
or is_to_or_from(mail, "Bryan@ChankTunUnGi.onmicrosoft.com")
or is_to_or_from(mail, "cacnedcomms@gmail.com")
or is_to_or_from(mail, "fsf.org")
@@ -110,6 +111,8 @@ def handle_incoming_unknown(mail):
or is_to_or_from(mail, "parabolagnulinux.org")
or mail["From"] == "3174451635@mms.att.net"
or mail["From"] == "MAILER-DAEMON@yahoo.com"
+ or mail["From"].contains("@careereco.com")
+ or mail["From"].contains("@ciholas.com")
or mail["From"].contains("@e.oldnational.com>")
or mail["From"].contains("@facebookmail.com>")
or mail["From"].contains("@gandi.net")
@@ -126,8 +129,10 @@ def handle_incoming_unknown(mail):
or mail["From"].contains("@post.oreilly.com>")
or mail["From"].contains("@scouting.org>")
or mail["From"].contains("@solutionsinplastic.com>")
- or mail["From"].contains("@startcom.org>")
+ or mail["From"].contains("@startcom.org>")
or mail["From"].contains("@usfirst.org>")
+ or mail["From"].contains("@vectren.com")
+ or mail["From"].contains("@vectrenemail.com")
or mail["From"].contains("@wolframalpha.com>")
or mail["From"].contains("Promo@email.newegg.com")
or mail["From"].contains("info@email2.mysimplemobile.com")
@@ -140,36 +145,13 @@ def handle_incoming_unknown(mail):
or mail["Subject"].contains("[Maintenance]")
or mail["Subject"].contains("[PATCH")
or mail["Subject"].contains("[systemd-devel]")
- ):
- handle_incoming_ham_training(mail)
- return
-
- spam = bogofilter_auto(mail)
- if spam == 0:
- handle_incoming_spam(mail)
- return
- elif spam == 1:
- handle_incoming_ham(mail)
- return
- elif spam == 2:
- mail.move("FOLDERS.MysteryMeat")
- return
- else:
- mail.move("FOLDERS.BogoFail")
- return
+ )
def my_filters(mail):
- if is_to_or_from(mail,"@purestorage.com"):
- move_ham(mail, ".purestorage")
- return
-
- # Sort mail from various mailing lists
- # https://lists.gnu.org/mailman/options/bug-librejs/lukeshu@sbcglobal.net
- # https://lists.nongnu.org/mailman/options/libreboot/lukeshu@sbcglobal.net
- # https://mail.gnome.org/mailman/options/networkmanager-list/lukeshu@sbcglobal.net
- for pair in [ [ 'gnu.org', 'gnu' ],
- [ 'nongnu.org', 'nongnu' ],
- [ 'gnome.org', 'gnome' ],
+ # .software.* (GNU Mailman)
+ for pair in [ [ 'gnu.org', 'gnu' ], # https://lists.gnu.org/mailman/options/bug-librejs/lukeshu@sbcglobal.net
+ [ 'nongnu.org', 'nongnu' ], # https://lists.nongnu.org/mailman/options/libreboot/lukeshu@sbcglobal.net
+ [ 'gnome.org', 'gnome' ], # https://mail.gnome.org/mailman/options/networkmanager-list/lukeshu@sbcglobal.net
[ 'archlinux.org', 'archlinux' ],
[ 'lists.freedesktop.org', 'freedesktop' ],
[ 'lists.fedorahosted.org', 'fedorahosted' ],
@@ -181,11 +163,19 @@ def my_filters(mail):
if list:
move_ham(mail, ".software."+pair[1]+"."+list)
return
+ # .software.* (EZMLM)
for pair in [ [ 'list.cr.yp.to', 'djb' ] ]:
list = ezmlm_domain(mail, pair[0])
if list:
move_ham(mail, ".software."+pair[1]+"."+list)
return
+ # .software.* (Majordomo)
+ for pair in [ [ 'vger.kernel.org', 'kernel' ] ]:
+ list = majordomo_domain(mail, pair[0])
+ if list:
+ move_ham(mail, ".software."+pair[1]+"."+list)
+ return
+ # .software.parabola
if (
False
or is_to_or_from(mail, "parabolagnulinux.org")
@@ -194,53 +184,75 @@ def my_filters(mail):
):
move_ham(mail, ".software.parabola")
return
-
- # Sort mail from some social websites
- if mail["From"].matches("facebook(|mail)\.com"):
- move_ham(mail, ".Social.Facebook")
+ # .software.POSIX
+ if is_to_or_from(mail,"austin-group-l@opengroup.org"):
+ move_ham(mail, ".software.POSIX")
return
-
- if (
- False
- or mail["From"].matches("identi\.ca")
- or mail["From"].matches("statusnet")
- ):
- move_ham(mail, ".Social.Identica")
+ # .software.TravisCI
+ if mail["From"].contains("builds@travis-ci.org"):
+ move_ham(mail, ".software.TravisCI")
return
-
+ # .software
+ for address in [
+ "@archlinux.org",
+ "@canonical.org",
+ "@cnuk.org",
+ "@core3.amsl.com",
+ "@defectivebydesign.org",
+ "@eff.org",
+ "@fedorahosted.org",
+ "@foocorp.net",
+ "@fsf.org",
+ "@github.com",
+ "@gitorious.org",
+ "@gnome.org",
+ "@gnu.org",
+ "@ietf.org",
+ "@kde.org",
+ "@lists.fedorahosted.org",
+ "@mozilla.org",
+ "@nongnu.org",
+ "@sourceforge.com",
+ "@thyrsus.com",
+ ]:
+ if is_to_or_from(mail,address):
+ move_ham(mail, ".software")
+ return
+ # .servers
if (
False
or mail["From"].contains("@gandi.net")
or mail["From"].contains("@ramhost.us")
or mail["From"].contains("@startcom.org")
+ or mail["From"].contains("@startssl.com")
+ or mail["From"].contains("@vultr.com")
or (mail["From"].contains("@2co.com") and mail["Subject"].contains("RAM Host"))
):
- move_ham(mail, ".lukeshu-com")
+ move_ham(mail, ".servers")
+ return
+ # .Social.*
+ if mail["From"].matches("facebook(|mail)\.com"):
+ move_ham(mail, ".Social.Facebook")
+ return
+ if mail["From"].matches("identi\.ca|statusnet"):
+ move_ham(mail, ".Social.Identica")
return
-
if mail["From"].matches("twitter\.com"):
move_ham(mail, ".Social.Twitter")
return
-
if mail["From"].matches("@xkcd\.com"):
move_ham(mail, ".Social.xkcd")
return
-
- if mail["From"].matches("schwab\.com"):
- move_ham(mail, ".schwab")
- return
-
- if mail["From"].matches("@ebay\.com"):
- move_ham(mail, ".ebay")
+ if is_to_or_from(mail,"linkedin.com"):
+ move_ham(mail, ".Social.LinkedIn")
return
-
- # Sort mail related to Troop 276
+ # .BSA
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, "t276_announcements@att.net")
or is_to_or_from(mail, "Bryan@ChankTunUnGi.onmicrosoft.com")
or is_to_or_from(mail, "basu@maharjan.org")
or is_to_or_from(mail, "cacnedcomms@gmail.com")
@@ -259,10 +271,93 @@ def my_filters(mail):
or is_to_or_from(mail, "trdindy@comcast.net")
or is_to_or_from(mail, "wjensen111@aol.com")
):
- move_ham(mail, ".BoyScouts")
+ move_ham(mail, ".BSA")
+ return
+ # .FRC
+ for address in [ "@ni.com", "@usfirst.org" ]:
+ if is_to_or_from(mail,address):
+ move_ham(mail, ".FRC")
+ return
+ # .FRC.829
+ if (
+ False
+ or mail["Subject"].matches("\b829\b")
+ or is_to_or_from(mail, "wcxctrack829@aim.com") # Pat
+ or is_to_or_from(mail, "william.walk@gmail.com")
+ ):
+ move_ham(mail, ".FRC.829")
+ return
+ # .FRC.1024
+ if (
+ False
+ or mail["Subject"].matches("\b1024\b")
+ or mail["Subject"].matches("kil-?a-?bytes")
+ or is_to_or_from(mail, "BBonahoom@stanleyworks.com")
+ or is_to_or_from(mail, "bryanbonahoom@gmail.com")
+ or is_to_or_from(mail, "allison.m.babcock@gmail.com")
+ or is_to_or_from(mail, "cdewalt3@yahoo.com")
+ or is_to_or_from(mail, "dave.nelson@ecolab.com")
+ or is_to_or_from(mail, "dickaustin190@yahoo.com")
+ or is_to_or_from(mail, "djnels1@comcast.net") # Dave and Julie Nelson
+ or is_to_or_from(mail, "gamefreak207@gmail.com") # Brett Leedy
+ or is_to_or_from(mail, "jason.zielke@gmail.com")
+ or is_to_or_from(mail, "jeffreysmith@msdlt.k12.in.us")
+ or is_to_or_from(mail, "sarahlittell@comcast.net")
+ or is_to_or_from(mail, "silioso@gmail.com")
+ or is_to_or_from(mail, "skiplittell@comcast.net")
+ or is_to_or_from(mail, "tswilson4801@att.net")
+ ):
+ move_ham(mail, ".FRC.1024")
+ return
+ # .FRC.4272
+ if (
+ False
+ or mail["Subject"].matches("\b4272\b")
+ or mail["Subject"].contains("[ME297]")
+ or is_to_or_from(mail, "firstteam4272@gmail.com")
+ or is_to_or_from(mail, "@tscstudents.net")
+ or is_to_or_from(mail, "abenyeho@purdue.edu")
+ or is_to_or_from(mail, "Henry65@purdue.edu")
+ or is_to_or_from(mail, "chang282@purdue.edu")
+ ):
+ move_ham(mail, ".FRC.4272")
+ return
+ # .Purdue.*
+ if (
+ False
+ or mail["Subject"].contains("[PASE]")
+ or is_to_or_from(mail,"Purduealumni@purdue.edu")
+ or is_to_or_from(mail,"pase@purdue.edu")
+ ):
+ move_ham(mail, ".Purdue.PASE")
+ return
+ if mail["Subject"].contains("[PLUG]"):
+ move_ham(mail, ".Purdue.PLUG")
+ return
+ if is_to_or_from(mail,"@cerias.purdue.edu"):
+ move_ham(mail, ".Purdue.CERIAS")
+ return
+ if (
+ False
+ or is_to_or_from(mail,"royfu@purdue.edu")
+ or is_to_or_from(mail,"usmannkhan@purdue.edu")
+ ):
+ move_ham(mail, ".Purdue.Hackers")
+ return
+ if (
+ False
+ or mail["Subject"].contains("[CS Opportunity Update]")
+ or mail["Subject"].contains("[CS Majors]")
+ ):
+ move_ham(mail, ".Purdue.CS")
+ return
+ # .misc.*
+ if mail["From"].matches("schwab\.com"):
+ move_ham(mail, ".misc.schwab")
+ return
+ if mail["From"].matches("@ebay\.com"):
+ move_ham(mail, ".misc.ebay")
return
-
- # Sort mail from misc people
if (
False
or is_to_or_from(mail, "margieshu@sbcglobal.net")
@@ -270,15 +365,6 @@ def my_filters(mail):
):
move_ham(mail, ".misc.Mom")
return
-
- for address in [
- "nintendo.com",
- "nintendo-news.com",
- ]:
- if mail["From"].contains(address):
- move_ham(mail, ".misc.Nintendo")
- return
-
for address in [
"@lpi.org",
"@pearson.com",
@@ -288,96 +374,6 @@ def my_filters(mail):
if mail["From"].contains(address):
move_ham(mail, ".misc.CompTIA")
return
-
- # Sort mail from FRC people
- # Generic
- for address in [ "@ni.com", "@usfirst.org" ]:
- if is_to_or_from(mail,address):
- move_ham(mail, ".FRC")
- return
- # FRC 829
- for address in [
- "wcxctrack829@aim.com", # Pat
- "william.walk@gmail.com",
- ]:
- if is_to_or_from(mail,address):
- move_ham(mail, ".FRC.829")
- return
- if mail["Subject"].matches("\b829\b"):
- move_ham(mail, ".FRC.829")
- return
- # FRC 1024
- for address in [
- "BBonahoom@stanleyworks.com",
- "bryanbonahoom@gmail.com",
- "allison.m.babcock@gmail.com",
- "cdewalt3@yahoo.com",
- "dave.nelson@ecolab.com",
- "dickaustin190@yahoo.com",
- "djnels1@comcast.net", # Dave and Julie Nelson
- "gamefreak207@gmail.com", # Brett Leedy
- "jason.zielke@gmail.com",
- "jeffreysmith@msdlt.k12.in.us",
- "sarahlittell@comcast.net",
- "silioso@gmail.com",
- "skiplittell@comcast.net",
- "tswilson4801@att.net",
- ]:
- if is_to_or_from(mail,address):
- move_ham(mail, ".FRC.1024")
- return
- for subject_re in [ "\b1024\b", "kil-?a-?bytes" ]:
- if mail["Subject"].matches(subject_re):
- move_ham(mail, ".FRC.1024")
- return
- # FRC 4272
- if mail["Subject"].matches("\b4272\b"):
- move_ham(mail, ".FRC.4272")
- return
-
- # Catch BS things because of CS classes before the general
- # software filters
- if mail["Subject"].contains("[Quizroom]"):
- mail.delete()
- return
-
- # Sort mail from software people
- for address in [
- "@archlinux.org",
- "@canonical.org",
- "@cnuk.org",
- "@core3.amsl.com",
- "@defectivebydesign.org",
- "@eff.org",
- "@fedorahosted.org",
- "@foocorp.net",
- "@fsf.org",
- "@github.com",
- "@gitorious.org",
- "@gnome.org",
- "@gnu.org",
- "@ietf.org",
- "@kde.org",
- "@lists.fedorahosted.org",
- "@mozilla.org",
- "@nongnu.org",
- "@sourceforge.com",
- "@thyrsus.com",
- ]:
- if is_to_or_from(mail,address):
- move_ham(mail, ".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")
- ):
- move_ham(mail, ".HighSchool.Newspaper")
- return
-
- # Sort misc newsletters
if (
False
or mail["From"].contains("newsletter")
@@ -407,46 +403,6 @@ def my_filters(mail):
):
move_ham(mail, ".misc.Newsletters")
return
-
- if (
- False
- or mail["From"].contains("@msdlt.k12.in.us")
- or mail["From"].contains("ltschoolfoundation@gmail.com")
- 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")
- ):
- move_ham(mail, ".HighSchool")
- return
-
- # from college stuff
- if (
- False
- or mail["Subject"].contains("NYLF") # National Youth Leadership Conference
- or mail["Subject"].contains("NSHSS")
- ):
- move_ham(mail, ".College.Societies")
- return
- if (
- False
- or mail["From"].contains("admissions@")
- or mail["Subject"].contains("college")
- # now we get to the BS
- or mail["From"].contains("@dreamitdoitindiana.com")
- or mail["From"].contains("@indianatechinfo.org")
- ):
- move_ham(mail, ".College")
- return
-
- if mail["From"].contains("@projectwonderful.com"):
- move_ham(mail, ".misc.ProjectWonderful")
- return
-
if (
False
or mail["From"].matches("@localhost")
@@ -454,7 +410,7 @@ def my_filters(mail):
or mail["From"].matches("@[^,>]*\.lan")
or mail["To"].matches("luke@")
):
- move_ham(mail, ".LocalSystems")
+ move_ham(mail, ".misc.LocalSystems")
return
if (
False
@@ -466,10 +422,47 @@ def my_filters(mail):
return
move_ham(mail, "")
+#
+# call the above
+
+def handle_incoming_ham_training(mail):
+ bogofilter_ham(mail)
+ handle_incoming_ham(mail)
+def handle_incoming_spam_training(mail):
+ bogofilter_spam(mail)
+ mail.move("FOLDERS.Spam")
+
+def handle_incoming_ham(mail):
+ my_filters(mail)
+def handle_incoming_spam(mail):
+ mail.move("FOLDERS.Spam")
+
+def handle_incoming_unknown(mail):
+ # Whitelist
+ if my_whitelist(mail):
+ handle_incoming_ham_training(mail)
+ return
+ spam = bogofilter_auto(mail)
+ if spam == 0:
+ handle_incoming_spam(mail)
+ return
+ elif spam == 1:
+ handle_incoming_ham(mail)
+ return
+ elif spam == 2:
+ mail.move("FOLDERS.MysteryMeat")
+ return
+ else:
+ mail.move("FOLDERS.BogoFail")
+ return
+
+# hook the above functions into the maildirproc processor
+processor.maildir_base = "~/Maildir"
+processor.auto_reload_rcfile = True
handle_mapping = {
"Inbox": handle_incoming_unknown,
- "Bulk Mail": handle_incoming_unknown,
+ "Bulk Mail": handle_incoming_unknown, # fucking Yahoo!
"FOLDERS.Spam.training": handle_incoming_spam_training,
"FOLDERS.Ham.training": handle_incoming_ham_training,
}
diff --git a/.config/maildirproc/purdue.rc b/.config/maildirproc/purdue.rc
deleted file mode 100644
index 11b0d46..0000000
--- a/.config/maildirproc/purdue.rc
+++ /dev/null
@@ -1,395 +0,0 @@
-# -*- mode: python; indent-tabs-mode: t -*-
-
-import os
-import subprocess
-
-processor.maildir_base = "~/Maildir.purdue"
-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 piazza_topic(mail, topic):
- return (
- False
- or is_to_or_from(mail, topic+" on Piazza")
- or mail["Subject"].contains(topic+" on Piazza")
- or (is_to_or_from(mail, "@piazza.com>") and mail["Subject"].contains(" in "+topic+": "))
- )
-
-def my_filters(mail):
- # Generic stuff ########################################################
-
- if is_to_or_from(mail,"@purestorage.com"):
- mail.move("INBOX.purestorage")
- return
-
- if (
- False
- or mail["Subject"].contains("[PASE]")
- or is_to_or_from(mail,"Purduealumni@purdue.edu")
- or is_to_or_from(mail,"pase@purdue.edu")
- ):
- mail.move("INBOX.crap.PASE")
- return
-
- if mail["Subject"].contains("[PLUG]"):
- mail.move("INBOX.crap.PLUG")
- return
-
- if mail["From"].matches(".*bursar.*@purdue\.edu"):
- mail.move("INBOX.tuition")
- return
-
- if mail["From"].contains("mailhub-admin@purdue.edu"):
- mail.move("INBOX.crap.mailhub-admin")
- return
-
- if mail["From"].matches("pmx-.*@purdue.edu"):
- mail.move("INBOX.crap.spam")
- return
-
- if is_to_or_from(mail,"linkedin.com"):
- mail.move("INBOX.crap.LinkedIn")
- return
-
- if is_to_or_from(mail,"follet.com"):
- mail.move("INBOX.Follet")
- return
-
- if (
- False
- or is_to_or_from(mail,"@edrtrust.com")
- or is_to_or_from(mail,"@propertysolutions.com")
- or is_to_or_from(mail,"collegestationapartments@gmail.com")
- or is_to_or_from_re(mail,"collegestationca\..*@gmail.com")
- ):
- mail.move("INBOX.housing.CollegeStation")
- return
- if (
- False
- or is_to_or_from(mail,"@hunterlp.com")
- or is_to_or_from(mail, "@duke-energy.com")
- or is_to_or_from(mail, "@alerts.comcast.net")
- or is_to_or_from(mail, "rentpayment.com")
- or is_to_or_from(mail, "@vectren.com")
- or is_to_or_from(mail, "@vectrenemail.com")
- or is_to_or_from(mail, "@apartments247.com")
- ):
- mail.move("INBOX.housing.BeauJardin")
- return
-
- if mail["From"].matches("facebook(|mail)\.com"):
- mail.move("INBOX.crap.Facebook")
- return
-
- if is_to_or_from(mail,"@cerias.purdue.edu"):
- mail.move("INBOX.crap.CERIAS")
- return
-
- if (
- False
- or is_to_or_from(mail,"royfu@purdue.edu")
- or is_to_or_from(mail,"usmannkhan@purdue.edu")
- ):
- mail.move("INBOX.crap.Hackers")
- return
-
- if (
- False
- or is_to_or_from(mail,"@cable.comcast.com")
- or is_to_or_from(mail,"@apexsystemsinc.com")
- ):
- mail.move("INBOX.work.2013.Comcast")
- return
-
- if (
- False
- or is_to_or_from(mail,"@qualcomm.com")
- or is_to_or_from(mail,"@Cartus.com")
- or is_to_or_from(mail,"@quicinc.com")
- ):
- mail.move("INBOX.work.2015.qualcomm")
- return
-
- if (
- False
- or mail["Subject"].contains("[CS Opportunity Update]")
- or mail["Subject"].contains("[CS Majors]")
- ):
- mail.move("INBOX.crap.CS")
- return
- if (mail["From"].contains("shumakl@cs.purdue.edu") and mail["Subject"].matches("^cron:")):
- mail.move("INBOX.crap.cron")
- return
-
- if is_to_or_from(mail,"austin-group-l@opengroup.org"):
- mail.move("INBOX.POSIX")
- return
-
- if mail["From"].contains("builds@travis-ci.org"):
- mail.move("INBOX.crap.TravisCI")
- return
-
- # # Fall 2012 ############################################################
-
- # # SCI210 (Teaming principles)
- # if mail["Subject"].contains("Fall-2012-SCI-21000-001:"):
- # mail.move("INBOX.classes.2012-2.SCI210")
- # # CS180 (Java)
- # if mail["Subject"].contains("fall-2012-cs-18000"):
- # mail.move("INBOX.classes.2012-2.CS180")
- # return
- # if piazza_topic(mail, "CS 18000"):
- # mail.move("INBOX.classes.2012-2.CS180.Piazza")
- # return
- # # SOC100
- # if mail["Subject"].contains("Fall-2012-SOC-10000"):
- # mail.move("INBOX.classes.2012-2.SOC100")
- # return
-
- # # Spring 2013 ##########################################################
-
- # # CS240 (C)
- # if mail["Subject"].contains("[CS240] Submission result for"):
- # mail.move("INBOX.classes.2013-1.CS240.autograder")
- # return
- # if mail["Subject"].contains("[CS240]") or mail["Subject"].contains("Spring-2013-CS-24000"):
- # mail.move("INBOX.classes.2013-1.CS240")
- # return
- # if piazza_topic(mail, "CS 240"):
- # mail.move("INBOX.classes.2013-1.CS240.Piazza")
- # return
- # # PHYS220
- # if mail["Subject"].matches(".*(PHYS|CHIP)\s*220.*") or is_to_or_from(mail,"srdas@purdue.edu"):
- # mail.move("INBOX.classes.2013-1.PHYS220")
- # return
- # # SOC220 (Social Problems)
- # if mail["Subject"].contains("Spring-2013-SOC-22000"):
- # mail.move("INBOX.classes.2013-1.SOC220")
- # return
-
- # # Fall 2013 ############################################################
-
- # # CS250 (Computer Architecture)
- # if mail["Subject"].contains("Fall-2013-CS-25000"):
- # mail.move("INBOX.classes.2013-2.CS250")
- # return
- # if piazza_topic(mail, "CS 250") or piazza_topic(mail, "CS 250-FALL2013"):
- # mail.move("INBOX.classes.2013-2.CS250.Piazza")
- # return
- # # CS251 (Intro Algo)
- # if mail["Subject"].contains("Fall-2013-CS-25100"):
- # mail.move("INBOX.classes.2013-2.CS251")
- # return
- # if piazza_topic(mail, "CS 251"):
- # mail.move("INBOX.classes.2013-2.CS251.Piazza")
- # return
- # # SPAN101
- # if mail["Subject"].contains("Fall-2013-SPAN-10100"):
- # mail.move("INBOX.classes.2013-2.SPAN101")
- # return
- # # MA261 (Calc III)
- # if mail["Subject"].contains("Fall-2013-MA-26100"):
- # mail.move("INBOX.classes.2013-2.MA261")
- # return
- # # MA265 (Linear Algebra)
- # if mail["Subject"].contains("Fall-2013-MA-26500"):
- # mail.move("INBOX.classes.2013-2.MA265")
- # return
-
- # # Spring 2014 ##########################################################
-
- # # COM217
- # if mail["Subject"].contains("Spring-2014-COM-21700-004"):
- # mail.move("INBOX.classes.2014-1.COM217")
- # return
- # if mail["From"].contains("mixable") and mail["Subject"].matches("^COM 21700"):
- # mail.move("INBOX.classes.2014-1.COM217.Mixable")
- # return
- # # CS252 (Systems Programming)
- # if piazza_topic(mail, "CS 25200"):
- # mail.move("INBOX.classes.2014-1.CS252.Piazza")
- # return
- # # CS307 (Software Engineering)
- # if is_to_or_from(mail, "dunsmore@purdue.edu") or mail["Subject"].contains("Spring-2014-CS-30700-LE1"):
- # mail.move("INBOX.classes.2014-1.CS307")
- # return
- # # SPAN102
- # if mail["Subject"].contains("spring-2014-span-102"):
- # mail.move("INBOX.classes.2014-1.SPAN102")
- # return
- # # STAT350
- # if is_to_or_from(mail, "ssellke@purdue.edu"):
- # mail.move("INBOX.classes.2014-1.STAT350")
- # return
- # if piazza_topic(mail, "STAT 35000 (SELLKE)"):
- # mail.move("INBOX.classes.2014-1.STAT350.Piazza")
- # return
-
- # # Fall 2014 ############################################################
-
- # # CS334 (Graphics)
- # if (is_to_or_from(mail, "lin553@purdue.edu") or mail["Subject"].contains("Fall-2014-CS-33400")):
- # mail.move("INBOX.classes.2014-2.CS334")
- # return
- # # CS354 (OS)
- # if piazza_topic(mail, "CS 354"):
- # mail.move("INBOX.classes.2014-2.CS354.Piazza")
- # return
- # # CS381 (Algo)
- # if piazza_topic(mail, "CS 381"):
- # mail.move("INBOX.classes.2014-2.CS381.Piazza")
- # return
- # # CS456 (Programming languages)
- # if piazza_topic(mail, "CS 456"):
- # mail.move("INBOX.classes.2014-2.CS456.Piazza")
- # return
- # # MA416
- # if mail["Subject"].contains("Fall-2014-MA-41600"):
- # mail.move("INBOX.classes.2014-2.MA416")
- # return
- # # PHYS221
- # if (False
- # or is_to_or_from(mail, "cui@purdue.edu")
- # or is_to_or_from(mail, "shina@purdue.edu")
- # or is_to_or_from(mail, "ajith@purdue.edu")
- # ):
- # mail.move("INBOX.classes.2014-2.PHYS221")
- # return
-
- # # Spring 2015 #########################################################
-
- # # CS352 (Compilers)
- # if is_to_or_from(mail, "wjg@cs.purdue.edu"):
- # mail.move("INBOX.classes.2015-1.CS352")
- # return
- # if piazza_topic(mail, "CS 352"):
- # mail.move("INBOX.classes.2015-1.CS352.Piazza")
- # return
- # # CS408 (Software testing)
- # if (False
- # or mail["Subject"].contains("spring-2015-cs-40800")
- # or is_to_or_from(mail, "li1471@purdue.edu")
- # or is_to_or_from(mail, "kirby@purdue.edu")
- # or is_to_or_from(mail, "webb39@purdue.edu")
- # or is_to_or_from(mail, "Jkou@purdue.edu")
- # or is_to_or_from(mail, "nstodda@purdue.edu")
- # or is_to_or_from(mail, "aryker@purdue.edu") # TA
- # ):
- # mail.move("INBOX.classes.2015-1.CS408")
- # return
- # # CS448 (Databases)
- # if piazza_topic(mail, "CS 44800"):
- # mail.move("INBOX.classes.2015-1.CS448.Piazza")
- # return
- # if mail["Subject"].matches("CS *448"):
- # mail.move("INBOX.classes.2015-1.CS448")
- # return
- # # ME297 (FRC)
- # if (False
- # or mail["Subject"].contains("[ME297]")
- # or is_to_or_from(mail, "heller5@purdue.edu")
- # ):
- # mail.move("INBOX.classes.2015-1.ME297")
- # return
- # # SOC324 (Criminology)
- # if mail["Subject"].contains("spring-2015-soc-32400"):
- # mail.move("INBOX.classes.2015-1.SOC324")
- # return
-
- # # Fall 2015 ############################################################
-
- # # CHM 490 (History & Philosophy of Science)
- # if is_to_or_from(mail, "gmbodner@purdue.edu"):
- # mail.move("INBOX.classes.2015-2.CHM490")
- # return
- # # CS 334 (Graphics)
- # if (
- # False
- # or mail["Subject"].contains("fall-2015-cs-33400-le1")
- # or is_to_or_from(mail, "aliaga@purdue.edu")
- # or is_to_or_from(mail, "abejara@purdue.edu")
- # ):
- # mail.move("INBOX.classes.2015-2.CS334")
- # return
- # if piazza_topic(mail, "CS 334"):
- # mail.move("INBOX.classes.2015-2.CS334.Piazza")
- # return
- # # CS 490 (Senior Project)
- # if is_to_or_from(mail, "anesen@purdue.edu"):
- # mail.move("INBOX.classes.2015-2.CS490")
- # return
- # if piazza_topic(mail, "CS 49000"):
- # mail.move("INBOX.classes.2015-2.CS490.Piazza")
- # return
- # # MA 416 (Probability)
- # if mail["Subject"].contains("fall-2015-ma-41600"):
- # mail.move("INBOX.classes.2015-2.MA416")
- # return
- # if piazza_topic(mail, "SELLKE 416 "):
- # mail.move("INBOX.classes.2015-2.MA416.Piazza")
- # return
-
- # # FRC 4272
- # if mail["Subject"].contains("[ME297]"):
- # mail.move("INBOX.classes.2015-2.FRC4272")
- # return
-
- # Spring 2016 ##########################################################
-
- # # CS 422 (Networking)
- # if (
- # False
- # or mail["Subject"].contains("spring-2016-cs-42200")
- # or is_to_or_from(mail, "rkarandi@cs.purdue.edu")
- # ):
- # mail.move("INBOX.classes.2016-1.CS422")
- # return
- # # CS 456 (Programming Languages)
- # if piazza_topic(mail, "CS 456"):
- # mail.move("INBOX.classes.2016-1.CS456.Piazza")
- # return
- # # VFS 491 (Mafia in the Movies)
- # if (
- # False
- # or mail["Subject"].contains("spring-2016-fvs-49100")
- # or is_to_or_from(mail, "lawton@purdue.edu")
- # ):
- # mail.move("INBOX.classes.2016-1.FVS491")
- # return
- # # FRC 4272
- # if (
- # False
- # or mail["Subject"].contains("[ME297]")
- # or is_to_or_from(mail, "firstteam4272@gmail.com")
- # or is_to_or_from(mail, "@tscstudents.net")
- # or is_to_or_from(mail, "abenyeho@purdue.edu")
- # or is_to_or_from(mail, "Henry65@purdue.edu")
- # or is_to_or_from(mail, "chang282@purdue.edu")
- # ):
- # mail.move("INBOX.classes.2016-1.FRC4272")
- # return
-
- # Everything else #####################################################
- mail.move("INBOX.ham");
-
-handle_mapping = {
- "INBOX": my_filters,
- }
-processor.maildirs = handle_mapping.keys()
-for mail in processor:
- handle_mapping[mail.maildir](mail)