Spamassassin - Mails aussortieren

archer2000

New Member
Hallo allerseits,

ich habe nun seit knapp 3 Wochen Spamassassin erfolgreich meinem auf VServer laufen. Nach mehr als 10.000 Spam Mails fällt auf, das 90% aller Spams mit 20 Punkten und mehr bewertet werden. Nun ist meine Idee, alle Mails mit mehr als 20 Punkten (wahrscheinlich reichen sogar schon 10 Punkte) zu direkt zu löschen, oder wenn möglich abzuweisen. Ich habe erst eine Ham gefunden, welche mit 5,2 Punkten als Spam gewertet wurde. Von dahher gehe ich davon aus, das normale Mails niemals mehr als 20 Punkte bekommen werden. Falls dies dann doch mal vorkommt, habe ich halt pech gehabt.

Meine Idee lautet, nach dem spamc die Mail markiert hat, z.B. das Spam-Flag im Header auszulesen, und bei mehr als 20 Punkten (also *) die Mail zu kicken. Gibt es da vlt. schon eine Lösung?

Viele Grüße
Dennis
 
@Basti: Vielen Dank für die Info :) - Manchmal geht man echt blind durch die Welt. Ich hatte vor geraumer Zeit schon mal was über procmail gelesen ...

Ich rufe nun in der .qmail des Postfaches die .procmailrc folgendermaßen auf:
Code:
| preline /usr/bin/procmail -m .procmailrc

Soweit, sogut. Dann habe ich meine .procmailrc zusammengestellt, wie es auch mehrfach hier im Forum zu finden ist:
Code:
SHELL=/bin/sh
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin
HOME=/var/qmail/mailnames/URL/test
MAILDIR=$HOME/Maildir/new
LOGFILE=$HOME/procmail.log
VERBOSE=on

:0
* ^X-Spam-Level: \*\*\*\*\*
{
    LOG = "*** SPAM DELETED *** "    
    :0
    /dev/null
}

:0
* ^Subject:.*XYZ
/dev/null

$MAILDIR

Die Regel Subject:.*XYZ schlägt auch zu, und die Mail kommt nicht im Postfach an:

Code:
procmail: [7334] Fri May  9 11:25:41 2008
procmail: No match on "^X-Spam-Level: \*\*\*\*\*"
procmail: Match on "^Subject:.*XYZ"
procmail: Assigning "LASTFOLDER=/dev/null"
procmail: Opening "/dev/null"
From info@URL Fri May 09 09:25:41 2008
 Subject: XYZ 3
  Folder: /dev/null                                                         931

Sende ich nun eine Mail mit einem Betreff AAA sende, heißt es Skipped "$MAILDIR" bzw. **Bounced** :(
Code:
procmail: [7351] Fri May  9 11:25:56 2008
procmail: No match on "^X-Spam-Level: \*\*\*\*\*"
procmail: No match on "^Subject:.*XYZ"
procmail: Skipped "$MAILDIR"
From info@URL Fri May 09 09:25:56 2008
 Subject: AAA
  Folder: **Bounced**                                                         0

Habe ich etwas übersehen?

Viele Grüße
Dennis
 
Wie es der Zufall will, habe ich gerade noch etwas rumgespielt, und es klappt :)

Code:
:0
* ^X-Spam-Level: \*\*\*\*\*
{
    LOG = "*** SPAM DELETED *** "    
    :0
    /dev/null
}

:0
* ^Subject:.*XYZ
{
	:0
	/dev/null
}

:0
$MAILDIR

das :0 VOR jedem Verzeichnis war entscheidend.

Nun heißt es in der Log:
Code:
 Subject: ABC
  Folder: /var/qmail/mailnames/URL/test/Maildir/new/msg.ID      936
 
Man sollte noch ein Blick auf das folgende Thema werfen:

Mittels DEFAULT erspart man sich die letzte Anweisung:
Code:
:0
$MAILDIR

Somit habe ich nun folgende modifizierte Version:
Code:
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/

Dadurch werden nun eindeutige Dateinamen (mit Unix-Time) der folgenden Art generiert:
Code:
1210328188.17825_0.URL:2,

Anstatt (doppelte Vergabe ist möglich):
Code:
msg.IDQIB:2,
 
Danke für die Erklärung! Der nächste mit dem selben Problem ist sicher froh wenn er eine Lösung findet!

Schönes Wochenende,
Basti
 
Kein Problem. Ich finde nichts schlimmer, als das Leute im Forum fragen und irgenwann schreiben "Habe es gelöst" und NICHT sagen wie ;)

Da ich gerade wieder den Fehler gemacht habe, hier auch nochmal der Hinweis:
In den Ordner, in den dann schlussendlich verschoben werden soll, MUSS am Ende das Slash angefügt sein, da sonst die Namen nicht eindeutig sind und die Mails nicht in nach new/ verschoben werden.

So kann man sich z.B. auch ein Spam-Account einrichten
Code:
SPAMHOME=/var/qmail/mailnames/URL/spam
SPAMMAILDIR=$SPAMHOME/Maildir

