2007年10月22日星期一

procmail使用

procmail不区分大小写,它使用Unix最常用的模式匹配方式进行匹配特定的邮件。因此使用这些匹配模式和procmail规则,可以定义一个更复杂的.procmailrc:

  
PATH=$HOME/bin: /usr/bin: /usr/ucb: /bin: /usr/local/bin:.
SHELL=/bin/sh
MAILDIR=$HOME/mail
DEFAULT=$MAILDIR/mailbox
LOGFILE=/dev/null
SENDMAIL=/usr/lib/sendmail
:0:
* ^From.*badguy     
/dev/null/
:0c:
* ^(From|Cc|To).*freebsd.org
| gzip >> freebsdmail.gz
:0:
* ^From.*@hotmail.com
* ^Subject:.*(joke|funny)
{
  :0 c
  ! friend1@hotmail.com friend2@usa.net
  :0
  joke
}
:0
* ^Subject:.*order
* !^FROM_DAEMON
* !^X-Loop: marketing@company.com
{
  :0 h c
  | (formail -r -A"X-Loop: marketing@company.com " ; \
  cat /market/acknowlegement.txt ) | $SENDMAIL -t
  :0 c
  ! market2@company.com
  :0
  market
}

  这个配置文件的第一部分中设置了几个环境变量,用于设置procmail的运行环境,其中将 MAILDIR设置为~/mail,与pine使用的目录相同,因此这将使pine能直接读取procmail处理过的邮件。

  第二部分中为邮件定义了三个不同的过滤规则及相应的处理操作,第一个规则将来自badguy 的邮件滤掉(输出到/dev/null);第二个规则将与freebsd.org的通信使用gzip保存到freebsdmail.gz 中,用于保存相应maillist的邮件;第三个规则将某个使用hotmail帐号的朋友,并使用joke或funny标题给自己发送笑话的邮件同时转给其他几个朋友,并同时保存在joke文件夹中;最后一个规则是设置了一个自动回复邮件系统,对于使用order做标题,并且没有FROM_DAEMON行(自动邮件回复程序使用FROM_DAEMON 作标记,通常不需要回复这些的邮件,否则会造成回复循环),并且没有包括X-Loop行的邮件进行处理:

  首先将X-Loop行添加到邮件中(使用formail将它们添加到mail的信封上),以免造成对同一个邮件的循环处理,然后将文件/market/acknowlegement.txt发回给发送者;并以及转发邮件,在market中保存邮件。

  根据这些规则,使用Procmail就能完整的处理各种邮件,减轻电子邮件不断增多而造成的困扰。

没有评论: