制文件不存在,则procmail只是简单的将邮件保存到用户的信箱中。
一般来说,.procmailrc文件由配置行和行为规则组成。配置行是一些基本参数的设置
,不过一般配置行可以不写;而行为规则通常由(查询)(行为)完成,下面是一个简
单的例子:
:0 H
* ^From:.*test@mydomain.com
{
{
:0 c
! who@somewhere.edu
:0
testsave
}
这个.procmailrc文件将所有来自test的信件转发给who@somewhere.edu,同时在本地
留一个保存一个备份在文件testsave中。
上面的形式是.procmailrc行为规则的基本格式,规则的一般格式是
:0 选项
[零个或多个条件,每个一行]
[动作命令]
:0表示开始一条规则,后面可以加上一些单字符的选项,选项主要有下面的一些:
H 搜索匹配邮件头部
B 搜索匹配整个邮件
D 匹配时区分大小写
A 如果前面最近的一个没有A或a选项的规则执行,执行本规则
a 如果上面一条规则执行,则本规则执行
E 同A相反,前面最近的没有E或e选项的规则没有执行,则执行本规则
e 同a相反
h 通过管道传送邮件首部(缺省)
b 通过管道传送邮件主体(缺省)
c 复制一个邮件
I 忽略所有写操作中的错误
r 原始模式,即procmail不对mail进行任何模式的处理
条件用一个*号开始,后面跟上正则表达式(参考第十一章)。
动作命令就是procmail在规则成功之后使用的命令,一般的命令有下面一些:
{}
开始一个语句段,表示把一组命令集合成一个动作。如果你要嵌套处理规则,(例如
,对于来自test的邮件,区分是含有computer字符串还是含有physics字符串)那么必须
使用语句段把子规则括起来。
!
转发信件给某个用户
|
启用管道将邮件传送给后面的程序,例如|auto-reply表示启动auto-reply程序并且将
邮件内容作为标准输入传递给它
任意文件名
将邮件存入某个文件。如果文件已经存在,就添加在文件的末尾。
显然,前面的.procmailrc的含义是:
:0 H开始了一个对邮件头部的搜索,^From.*test@mydomain.com表示邮件头部发现了
From: test@mydomain.com之类的内容,于是行为规则被启动。这里的行为规则是一个语
句块,因此在语句段里面的子规则被执行。
:0 c开始的规则首先复制一份副本,然后将邮件转发给who@somewhere.edu,这样邮件
本身消失了,但是副本仍然存在,于是副本继续执行下面的:0规则组,这个规则是存储
邮件到文件testsave,于是,邮件副本也被处理掉了,正好规则结束。
对于熟悉perl或C语言的的用户,很容易用procmail的管道功能做出邮件的自动回复程
序,这里不再介绍了,想进一步了解procmail的用户可以用
man procmail
man procmailrc
man procmailex
获得更加详细的信息。
7.1.5 Fetchmail
许多用户有多个邮件账户,有些在你的管理范围之内,有些在别的服务器上面。管理
所有这些邮件是非常恶心的事情。另外,也许你的系统仅仅是一个拨号代理(参考第八
章),不可能始终接在internet上面。你需要的是在系统连接到internet的时候发出电
子邮件,同时自动去接收电子邮件。在国内,典型的做法是每人申请一个本地电子邮件
账户和一个免费电子邮件账号,问题就是,如何从另外的ISP提供的电子邮件账号哪里自
动地接收邮件?
当然你可以让你的用户自己解决这个问题,不过这种僵硬的方法不见得合适。一般我
们采用另外的办法,就是fetchmail,它是一个自动的邮件接力程序,可以让它从远程的
pop3账号处取得邮件,然后扔进用户的本地邮箱。(关于pop3的情况参考下一节)
可以直接用命令行调用fetchmail:
$ fetchmail –p [协议] -u [用户名] [服务器]
fetchmail得到的信息将直接投入localhost机器,账号是你启动fetchmail时使用的账
号。
$ fetchmail -p POP3 -u yuanban mail.asnc.edu.cn
Enter password for yuanban@mail.asnc.edu.cn:
使用pop3协议从mail.asnc.edu.cn取得yuanban的信件。fetchmail要求你输入yuanba
n的密码,然后进行验证,成功的话会出现下面的信息:
1 message for yuanban at mail.asnc.edu.cn (551840 octets).
reading message 1 of 1 (551840 octets) ...................................
.....d
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:SSH使用指南
下一篇:SSL中间人攻击
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】