Spamassassin mit Maildrop in Courier-Postfix-Installationen integrieren


cplinux // 23.05.2009 11:04

Kategorie: E-Mail-Server



Ich habe im Netz viele Tutorials dazu gefunden, aber keins passte 100% auf die Tutorials, die ich auch auf dieser Seite verfasst habe. Also schreibe ich hier nochmal exakt zusammen, wie man das am problemlosesten anstellt.
 
In diesen Tutorials verwalte ich die Mails in Courier in der Form /home/vmail/domain/account/
www.cplinux.de/e-mail-server/courier-imap-mit-mysql.html
www.cplinux.de/e-mail-server/postfix-mit-mysql-courier-konfiguration.html
 
 
Funktionsweise:
In diesem Tutorial verwende ich Maildrop, um bei Postfix ankommende Mails an maildrop zu übergeben, diese zu filtern (Spamassassin) und dann an an Courier auszuliefern.
 
 
Zunächst ändern wir die Postfix-Konfiguration ab. In der Datei /etc/postfix/master.cf tauschen wir die beiden Zeilen für den maildrop-Dienst wie folgt aus: 
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/bin/maildrop /etc/courier/maildroprc ${user} ${nexthop} ${sender}
 
 
 
Dann müssen die folgenden Werte in die /etc/postfix/main.cf eingetragen werden. Existierende Einträge müssen ersetzt werden:
local_destination_concurrency_limit = 1
mailbox_transport = virtual
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1
 
 
Jetzt benötigen wir das Paket courier-maildrop (alternativ funktioniert das auch mit maildrop).
Das Paket installiert man auf Debian mit
apt-get install courier-maildrop
 
 
Jetzt muß die Datei /etc/courier/maildroprc (im Falle von maildrop statt courier-maildrop ist es /etc/maildroprc) angelegt werden:
DEFAULT="/home/vmail/$2/$1/"
DOMAINDIR="/home/vmail/$2"

`[ -d $DOMAINDIR ]`
if ( $RETURNCODE == 1 )
{
`mkdir -p $DOMAINDIR`
}

`[ -d $DEFAULT ]`
if ( $RETURNCODE == 1 )
{
`maildirmake.courier $DEFAULT`
}

`[ -d $DEFAULT/.Junk ]`
if ( $RETURNCODE == 1 )
{
`maildirmake.courier $DEFAULT/.Junk`
}

exception {
xfilter "/usr/bin/spamc -u vmail"
if (/^X-Spam-Flag: YES/)
{
to "$DEFAULT/.Junk/"
}
}
 
Das Maildrop-Script prüft mittels Spamassassin, ob es sich um Spam handelt und sortiert die Mail ggf. in den Ordner Junk ein. Andernfalls landet sie im Posteingang.
 
Die oberen Passagen im Script sind dazu da, zu überprüfen, ob das Domain-Verzeichnis, das Mailbox-Maildir-Verzeichnis und der Junk-Ordner existieren. Wenn dem nicht so ist, werden die Ordner automatisch angelegt.
 
Da das Script von Postfix über den Benutzer vmail ausgeführt wird (siehe Eintrag in der /etc/postfix/master.cf, führt das zu keinen Berechtigungsproblemen mit Courier.
 
Das automatische Anlegen der Ordner ist auch praktisch, wenn man die Benutzer via mySQL verwaltet. So erspart man sich das manuelle Anlegen des Verzeichnisses auf dem Server. Eine Mail an die neue Adresse zu schicken genügt. :)
 
Das Maildrop-Skript läßt sich noch beliebig erweitern. Z.B. könnte man Mails ab einem gewissen Spam-Score direkt löschen und gar nicht erst ausliefern.
 
 
WICHTIG:
Die Datei /etc/courier/maildroprc muß jetzt noch die richtigen Berechtigungen bekommen:
chown vmail:vmail /etc/courier/maildroprc
chmod 700 /etc/courier/maildroprc
 
 
Jetzt noch Postfix neu starten und das war's!
/etc/init.d/postfix restart