检查三个procmail条件中是否至少有两个是真的

检查三个procmail条件中是否至少有两个是真的

问题描述:

如何检查procmail至少两个垃圾邮件过滤器是否将邮件视为垃圾邮件?由于对垃圾邮件标题进行了多次检查,我不想重复代码。检查三个procmail条件中是否至少有两个是真的

# Invoke bogofilter 
:0 fw 
| bogofilter -C -d /home/shared_directories/bogofilter -p -e 

# Invoke bmf 
:0 fw 
| bmf -d /home/shared_directories/bmf -f text -p 

# Invoke spambayes 
:0 fw 
| sb_filter -d /home/shared_directories/spambayes 

# If two out of three filters agree it's spam, file it. 
:0 
* ^X-Bogosity: Spam 
* ^X-Spam-Status: Yes 
* ^X-Spambayes-Classification: spam 
{ 
# Process the mail 
} 

您可以使用基数为-1的评分。

:0 
* -1^0 
* 1^0 ^X-Bogosity: Spam 
* 1^0 ^X-Spam-Status: Yes 
* 1^0 ^X-Spambayes-Classification: spam 
{ 
    # ... stuff 

如果一个条件匹配,得分只会变为零,所以复合结果不匹配。如果两个或两个以上的条件使得分数高于零,则采取行动。

procmailsc manual page解释了这种机制。它使用的并不是很广泛,它有很多复杂性,但基础很简单,直接。