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中
:0
* ^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
可以获得更加详细的信息
gadfly 回复于:2003-05-22 13:26:35呵呵,不知道和maildrop比,有什么优缺点。
能更详细点就好了。
bycd 回复于:2003-05-23 11:40:40[quote:37416c5abe="gadfly"]呵呵,不知道和maildrop比,有什么优缺点。
能更详细点就好了。[/quote:37416c5abe]
man procmailex
netloafer 回复于:2003-05-23 12:20:58呵呵,不错的文章……