Procmail 规则与操作详解
1. Procmail 规则基础
Procmail 规则遵循简单的格式,但可通过多种标志和规则编写方式来指示其解释和执行规则中的指令。
-冒号行:所有规则通常以:0开头,后面可跟一个或多个标志和指令。历史上,冒号后会跟一个数字来指定规则中的条件数量,而当前版本的 Procmail 会自动确定条件数量,所以总是使用0。
2. 锁定机制
为避免多个进程同时写入同一文件,需要使用锁定机制,但该需求因过滤器尝试调用的进程类型而异。
-自动锁定:以:0:开头的规则会应用自动文件锁定。Procmail 会自动确定邮件要送达的文件名并创建锁定文件。若锁定文件已存在,会等待一段时间后重试创建锁定;若最终创建成功,则继续处理;若无法创建,则报告错误并继续处理下一个规则。例如:
:0 <flags>:- 强制锁定:特别是在通过外部脚本处理邮件时,可能需要强制锁定。多数情况下,Procmail 会通过检查进程命令行和输出方向来确定最终数据要写入的文件名。但如果脚本自行选择输出位置,或者依赖可能被其他 Procmail 进程更改的文件,则必须按以下方式明确请求锁定文件:
:0 <flags> :scriptname.lock不过,在