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

时间:2016-07-15 11:10:51

标签: 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 :(得分:0)

您可以使用基本分数为-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解释了这种机制。它没有被广泛使用,并且它有许多复杂性,但基础知识简单明了。