2016-07-15 13 views
1

Wie überprüfe ich in procmail, ob mindestens zwei von drei Spam-Filtern die E-Mails als Spam sehen? Ich möchte aufgrund mehrfacher Überprüfungen der Spam-Header keinen doppelten Code haben.Überprüfen Sie, ob mindestens zwei von drei procmail-Bedingungen zutreffen

# 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 
} 

Antwort

0

Sie können Scoring mit einem Basiswert von -1 verwenden.

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

Wenn eine einzelne Bedingung übereinstimmt, wird der Wert nur auf Null gesetzt, sodass das zusammengesetzte Ergebnis nicht übereinstimmt. Wenn zwei oder mehr der individuellen Bedingungen die Punktzahl über Null bringen, wird die Aktion ausgeführt.

Die procmailsc manual page erklärt diesen Mechanismus. Es ist nicht sehr weit verbreitet und es hat eine Reihe von Komplexitäten, aber die Grundlagen sind einfach und unkompliziert.