Roundcube: Spam mit procmail filtern, verschieben & löschen

Februar 4 2008

Seit ein paar Tagen habe ich Roundcube (Vorgestellt in: http://www.talk-web.de/2008/01/29/roundcube-tutorial/) produktiv im Einsatz und bin eigentlich sehr zufrieden. Doch eine Sache störte mich gewaltig: Roundcube bietet von Haus aus keine Möglichkeit Spam Mails automatisiert in den Spam bzw. Junk Ordner zu verschieben.

Roundcube Spam

Doch dieses Funktionseinschränkung kann man mit dem Programm "procmail" umgehen. Procmail ist ein Mail Delivery Agent (MDA), der zur verseitigen Filterung von eMail Nachrichten verwendet wird und Mails, die bestimmte Bedingungen erfüllen, in verschiedene lokale Ordner verschiebt.

Die nachfolgenden Installations- und Konfigurationshinweise beziehen sich auf ein Linux Suse 10.2 mit bereits laufendem qmail und spamassassin.

Als erstes müssen wir procmail runterladen und installieren, das geht entweder über das "Yast" oder über eine Shell mit dem Befehl

ug in procmail

Als nächstes muss man die Postfächer lokalisieren, die mit Benutzung von Roundcube unter:

/var/qmail/mailnames/domain.de/useraccount

zu finden sind.

Dort befindet sich auch eine Datei namens .qmail. Das ist die Konfigurationsdatei für qmail, in die man folgende Zeile einfügt:

| preline /usr/bin/procmail -m .procmailrc

Hinweis, diese Zeile nicht direkt an den Anfang kopieren, sondern vor die Zeile in der ./Maildir steht.

Danach kommentiert man die Zeile

| /usr/bin/deliverquota ./Maildi

aus, sodass die .qmail in etwas wie folgt aussehen sollte:

| /usr/local/psa/bin/psa-spamc accept
| true
| preline /usr/bin/procmail -m .procmailrc
#| /usr/bin/deliverquota ./Maildi

In zeile 3 wird qmail dazu aufgefordert, die eMails an procmail zur Filterung zu übergeben.
Zeile 4 muss unbedingt auskommentiert werden, da sonst eMails doppelt vorhanden sind.

Als nächstes erstellt man im Userhome-Verzeichnis (/var/qmail/mailnames/domain.de/useraccount) die Datei .procmailrc, welche als Konfigurationsdatei für procmail verwendet wird, mit dem Inhalt:

SHELL=/bin/sh
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin
HOME=/var/qmail/mailnames/domain.de/useraccount
MAILDIR=$HOME/Maildir/new
SPAM=$HOME/Maildir/.Junk/new
LOGFILE=$HOME/procmail.log
VERBOSE=off
 
:0fw
|spamassassin
 
:0:
* ^X-Spam-Flag: YES
{
  EXITCODE=99
  :0:
  $SPAM
}
 
:0: spamassassin.filelock2
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*
/dev/null
 
:0 w
$MAILDIR

Hinweis: Die Einträge "domain.de" und "useraccount" müssen natürlich durch die jeweilige Domain und die eMail Benutzer ersetzt werden.

Ihr könnt für jeden Benutzer eigene eine .procmailrc anlegen, um die Filter zu personalisieren.

Der Datei .procmailrc sollte ihr den Chmod 644 zuweisen.

Mit dieser procmail Konfiguration bewegen wir procmail dazu, erstmal alle Mails nach einer "X-Spam-Flag: YES" zu durchsuchen und wenn diese Zeile im eMail Header steht, in den Ordner /var/qmail/mailnames/domain.de/useraccount/Maildir/.Junk/cur" zu verschieben. Das heißt, Spammails landen direkt im Ordner "Spam" und nicht in der Inbox.

Weiterhin soll procmail überprüfen, ob das "X-Spam-Level" höher als 10 ist, wenn ja, dann sollen die mails direkt nach "dev/null" verschoben werden, ergo diese Spammails werden direkt gelöscht, um die Mailbox nicht unnötig aufzublähen.

Eigentlich sind wir soweit fertig, wir müssen nurnoch das Logfile anlegen, in das procmail schreibt:

touch procmail.log
chmod 666 procmail.log

Herzlichen Glückwunsch, nun ist eine automatische Spamsortierung in Roundcube integriert.

Bookmark this article!

DiggDel.icio.usGoogleBlinkListsBlogLinesBlogmarksBuddymarksCo.mmentsDiigoYahooNetvouz

7 Kommentare »

  1. Das hat bei mir ganz wunderbar funktioniert. Vielen Dank für die tolle Anleitung! Jetzt bin ich nur noch gespannt, ob das auf meinem Server mitlaufende Plesk beim nächsten Umkonfigurieren wieder alles umbiegt.

    Kommentar by Christian Bartels — 29. Juni 2008 @ 09:21
  2. Also was mir aufgefallen bei einem Plesk-Update ist, dass man die Datei /var/qmail/mailnames/domain.de/.qmail nach jedem Update wieder anpassen muss.

    Kommentar by Shaq — 1. August 2008 @ 07:57
  3. wird in Deinem Beispiel nicht zweimal Spamassassin aufgerufen, einmal im .qmail und dann nochmal in der .procmailrc ?

    Kommentar by dogsch — 8. September 2008 @ 11:28
  4. Das stimmt, aber das hat auch seine Berechtigung:
    In der .qmail wird mit der Zeile:
    | /usr/local/psa/bin/psa-spamc accept
    angegeben, dass Mails, die als Spam erkannt wurden, zugestellt werden und an procmail übergeben werden.
    In der .procmail wird dann definiert, in welchen Ordner Spam sortiert werden soll und dass z.B. Mails mit einem Score größer 10 sofort gelöscht werden.

    Kommentar by Shaq — 8. September 2008 @ 19:35
  5. aha ;-)

    kannst Du mir auch noch den Unterschied der Fächer “cur” and “new” im Maildir Verzeichnis erklären?

    Danke & Gruß aus Berlin

    der DOGSCH

    Kommentar by dogsch — 10. September 2008 @ 11:17
  6. Na klar, also erstmal werden alle eingehenden emails im Ordner “new” abgelegt. Sobald du diese eMails abrufst, mit z.B. Thunderbird, werden diese in den Ordner “cur” verschoben.
    eMails im Ordner “cur” sind nicht länger neue eMails, sobald sie von einem eMail-Programm abgerufen werden.

    Damit das richtig funktioniert, muss in der .procmail-Datei in:
    MAILDIR=$HOME/Maildir/new
    geändert werden. Habe ich oben geupdatet.

    Kommentar by Shaq — 10. September 2008 @ 18:55
  7. ok, vielen Dank – haste vielleicht auch Anleitungen zum SPAM anlernen, denn es rutschen immernoch ziemlich viele durch.

    Danke & Gruß aus Berlin

    DOGSCH

    ps. speilst Du Basketball – wegen Deinem Nickname?

    Kommentar by dogsch — 11. September 2008 @ 09:15

RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

Hinterlasse einen Kommentar