Und eine Regel (ab 10 Punkten die Mail in das Spam-Postfach verschieben) lautet dann z.B.
Code:
:0
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*
{
   LOG = "*** SPAM DELETED *** "    
   :0
   $SPAMMAILDIR/ # <<<<< Das Slash NICHT vergessen, sonst sind die Namen NICHT eindeutig.
}

Ich denke, nun sollte das Thema weitestgehend komplett sein :cool:
 
Hallo zusammen,

ich habe nun auch "zig" Seiten gelesen (zuletzt diese) und häng mich jetzt einfach mal hier an ;)

Folgende Konstellation:
Ich möchte Mails, welche mehr als 10 Spampunkte haben sofort löschen und welche, die mehr als 5 haben in ein dafür eingerichtetes Spampostfach weiterleiten.

Dafür habe ich folgende .procmail angelegt:

Code:
SHELL=/bin/sh

PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin

SPAMHOME=/var/qmail/mailnames/meinedomain/spam
SPAMMAILDIR=$SPAMHOME/Maildir

MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/

LOGFILE=$SPAMHOME/procmail.log
VERBOSE=on

:0
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*
{
    LOG = "*** SPAM DELETED *** "    
    :0
    /dev/null
}

:0
* ^Subject:.*SPAM
{
	:0
	/dev/null
}

:0
* ^X-Spam-Level: \*\*\*\*\*
{
   LOG = "*** SPAM DELETED *** "    
   :0
   $SPAMMAILDIR/ 
}

Das klappt soweit auch, nur kommen die Mails trotzdem im Zielpostfach an.
Die procmail.log sagt dazu:
Code:
procmail: No match on "^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*"
procmail: Match on "^Subject:.*SPAM"
procmail: Assigning "LASTFOLDER=/dev/null"
procmail: Opening "/dev/null"
From [email protected] Mon Jun 30 03:43:56 2008
 Subject: Fw: *****SPAM***** Ihr Geld ist da
  Folder: /dev/null							   9941

Kann mir bitte jemand helfen - ich verbringe damit nun schon Stunden und Tage :confused:
 
Last edited by a moderator:
Heureka

Ich glaube ich habs! Wenn man sich https://serversupportforum.de/threads/procmail-loescht-nicht-aus-dem-posteingang.13355/ nochmal ansieht, kommt man drauf. Man muss den Exitcode=99 mit einbauen.

Meine aktualisierte .procmailrc sieht nun so aus:
Code:
SHELL=/bin/sh

PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin

SPAMHOME=/var/qmail/mailnames/meine-domain/spam/
SPAMMAILDIR=$SPAMHOME/Maildir

DEFAULT=Maildir/new

LOGFILE=$SPAMHOME/procmail.log
VERBOSE=on

:0
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*
{
    EXITCODE=99
    LOG = "*** SPAM DELETED *** "   
    :0
    /dev/null
}


:0
* ^X-Spam-Level: \*\*\*\*\*
{
   EXITCODE=99
   LOG = "*** SPAM DELETED *** "   
   :0
   $SPAMMAILDIR
}

:0:
* ^X-Spam-Flag: YES
{
   EXITCODE=99

   :0:
   /dev/null
}

So wie es aussieht funktionierts jetzt super und genauso wie ich wollte ;)
 
Hi, bitte bedenke dass "Mails einfach so löschen" in Deutschlang rechtlich ein Problem sein dürfte! Wenn die Mail erstmal angenommen ist, musst Du sie auch zustellen. Günstiger wäre es wenn diese Mails in ein "Spampostfach" verschoben werden.

lg Basti
 
Hallo traced,

danke für deine Antwort. Ja ich weiß dass das rechtlich ein Problem ist. Deshalb habe ich auch die Abstufung gemacht. Wenn eine Mail aber über 10 Spampunkte hat, dann ist "eigentlich" immer Spam ;)
 
Mod: Fullquote entfernt!

Ich denke, solange es sich um ein eigenes Postfach handelt (und ich keine anderen), ist es doch folgendes dasselbe:
(a) Ich verschiebe alle Mails mit mehr als 20 Punkten in ein Spam-Postfach -> Ich lösche diese zu Fuss.
(b) Ich lösche alle Mails mit mehr als 20 Punken direkt durch ein Script.
 
Last edited by a moderator:
Naja, ein Unterschied ist da schon. Wenn ich sie in einen Spamordner verschiebe habe ich die Möglichkeit mir die vorher noch einmal anzusehen bevor ich sie lösche. Es könnte ja auch mal "aus Versehen" eine wichtige Mail falsch bewertet worden sein von SpamAsssassin und dann sofort gelöscht. Von daher ist es schon ein Unterschied ;)
 
Ja okay, stimmt schon. False-Positive gibts immer.
Aber ein Respekt demjenigen, der mit einer normalen Mail 20 Spam-Punkte bekommt :) ...
 
Back
Top