Ich überlege ja schon ein paar Tage wie ich Postfix mit SpamAssassin verkuppeln kann.

Die meisten Lösungen die ich kenne verwenden dafür ein mehr oder weniger fragwürdiges Script, was mir ehrlich gesagt überhaupt nicht gefällt. Nach ein wenig Recherche im Internet bin ich auf SpamPD gestoßen.

SpamPD läuft als mehr oder weniger Transparenter Mailproxy (SMTP/LMTP) was natürlich Ideal für einen Post-Queue Filter bei Postfix ist. Hier beschreibe ich wie man sowas Debian/Ubuntu Konform in sein Postfix Setup einbinden kann. Bitte beachte das ich nicht darauf eingehen wie ein Mailserver funktioniert und was der tut usw...

Installation

Viel braucht man ja nicht, ein einfaches

sudo apt-get install spampd spamc
genügt vollkommen. Wer will kann natürlich noch zusätzliche Filter für SpamAssassin installieren.

Konfiguration

SpamPD

In der Datei /etc/default/spampd muss nicht viel gemacht werden. Was ich aber machen würde ist das Ändern der letzten beiden Zeilen, so das der ADDOPTS Block mit der separaten Config (/etc/spampd.conf) der ohne Kommentarzeichen davor ist.

Jetzt sollte man dem SpamPD noch neu starten, dies macht man am besten via

sudo /etc/init.d/spampd restart

Postfix

Bei Postfix wird es ein wenig komplexer, den Postfix soll ja alle Mails durch SpamPD jagen. Ich gehe davon aus das man die Defaults aus der /etc/default/spampd nicht weiter verändert hat.

Wenn man seine /etc/postfix/main.cf nicht total versaut hat genügt eine Änderung in der Datei /etc/postfix/master.cf. Zum einen muss natürlich der vorhandene smtpd alle Mails über den SpamPD jagen, dafür muss man diesen Eintrag

smtp      inet  n       -       -       -       -       smtpd
so ändern:
smtp      inet  n       -       -       -       -       smtpd
  -o content_filter=smtp:[127.0.0.1]:10025

Wer Postfix kennt kann dies natürlich auch direkt über die /etc/postfix/main.cf erledigen.

Jetzt sind die Mails zwar im SpamPD, aber dieser will die Mails ja auch wieder an den Postfix bringen (der kümmert sich ja um die Auslieferung an das Ziel). Dafür braucht man folgende Regel in der /etc/postfix/master.cf:

localhost:10026 inet n - n - - smtpd
  -o content_filter=
  -o myhostname=nospam.stefan-betz.net
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks=127.0.0.0/8
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o local_recipient_maps=
Dann noch ein kleiner Neustart von Postfix mit
sudo /etc/init.d/postfix restart
und alles wird gut.

Die Konfiguration von SpamAssassin kann man dann über die /etc/spampd.conf machen welche bei mir so aussieht:

use_bayes 1
bayes_path /var/cache/spampd/bayes
bayes_auto_learn 0
report_safe 0
Natürlich gibt es hier noch jede Menge Raum für Optimierungen ;-)