.forward 配置文件,可以调用外部程序处理邮件,包括邮件杀毒、自动回复、邮件转发、备份、丢弃等等。
sendmail 如果配置了 smrsh,则对调用外部程序有所限制,需要针对 smrsh 作特殊处理,参见:FAQ
在 .forward 文件中设置使用 vacation 处理邮件:
\ric, "|/usr/bin/vacation -a allman eric"
which would send messages to you (assuming your login name was eric) and reply to any messages for ``eric'' or ``allman''.
Vacation returns a message, ~/.vacation.msg by default, to the sender informing them that you are currently not reading your mail. The message is only sent to each sender once per reply interval (see -r below). The intended use is in a .forward file. For example, your .forward file might have:
~/.vacation.msg 范例
Subject: Re:$SUBJECT From: Song ( 由 vacation 程式自动回信 ) $FROM 您好: 我目前无法看到这封信。 当我回来上班并看过这封信後,我会尽快给您回信。 谢谢。
如果想在回信中使用 Reply-To:,需要用参数 -r 调用 vacation。
vacation 会把回过信的邮件地址存入 .vacation.db 中,同时在 7 天之中不会再自动回覆相同的邮件地址。7 天是系统预设值,如要修改可在启动时使用 -tN 的参数,N 是天数,如:vacation -I -r -t1 song ,这样隔 1 天就会再自动回覆相同的邮件地址了。
vacation 执行时要用到使用者的 shell,如果使用者的 shell 被设成 /dev/null或是 /bin/false 的话,会有错误出现。
procmail就是一个用于过滤用户接收到的电子邮件,并能对其自动分类、处理的一个应用软件。
在 .forward 文件中设置使用 procmail 处理邮件:
"|/usr/bin/procmail"
procmail 的配置文件为:/etc/procmailrc,或者用户主目录下的文件 ~/.procmailrc 由环境变量和过滤规则组成。邮件的投递动作由第一个匹配的过滤规则确定。如果没有匹配任何规则,则执行确省的投递动作。
投递规则的格式如下(man procmailrc):
:0 [flags] [ : [locallockfile] ] <zero or more conditions (one per line)> <exactly one action line>
冒号——`:',开始一条规则。后面的 0,代表下面列出的条件表达式的个数不限制。
可能用到的标志有:
H (确省)
只对信头进行常规表达式匹配。
B
对信体亦作常规表达式匹配。
D
大小写敏感匹配。确省是大小写不敏感。
A, a
只有当前一个不带A或者a的条件表达式匹配,才进行条件判断。
E,e
相当于 Else If。
h(确省)
将信头送入管道、文件、目的地
b(确省)
将信体送入管道、文件、目的地
f
将管道视为过滤器
c
信件拷贝,即使匹配本条规则,仍去匹配其它规则
接下来是条件部分。条件判断以星号开始——`*',后面跟一个常规表达式。可以有零个或多个条件表达式。如果是多个条件表达式,则需要各个条件均匹配,即 and 的关系。如果没有条件表达式,则结果确省为真。
范例(man procmailex):
处理由crontab出发的邮件。对于不关心的邮件予以删除,对于关心的邮件,发送到邮件列表 list-cron。
:0: * ^Subject: Cron .* /bin/sh /www/up.sh /dev/null :0: * ^Subject: Cron .* list-cron
Forward all mail from peter about compilers to william (and keep a copy of it here in petcompil).
:0 * ^From.*peter * ^Subject:.*compilers { :0 c ! william@somewhere.edu :0 petcompil }
等价的表达式
:0 c * ^From.*peter * ^Subject:.*compilers ! william@somewhere.edu :0 A petcompil
等价的,但是速度稍慢的表达式
:0 c * ^From.*peter * ^Subject:.*compilers ! william@somewhere.edu :0 * ^From.*peter * ^Subject:.*compilers petcompil
Forward all mails shorter than 1000 bytes to my home address (no lockfile needed on this recipe).
:0 * < 1000 ! myname@home
Procmail 的FAQ,参见:Timo's procmail tips and recipes
Copyright © 2006 WorldHello 开放文档之源 计划 |