-
Notifications
You must be signed in to change notification settings - Fork 4
/
procmailrc
202 lines (169 loc) · 4.26 KB
/
procmailrc
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
# 使用 Maildir 格式保存信件
# 用户邮箱目录的位置
MAILDIR="/sun/mailroom/"
# 分拣日志保存的位置
LOGFILE=$MAILDIR".procmail.log"
# 邮件转换程序
FORMAIL="/usr/bin/formail"
# 使用简单日志
VERBOSE=off
# 本地化邮件日期 {{{1
# 既显示发送者所在时区的时间,也显示接收者所在时区的时间
# 邮件日期 Tue, 31 Oct 2006 20:24:16 -0600 (CST)
# 本地化后 Wed, 2006-11-01 10:24 +0800 | Tue, 20:24 -0600
:0
* ^Date: \/.*
{
date = `echo "$MATCH" | grep -E -o '^[^\(+-]*'`
zone = `echo "$MATCH" | grep -E -o '[\(+-].*$'`
org_date = `date +'%a, %R' -d "$date"`
loc_date = `date +'%a, %F %R %z' -d "$MATCH"`
:0 fhw
| $FORMAIL -I "X-LDate: ${loc_date} | ${org_date} ${zone}"
} # }}}1
# 本地化邮件标题 {{{1
# 先由 MIME(B or Q) 解码,再由 UTF-8 编码
# ref@http://comments.gmane.org/gmane.mail.procmail/47948
#
# 原始邮件的Subject字段可能跨行
#
# formail 参数 (假设原始邮件的标题内容是: "Subject:_ABC")
# -zX 确认字段名(Subject:)和内容(ABC)之间有空格(_)
# -zx 确认内容(ABC)之前没有空格
#
# procmail 标记
# i 忽略传给管道的 Shell 命令的执行错误
#
# TODO 为什么先 encode UTF8 然后再 decode UTF8?
# MIME::EncWords::decode_mimewords 函数的返回值是字符串,问题是
# 在脚本中能够正常 print 的字符串,在命令行中显示的值是 ARRAY(...)
#
# NOTE
# 在实际匹配时,注意以下模式中的问号(??)
#
# ----
# :0
# * $X_Subject ?? 【VCS】
# gens-vcs-notify/
# ----
:0 Hiw
X_Subject=| $FORMAIL -zfxSubject \
| perl -pe 's/(^\s*|\n$)//sg' \
| perl -MEncode -MMIME::EncWords -ne 'print decode("UTF8", encode("UTF8", MIME::EncWords::decode_mimewords($_, Charset => "UTF8")))'
# }}}1
# 本地化邮件正文 (前5行) {{{1
# 先处理 procmail 传给管道的内容(可由以下方式调试)
# X_Context=| tee > /tmp/debug.txt
#
# 再由 mailtextbody 工具取出中文,只取前 5 行
#
# procmail 标记
# r 禁止在文件末尾新增一空白行。否则 mailtextbody 不能正常工作
#
# XXX 配方如果添加了 `f` 标记,日志会抱怨:
# procmail: Extraneous filter-flag ignored
# 理解为:用管道为变量赋值时,不需要加 `f` 标记。
:0 HBrw
X_Context=| tail -n +2 | mailtextbody | nkf -w | head -5
# }}}1
# 处理公司邮件 {{{1
# INCLUDERC=$MAILDIR".procmailrc"
# }}}1
# 处理 QQ 邮箱 {{{1
:0
* ^(List-Id|To|CC|BCC|From):.*s5unty@qq\.com
{
:0 fhw
| $FORMAIL -I "X-Label: qq"
}
# }}}
# 关注的邮件列表 {{{1
:0
* ^(List-Id|To|CC|BCC):.*(debian-l10n-chinese)
{
:0 fhw
| $FORMAIL -I "X-Label: l10n"
:0:
debian-zh/
}
:0
* ^(List-Id|To|CC|BCC):.*(debian-chinese-|debian-l10n-chinese)
debian-zh/
:0
* ^(List-Id|To|CC|BCC):.*debian-www.lists.debian.org
debian-www/
:0
* ^(List-Id|To|CC|BCC):.*debian.*mentors.*(googlegroups.com|debian.org)
debian-mentors/
:0
* ^(List-Id|To|CC|BCC):.*ubuntu-zh
ubuntu-zh/
:0
* ^(List-Id|To|CC|BCC):.*(awesome-devel)
awesome/
:0
* ^(List-Id|To|CC|BCC):.*vim(im|-cn).googlegroups.com
vim-zh/
:0
* ^(List-Id|To|CC|BCC):.*shlug.googlegroups.com
shlug/
:0
* ^(List-Id|To|CC|BCC):.*szlug.googlegroups.com
szlug/
:0
* ^From:.*(amazon.cn|taobao.com|alipay.com)
shopping/
:0
* ^(List-Id|To|CC|BCC):.*fcitx.*@googlegroups.com
fcitx/
:0
* ^(List-Id|To|CC|BCC):.*<python-cn.googlegroups.com>
python-cn/
# }}}1
# 其他的邮件列表 {{{1
:0 h
* ^(List-Id|To|CC|Bcc):.*pkg-mono-devel.lists.alioth.debian.org
/dev/null
:0 h
* ^(To|CC|BCC):.*[email protected]
/dev/null
:0 h
* ^(To|CC|BCC):.*list.cn99.com
/dev/null
:0 h
* ^(To|CC|BCC):.*(packages.debian.org)
/dev/null
:0 h
* ^From:.*[email protected]
/dev/null
:0 h
* ^From:.*buzz+.*@gmail.com
/dev/null
:0 h
* ^From:.*[email protected]
/dev/null
:0 h
* ^(List-Id|To|CC|BCC):.*kde-china.kde.org
/dev/null
:0 h
* ^(List-Id|To|CC|BCC):.*directfb.org
/dev/null
:0 h
* ^(List-Id|To|CC|BCC):.*debian-www.lists.debian.org
/dev/null
:0 h
* ^(List-Id|To|CC|BCC):.*debian-boot.lists.debian.org
/dev/null
:0 h
* ^(List-Id|To|CC|BCC):.*debian-mentors.lists.debian.org
/dev/null
:0 h
* ^(List-Id|To|CC|BCC):.*debian-mips.lists.debian.org
/dev/null
:0 h
* ^(List-Id|To|CC|BCC):.*xfce-i18n.xfce.org
/dev/null
# }}}1
:0
* .*
personal/