电子邮件是互联网上最重要的通讯手段和工具。从电子邮件诞生的那天起,无聊的垃圾邮件就成为了人们最头疼的问题之一。据说,世界上每年由于垃圾电子邮件给人们带来的损失就高达数亿美元。在Windows操作系统中也许您已经尝够了垃圾邮件给您带来的苦头,让您防不胜防。但是,不要以为在Linux操作系统平台中就能避免垃圾电子邮件给我们带来的骚扰,反击和过虑掉我们不需要的电子邮件就是一件很重要的工作。本文将详细介绍如何利用procmail来对付垃圾邮件。
9 ]8 g$ U: c4 q8 l 无用的电子邮件通常会影响我们的网络生活。在Linux操作系统下标准的电子邮件配置方案就是Sendmail 和 POP邮件服务器。很多使用Linux的朋友都在自己的Linux平台中安装了Sendmail和POP邮件服务器来接收和发送电子邮件。但是,Sendmail和POP邮件服务器只是作为Linux下发送电子邮件的工具,它们无法对付各式更样的垃圾邮件。在Windows平台中过虑垃圾电子邮件的软件和工具非常多,大多数软件采取的是过虑邮件主题和邮件名称等方式来判断一封电子邮件是否是垃圾邮件。不过,这样的做法是不能完全的过虑掉所有的垃圾邮件的,因为发垃圾邮件的无聊者早就考虑到了这一点,他们可以把邮件的主题写的和普通邮件相似,或者采用匿名邮件发送,这样就很轻易的欺骗了过虑垃圾邮件的工具软件。5 f& M; X4 U- b( B( D# w/ r1 _
在Linux操作系统中,过虑垃圾邮件我们需要很好的配置procmail这个程序,让它尽可能的过虑掉我们不需要的邮件。无论您在Linux中使用的是MTA (邮件传输代理,aka Sendmail) 还是 MUA(邮件用户代理, aka Netscape Mail),使用procmail这个程序一样可以过虑掉垃圾电子邮件。Procmail无需额外的下载安装,在您安装Linux系统的时候就可以默认安装Procmail了,Procmail是一个可以自定义的强大的过虑工具。系统管理员可以通过在客户端或者服务器端配置Procmail来对付恼人的垃圾邮件。- g6 m+ u4 e. ]: k2 ]: X
举例说明,如果你想过虑掉来自比尔·盖茨微软公司bgates@microsoft.com所有邮件,那么通过配置Procmail可以使得来自bgates@microsoft.com的邮件直接被送到Linux系统中的/dev/null目录里。具体的配置可以参考如下:5 \' B) q: g1 _8 U; K
:01 q$ {, Z6 F" D
* ^From.*bgates@microsoft.com( `" k D1 Q3 z/ X. Y
{( w' Z- ], U: t6 Y# X2 y
:01 _" K, t/ P; O/ \6 R1 g O
/dev/null2 P4 z% u& C3 N! e7 Z
}
" y5 P* V2 F2 Q 所有的procmail过滤器都保存在一个叫做procmailrc 的文件里。procmailrc 就保存在 /etc 目录中,或者在$HOME/.procmailrc 也能找到该文件。用户只要重新定义修改procmailrc文件就能使得procmail起作用,$HOME 对用户来说是一个HOME目录中的变量。典型的procmailrc文件里通常有下面的参数:
/ W( p" X6 I& K& W* K #
) Y5 C& ]8 r: g8 K, Y #
! G- V/ @7 q" C" b* ~' r # Begin /etc/procmailrc
7 k# R2 S6 k- |2 O6 E/ t+ Z #
: I$ V/ A$ }5 p; u, G #7 C% s' D' v; f9 P S& X5 c2 i7 U
ORGMAIL /var/spool/mail/$LOGNAME
( Y& e. Y2 ^) [ MAILDIR $HOME/
6 t" z! ^0 b) T/ G1 A- m. I* | Sendmail /usr/sbin/Sendmail& \% H, a- | c* b0 g3 M7 J
:0
5 `8 @- L' x7 A& p* n" \- c/ |; [' ? * ^From.*bgates@microsoft.com
; `& p+ }6 G( ^8 g5 t9 V! C {' V$ [6 L$ O2 [4 g& p' b
:02 b+ p. ^% h! l# C, y0 K" [
/dev/null
$ t& c- ?) |9 h, ]1 j }
& L6 N, S% O' U2 L #0 p' N0 s$ F6 Z T7 x; d; }
# End /etc/procmailrc
) ~; A/ ?( Y: i9 d. u #9 k' w5 r0 Q( b3 o' n5 u
对编程熟悉的朋友一看就知道这个文件的参数和变量是可以根据需要而改动的。' w: W% c7 D9 s, G
其中ORGMAIL变量是设定邮件目录在系统中全局变量的。以上的清单表明ORGMAIL已经把用户登陆目录指定为 /var/spool/mail/,$LOGNAME 就是用户的登陆名。MAILDIR 一看就知道是指定了当前procmail使用和执行的目录所在。上面的清单说明了MAILDIR是ROOT用户的HOME目录。
" z2 \, m _/ U! o$ p- L 前面已经说过了,procmail是一个强大的反垃圾邮件的程序。只要修改它其中参数它就会起相应的作用。如果我们不像把所有从bgates@microsoft.com 来的邮件直接送到/dev/null目录中,我们像把这些邮件留下来有时间来仔细分析是否它们都是垃圾邮件,那么我们可以进行以下的配置:* N% z7 E- h1 |; Z
:0
% x; G6 D7 ?: u' F * ^From.*bgates@microsoft.com
. h3 I3 D/ I4 o. Z1 r |4 u* v- e {8 c0 X, K3 i1 V5 q% T
:0
- {8 r7 J$ i/ o antitrust& Z3 _ \. n3 k
}4 g0 j6 q8 A' [
这样,从bgates@microsoft.com 发过来的电子邮件就会被保存到一个叫做antitrust的目录中,当然,那必须要通过修改MAILDIR变量才能生效。为了使得从bgates@microsoft.com 发过来的电子邮件被Linux系统保存的更好,我们还可以进一步进行修改,例如:
/ v/ Z8 U) Q) \9 p* w( U" C :0
5 w! p( f9 d( [- k5 T4 I9 S* U * ^From.*bgates@microsoft.com
- l8 A1 y' T9 T7 H7 k: f% C {& E0 f5 Q& W( ~% U
:0. a/ P- Q, ?8 y2 Z3 s
mail/antitrust! i7 h6 o5 T7 G
}
& Y" S/ C3 R& L% p. [ 这样,antitrust就不必使用$HOME/mail目录,安全系数就要比原来的修改方式要高一些。您想过虑的垃圾邮件和您的正常邮件就不会放在同样的一个目录中了。如果把要过虑的垃圾电子邮件和有用的邮件都放在/ROOT目录中是不够安全的。
8 |2 ~' k0 `# T9 O" ^% x 以上只是介绍了过虑发邮件地址的方法,现在我们还可以把过虑地址和过虑主题等多种方式结合起来使用,那样过虑垃圾电子邮件的效果会更好一些,下面就是多种方法结合过虑垃圾邮件的方法:
1 H* F# b1 K1 f: C1 E) ` :0# ]5 }$ e4 x) t5 \5 r
* ^From.*bgates@microsoft.com
1 [3 [) W E; l) f* h * ^Subject:.*competition
9 q# [. K7 |' k {' t: K+ E4 \7 ~
:0" {" j; {% y# r/ I5 D& ?5 X* b3 f
mail/antitrust
/ E2 s" E7 Q3 p }' g$ L; U8 q6 J; S
从上面的清单可以看出,我们这次不但可以过虑掉来自bgates@microsoft.com 的电子邮件,而且只要电子邮件中带有“competition”字样的主题邮件也被过虑掉了。当然,根据实际需要,用户可以设定过虑的电子邮件的主题,不仅仅限制与competition这个单词。符合以上条件的电子邮件将被送入mail/antitrust 这个指定的区域。- C' Q! l% M6 W4 v0 B
有时候我们需要转发某些电子邮件,这时候我们也可以通过以下配置来完成:
' b! P1 ]1 [! U1 S :0
1 |$ q, y$ j0 k3 T7 ^, \: u * ^From.*bgates@microsoft.com
. ^, U6 L9 C3 f, h9 Y * ^Subject:.*competition
& Y( O9 J+ `! }5 L# I9 t1 W {5 g/ v6 P9 H! Z) x+ L& N( J! n7 A
:0 c, E5 G) f/ t" A# Z& X) G; s* a
! justicedept@us.gov
: ?! w: @3 y& W h; x6 f6 o. ` :08 j( ]9 I2 ~0 M; A! ~' _
mail/antitrust
+ p2 F" i* ~- U) J }
& S* a! O- V4 G8 [ 从以上清单可以知道,来自bgates@microsoft.com并且带有"competition" 的电子邮件就会被Linux系统转寄到justicedept@us.gov,然后这些邮件也被送到mail/antitrust中。8 o) t0 v8 M2 W& x% V
还有以下这样的配置也非常实用:' c* a% \# F5 f$ d6 `# D' \
:0
+ F! ?$ S4 q9 {1 _4 Z * ^From.*bgates@microsoft.com
' c% U: t- y9 ^, w$ H& T+ u * ^Subject:.*competition) _4 Z7 M# R* u
{( _! R3 `8 u! O5 D9 b+ C! o
:0 c) {" P/ @: x/ ?
! justicedept@us.gov
, I& u }, E% x! x8 n. ` :0$ o* n* f. g' P, Y6 a: u
mail/antitrust
# |8 M4 X9 `+ P$ m% K/ ] }8 E; p9 W, K, k
:0& @. Z& W: v2 Y6 c2 W& b0 j* A, K
* ^From.*sexcity
' E+ Z. T9 t$ z {2 j% a9 q- m+ S7 F
:0( O& v% }6 n' n) L
/dev/null
$ p b! \; g# J( S4 |, H }% X" K2 w/ N: z% Q0 R4 V
第一行参数很好理解,第二行则是把来自sexcity的邮件送到/dev/null中。* K9 ]; i2 |1 b+ O% {; l6 k# D
从上面那么多个配置清单中我们可以看到要配置procmail不是一件困难的事情,但是您还是要注意,如果您在配置procmail的时候出了错,那么您可能会破坏掉整个系统中的电子邮件配置,配置好procmail后不要忘记对系统进行测试。
/ V8 A/ X3 ` _$ H" K- ]- e 最后要提醒大家的是,procmail尽管是一个强大的反垃圾邮件的程序,但是我们也要遵循Sendmail的基本原则,不能随便修改procmail的参数,不然您的Linux发送邮件的系统可能不能正常工作,如果您在配置反垃圾邮件方面遇到了问题,请到Sendmail的主页上查看FAQ,那里有许多解决此类问题的办法。: ~* i5 O8 ^% c$ j* x
|