📄 00000012.htm
字号:
* ^From:.*<A HREF="mailto:test@mydomain.com">test@mydomain.com</A> <BR> <BR>{ <BR> <BR> :0 c <BR> <BR> ! <A HREF="mailto:who@somewhere.edu">who@somewhere.edu</A> <BR> <BR> <BR> :0 <BR> <BR> testsave <BR> <BR>} <BR> <BR> 这个.procmailrc文件将所有来自test的信件转发给<A HREF="mailto:who@somewhere.edu,同时在本地">who@somewhere.edu,同时在本地</A> <BR>留一个保存一个备份在文件testsave中。 <BR> <BR> 上面的形式是.procmailrc行为规则的基本格式,规则的一般格式是 <BR> <BR> :0 选项 <BR> <BR> [零个或多个条件,每个一行] <BR> <BR> [动作命令] <BR> <BR> :0表示开始一条规则,后面可以加上一些单字符的选项,选项主要有下面的一些: <BR> <BR> H 搜索匹配邮件头部 <BR> <BR> B 搜索匹配整个邮件 <BR> <BR> D 匹配时区分大小写 <BR> <BR> A 如果前面最近的一个没有A或a选项的规则执行,执行本规则 <BR> <BR> a 如果上面一条规则执行,则本规则执行 <BR> <BR> E 同A相反,前面最近的没有E或e选项的规则没有执行,则执行本规则 <BR> <BR> e 同a相反 <BR> <BR> h 通过管道传送邮件首部(缺省) <BR> <BR> b 通过管道传送邮件主体(缺省) <BR> <BR> c 复制一个邮件 <BR> <BR> I 忽略所有写操作中的错误 <BR> <BR> r 原始模式,即procmail不对mail进行任何模式的处理 <BR> <BR> 条件用一个*号开始,后面跟上正则表达式(参考第十一章)。 <BR> <BR> 动作命令就是procmail在规则成功之后使用的命令,一般的命令有下面一些: <BR> <BR> {} <BR> <BR> 开始一个语句段,表示把一组命令集合成一个动作。如果你要嵌套处理规则,(例如 <BR>,对于来自test的邮件,区分是含有computer字符串还是含有physics字符串)那么必须 <BR>使用语句段把子规则括起来。 <BR> <BR>! <BR> <BR> 转发信件给某个用户 <BR> <BR>| <BR> <BR> 启用管道将邮件传送给后面的程序,例如|auto-reply表示启动auto-reply程序并且将 <BR>邮件内容作为标准输入传递给它。 <BR> <BR> 任意文件名 <BR> <BR> 将邮件存入某个文件。如果文件已经存在,就添加在文件的末尾。 <BR> <BR> 显然,前面的.procmailrc的含义是: <BR> <BR> :0 H开始了一个对邮件头部的搜索,^From.*<A HREF="mailto:test@mydomain.com表示邮件头部发现了">test@mydomain.com表示邮件头部发现了</A> <BR>From: <A HREF="mailto:test@mydomain.com之类的内容,于是行为规则被启动。这里的行为规则是一个语">test@mydomain.com之类的内容,于是行为规则被启动。这里的行为规则是一个语</A> <BR>句块,因此在语句段里面的子规则被执行。 <BR> <BR> :0 c开始的规则首先复制一份副本,然后将邮件转发给<A HREF="mailto:who@somewhere.edu,这样邮件">who@somewhere.edu,这样邮件</A> <BR>本身消失了,但是副本仍然存在,于是副本继续执行下面的:0规则组,这个规则是存储 <BR>邮件到文件testsave,于是,邮件副本也被处理掉了,正好规则结束。 <BR> <BR> <BR> 对于熟悉perl或C语言的的用户,很容易用procmail的管道功能做出邮件的自动回复程 <BR>序,这里不再介绍了,想进一步了解procmail的用户可以用 <BR> <BR> man procmail <BR> <BR> man procmailrc <BR> <BR> man procmailex <BR> <BR> 获得更加详细的信息。 <BR> <BR> 7.1.4 Fetchmail <BR> <BR> 许多用户有多个邮件账户,有些在你的管理范围之内,有些在别的服务器上面。管理 <BR>所有这些邮件是非常恶心的事情。另外,也许你的系统仅仅是一个拨号代理(参考第八 <BR>章),不可能始终接在internet上面。你需要的是在系统连接到internet的时候发出电 <BR>子邮件,同时自动去接收电子邮件。在国内,典型的做法是每人申请一个本地电子邮件 <BR>账户和一个免费电子邮件账号,问题就是,如何从另外的ISP提供的电子邮件账号哪里自 <BR>动地接收邮件? <BR> <BR> 当然你可以让你的用户自己解决这个问题,不过这种僵硬的方法不见得合适。一般我 <BR>们采用另外的办法,就是fetchmail,它是一个自动的邮件接力程序,可以让它从远程的 <BR>pop3账号处取得邮件,然后扔进用户的本地邮箱。(关于pop3的情况参考下一节) <BR> <BR> 可以直接用命令行调用fetchmail: <BR> <BR> $ fetchmail –p [协议] -u [用户名] [服务器] <BR> <BR> fetchmail得到的信息将直接投入localhost机器,账号是你启动fetchmail时使用的账 <BR>号。 <BR> <BR> $ fetchmail -p POP3 -u yuanban mail.asnc.edu.cn <BR> <BR> Enter password for <A HREF="mailto:yuanban@mail.asnc.edu.cn:">yuanban@mail.asnc.edu.cn:</A> <BR> <BR> 使用pop3协议从mail.asnc.edu.cn取得yuanban的信件。fetchmail要求你输入yuanba <BR>n的密码,然后进行验证,成功的话会出现下面的信息: <BR> <BR> 1 message for yuanban at mail.asnc.edu.cn (551840 octets). <BR> <BR> reading message 1 of 1 (551840 octets) ................................... <BR>.....d <BR> <BR> 表示已经完成了一封信件的转交。 <BR> <BR> 对于更复杂的情况,建议你使用fetchmail的配置文件,即用户宿主目录下面的.fetc <BR>hmailrc。这个文件的详细资料可以参考fetchmail的文档,这里只用一个简单地例子来 <BR>介绍它。我们看一个简单的.fetchmailrc范例: <BR> <BR> set syslog <BR> <BR> set postmaster "isee" <BR> <BR> poll 202.96.44.11 with proto POP3 and options <BR> <BR> envelope Delivered-To: <BR> <BR> user "mere" there with password "xxxxxxx" is <A HREF="mailto:isee@snail.home">isee@snail.home</A> here <BR> <BR> no keep <BR> <BR> user "isee" there with password "yyyyyyy" is <A HREF="mailto:isee@snail.home">isee@snail.home</A> here <BR> <BR> no keep <BR> <BR> 这个范例相当简单。fetchmail在读取配置文件的时候会忽略所有的"there","here", <BR>"and","with","has","wants","options"之类的单词。 <BR> <BR> 第一行set syslog程序定义fetchmail的记录文件使用系统记录功能。set postmaste <BR>r设置的是出错时的管理员账号,接下来的poll行定义了fetchmail使用的协议为POP3, <BR>连接的服务器是202.96.44.11。 <BR> <BR> envelope Delivered-To:这个选项比较有趣,它在信封上加上一个Delivered-To说明 <BR>,这主要是为了让fetchmail可以把信件投递到一些使用qmail(见下面)的系统中。 <BR> <BR> 接下来是fetchmail的主体部分,一个user的行定义了一个接力方法,现在的定义是取 <BR>得202.96.44.11服务器上mere账号的信件,取信的口令是xxxxxxx,然后投递到isee@sn <BR>ail.home,同样,isee的信件也被自动投递到<A HREF="mailto:isee@snail.home。no-keep选项表示不在">isee@snail.home。no-keep选项表示不在</A> <BR>原始服务器上保留邮件。 <BR> <BR> 下面是配置fetchmail的一些常用选项: <BR> <BR> set logfile 制定log文件 <BR> <BR> set syslog 使用系统log文件 <BR> <BR> via 指定DNS机器名来取代poll中的机器明 <BR> <BR> proto 指定协议 <BR> <BR> port 指定端口 <BR> <BR> timeout 指定超时时间 <BR> <BR> interface 指定网络界面 <BR> <BR> user 指定远程用户 <BR> <BR> is 将本地用户和远程用户联系起来 <BR> <BR> to 同is <BR> <BR> pass 口令 <BR> <BR> preconnect 连接开始前执行的外部命令 <BR> <BR> postconnect 连接结束后执行的外部命令 <BR> <BR> keep 在服务器上保留邮件备份 <BR> <BR> no keep 不保留邮件备份 <BR> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -