BBS水木清华站∶精华区

发信人: is (消逝的), 信区: Linux        
标  题: procmail 
发信站: BBS 水木清华站 (Wed May 26 21:49:01 1999) 
 
Procmail是一个自动化的mail处理过虑程序,在linux上已经作为sendmail 
缺省的本地邮递器,因此可以直接使用他而不需要什么其他特别的配置. 
如果你使用的还是sendmail+binmail,可以使用.forward文件,在其中加 
入 
| /usr/bin/procmail 
及可. 
 
procmail主要依靠~/.procmailrc中的信息来处理邮件. 
如果这个配制文件不存在,则procmail只是简单的将邮件 
保存到用户的缺省信箱中. 
 
首先简单介绍一下正则表达式. 
正则表达式,称为常规表达式,用于描述字符模式.procmail 
用其进行字符串匹配判断.常规表达式的基本语法有 
^              行首 
$              行尾 
( )            聚合元素 
(...|...|...)  或,可选项之一进行匹配 
               如:(abc|dev|ghi)可以匹配abc,dev,ghi 
[...]          封闭集中匹配一个字符 
               如:[abcde]可以匹配a,b,c,d,e 
[^...]         求补集中匹配一个字符 
 
+              一次或多次模式 
               如:aba+匹配aba,abaa...不匹配ab 
-              最多一次模式 
               如:aba-匹配ab,aba,不匹配abaa,abaaa.... 
*              零次或多次模式 
               如:aba*匹配ab,aba,abaa,abaaa...... 
.              匹配任意字符 
 
{n,m}          进行n-m次匹配 
{n}            进行n次匹配 
{n,}           进行至少n此匹配 
 
\s             空白符 
\S             非空白符 
\d             数字 
\d             非数字 
\w             字母或数字 
\w             非字母和数字 
 
procmail使用与egrep相同的正则表达式,缺省时忽略大小写. 
 
下面来看几个简单的例子 
 
将所有来自peter标题含有computer的信转发给william 
同时在本地留一个保存一个备份在文件petcomp中 

* ^From:.*peter 
* ^Subject:.*computer 

   :0 c 
   ! william@somewhere.edu 
 
   :0 
   petcomp 

 
这个也等价于 
0 c 
* ^From:.*peter 
* ^Subject:.*computer 
william@somewhere.edu 
 
  :0 A 
  petcomp 
 
规则的一般格式是: 
0 [flages] [:[locallockfile]] 
<零个或多个条件,每个一行> 
<动作命令> 
 
0是规则开始, 后面可以跟一些单字符选项.接着就是用*开头的正则表达式条件. 
procmail用内置的egrep对邮件首部进行搜索,如果满足所有条件则执行最后 
的命令,命令行{}表示复和语句,!表示要转信(forwarding),|表示要执行程序, 
邮件通过标准输入传递给程序.如果命令是文件名,则procmail直接将邮件存 
入该文件中 
 
下面是常用的选项: 
H   搜索匹配邮件头部 
B   搜索匹配整个邮件 
D   匹配时区分大小写 
A   如果前面最近的一个没有A或a选项的规则执行,则本规则有效 
a   如果上面一条规则执行,则本规则有效 
E   同A相反,前面最近的没有E或e选项的规则没有执行,则本规则有效 
e   同a相反 
h   通过管道传送邮件首部(缺省) 
b   通过管道传送邮件主体(缺省) 
c   产生一个复制 
I   忽略所有写操作中的错误 
r   源始模式,及procmail不对mail进行任何模式的处理 
 
以上只是Procmail的简单介绍, 
man procmail 
man procmailrc 
man procmailex 
可以获得更加详细的信息 
 
-- 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.119.79.80] 

BBS水木清华站∶精华区