1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# -*- mode: python; -*-
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 (
is_to_or_from(mail, topic+" on Piazza")
or mail["Subject"].contains(topic+" on Piazza"))
def my_filters(mail):
# Generic stuff ########################################################
if mail["Subject"].contains("[PASE]"):
mail.move("INBOX.PASE")
return
if (
False
or mail["Subject"].contains("[PLUG]")
or is_to_or_from(mail,"Purduealumni@purdue.edu")
or is_to_or_from(mail,"pase@purdue.edu")
):
mail.move("INBOX.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.mailhub-admin")
return
if mail["From"].matches("pmx-.*@purdue.edu"):
mail.move("INBOX.spam")
return
if is_to_or_from(mail,"linkedin.com"):
mail.move("INBOX.LinkedIn")
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")
):
mail.move("INBOX.CollegeStation")
return
if mail["From"].matches("facebook(|mail)\.com"):
mail.move("INBOX.Facebook")
return
if (
False
or mail["Subject"].contains("[CS Opportunity Update]")
or mail["Subject"].contains("[CS Majors]")
):
mail.move("INBOX.CS")
return
# Fall 2012 ############################################################
if mail["Subject"].contains("Fall-2012-SCI-21000-001:"):
mail.move("INBOX.classes.2012-2.SCI210")
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
if mail["Subject"].contains("Fall-2012-SOC-10000"):
mail.move("INBOX.classes.2012-2.SOC100")
return
# Spring 2013 ##########################################################
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
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
if mail["Subject"].contains("Spring-2013-SOC-22000"):
mail.move("INBOX.classes.2013-1.SOC220")
return
handle_mapping = {
"INBOX": my_filters,
}
processor.maildirs = handle_mapping.keys()
for mail in processor:
handle_mapping[mail.maildir](mail)
|