maildroprc -> Spam-Mails ab bestimmter Score löschen

nate

Registered User
Hallo alle zusammen

mittlerweile habe ich Maildrop zum laufen bekommen und eine Filterung (Verschieben) nach Betreff funktioniert auch einwandfrei.

Das was ich jetzt noch gerne machen würde, ist folgendes. Ich würde gerne alle Spammails, die vorher von Spamassassin eingestuft wurden, verschieben. Jedoch nicht alle, sonst wäre die Sache ja zu einfach ;-)

Es sollen alle Mails, die eine Score von 10 oder mehr haben in ein anderes Verzeichnis verschoben werden.

Hier ein Auszug aus einem Mail-Header, von einer als Spam eingestufte Mail (gtube):

Code:
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.1.7-deb (2006-10-05) on 
	xyz.de
X-Spam-Level: **************************************************
X-Spam-Status: Yes, score=899.4 required=2.5 tests=BAYES_00,GTUBE,
	RCVD_IN_SORBS_DUL,USER_IN_WHITELIST autolearn=no version=3.1.7-deb

Die maildroprc soll nun das "X-Spam-Level" überprüfen, und wenn entsprechend viele Sterne vorhanden sind, die Mail verschieben.

Das Verschieben selbst ist kein Problem, ich weiß nur nicht, wie ich maildrop dazu bringen kann, die Sterne zu zählen :-)

Vielleicht könnt Ihr mir ja helfen ...

Vielen Dank!
 
Der Schnipsel zählt schon mal die Sterne :D

Code:
echo -n "**********" | sed -e 's/[^*]//g' | wc -m

Ps. Da habe ich doch glatt mal mein Filterscript für den Spamassassin rausgekramt:

Code:
MAXSCORE="8"
SCORE=`/bin/cat filtered.$$ | /bin/grep -a -m 1 "^X-Spam-Level:" | /bin/awk '{ print $2 }' | /usr/bin/wc -m | /bin/sed 's/[[:s/[[:space:]]*//'`
if [ $SCORE -ge $MAXSCORE ]; then
               .....
fi
else
              .....
fi

Gruss Rico

filtered.$$ ist ein Temp-File mit dem Inhalt der Mail.


Viel Spass
 
Last edited by a moderator:
Sooo ... loift!

Ich hab mal n bisschen rumgewurschtelt und nach einiger Tüftelei, muss ich sagen, dass mir meine Lösung am besten gefällt :-)

Code:
if (/^X-Spam-Level: \*{10,}$/)
{
  to /dev/null
}

Das lässt sich natürlich noch beliebig erweitern, z.B. mit verschachtelten If-Abfragen, oder einem Löschprotokoll, aber da mein Mailserver sehr zuverlässig arbeitet vertrau ich ihm das Löschen gerne an.

In einem zweiten Schritt verschiebe ich alle Mails (sofern sie als Spam gekennzeichnet ist und weniger als 10 Punkte hat) in meinen Papierkorb. Dies funktioniert natürlich nur unter Imap.

Code:
if (/^X-Spam-Flag: Yes/)
{
  to "$MAILDIR/.Trash/"
}

Vielleicht kann jemand ja diese paar Zeilen genauso gut gebrauchen und freut sich über diesen Post :-)
 
Back
Top