Dies ist der zweite Teil in der Anleitung zu Postfix, also ist die Fortsetzung zu Postfix unter Debian 7 installieren. Diese Anleitung fügt nun den Spamfilter Spamassassin zu Postfix hinzu. Für mich war es auch das erste Mal, aber die Konfiguration ging schneller, als gedacht.
Spamassassin wird dabei so konfiguriert, dass Spam zwar als Spam markiert wird, aber keine Email gelöscht wird. Das Filtern übernimmt dann euer Mailprogramm.
Voraussetzungen
Ihr benutzt die neuste Version von Debian 7 und habt Postfix bereits installiert. Ob dies nach der oben genannten Anleitung geschehen ist oder nicht, ist zunächst egal.
Spamassassin installieren
Zunächst installieren wir uns Spamassassin:
aptitude update aptitude install spamassassin spamc
Das war’s auch schon. Es werden natürlich viele benötigte Pakete mit installiert, aber der Overhead hält sich in Grenzen.
User mit beschränkten Rechten erstellen
Spamassassin läuft standardmäßig mit root Rechten. Da dies eine Sicherheitslücke ist und einfach zu beheben ist, erstellen wir zunächst einen eingeschränkten Benutzer und Gruppe:
groupadd -g 5555 spamd useradd -u 5555 -g spamd -s /sbin/nologin -d /usr/local/spamassassin spamd mkdir -p /usr/local/spamassassin/log chown spamd:spamd -R /usr/local/spamassassin
Spamassassin konfigurieren
Die Konfigurationsdatei zu Spamassassin liegt unter /etc/default/spamassassin. Öffnet die Datei mit einem Editor eurer Wahl und passt die Konfigurationsdatei wie folgt an:
# /etc/default/spamassassin # Duncan Findlay # WARNING: please read README.spamd before using. # There may be security risks. # Change to one to enable spamd ENABLED=1 SPAM_HOME="/usr/local/spamassassin" # Options # See man spamd for possible options. The -d option is automatically added. # SpamAssassin uses a preforking model, so be careful! You need to # make sure --max-children is not set to anything higher than 5, # unless you know what you're doing. OPTIONS="--create-prefs --max-children 5 --helper-home-dir ${SPAM_HOME} --username spamd" # Pid file # Where should spamd write its PID to file? If you use the -u or # --username option above, this needs to be writable by that user. # Otherwise, the init script will not be able to shut spamd down. PIDFILE="${SPAM_HOME}/spamd.pid" # Set nice level of spamd #NICE="--nicelevel 15" # Cronjob # Set to anything but 0 to enable the cron job to automatically update # spamassassin's rules on a nightly basis CRON=0
Die Kommentare sollten alle Einstellungen bereits ausreichend erklären. Nun bearbeiten wir noch die Einstellungen von Spamassassin in /etc/spamassassin/local.cf
Ich habe hier nur die Teile aufgeführt, die ich aktiviert oder verändert habe. Wiedermal sollten die Kommentare alles erklären.
# Add *****SPAM***** to the Subject header of spam e-mails # rewrite_header Subject *****SPAM***** # Save spam messages as a message/rfc822 MIME attachment instead of # modifying the original message (0: off, 2: use text/plain instead) # report_safe 0 # Set the threshold at which a message is considered spam (default: 5.0) # required_score 2.0 # Use Bayesian classifier (default: 1) # use_bayes 1 # Bayesian classifier auto-learning (default: 1) # bayes_auto_learn 1
Das wars‘ auch schon mit der Konfiguration von Spamassassin. Nun muss lediglich Spamassassin noch in Postfix integriert werden.
Spamassassin in Postfix integrieren
Damit die Mails auch von Spamassassin „betrachtet“ werden können, müssen wir Postfix noch nicht konfigurieren. Dazu muss die Datei /etc/postfix/master.cf angepasst werden:
Der Eintrag
smtp inet n - - - - smtpd
muss wie folgt ergänzt werden:
smtp inet n - - - - smtpd -o content_filter=spamassassin
Am Ende der Datei noch folgendes ergänzen:
spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Tada! Das wars. Nun nur noch alles neustarten und fertig ist unser System.
/etc/init.d/spamassassin restart /etc/init.d/postfix restart
Spamassassin testen
Natürlich wollen wir jetzt auch gleich mal testen, ob Spam richtig erkannt wird. Beobachtet zunächst die Logdatei:
tail -f /var/log/mail.info
Nun senden eine Email an euren Mailserver mit folgendem Inhalt:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Die Mail wird dann von Spamassassin automatisch erkannt und mit *****SPAM***** deklariert. Achtung: Die üblichen Mailprogramme sortieren die Mails gleich automatisch aus.
Fertig. Nun läuft Spamassassin und Spam wird automatisch aussortiert. Spamassassin holt sich jede Nacht die neusten Regeln und hält sich selbst aktuell.
Wie immer würde ich mich über Kritik, Anregungen und Kommentare jeglicher Art freuen :).
Pingback: Postfix mit TLS und IPv6 auf Debian 7 Wheezy installieren und konfigurieren | Timos Blog
Hallo Timo,
bei Installation über aptitude habe ich folgende Meldungen:
Setting up spamassassin (3.3.2-5+deb7u1) …
Adding system user `debian-spamd‘ (UID 107) …
Adding new group `debian-spamd‘ (GID 109) …
Adding new user `debian-spamd‘ (UID 107) with group `debian-spamd‘ …
Creating home directory `/var/lib/spamassassin‘ …
Heißt das nicht das man sich das Anlegen des Users „spamd“ sparen könnte?
Liebe Grüße,
Martin
Hallo Martin,
der User, der da angelegt wird, hat aber root-rechte, was eine weitere Sicherheitslücke ist, sollte der Spamassassin mal ein Sicherheitsloch haben. Der User der bei meiner Anleitung angelegt wird, hat eingeschränkte Berechtigungen.
Funktionieren tut aber beides.
Grüße Timo
Erstmal danke für die Anleitung!
Was genau meinst du mit root-Rechten? Der Nutzer hat definitiv nicht die User-ID Null – daher hat er keine spezifischen Rechte, die mir bekannt wären:
root@post:~# getent passwd debian-spamd
debian-spamd:x:109:113::/var/lib/spamassassin:/bin/sh
Insofern sehe ich spontan keinen Grund, der Vorbereitung des Debian-Paket-Betreuers zu misstrauen. Ansonsten hilft auch ein Bug-Report beim Debian-Paket, auf dass andere Menschen an Fortschritten teilhaben können …
Hallo Timo,
nach der Einrichtung von Spamassassin, wie in der Anletung beschrieben. erhalte ich folgenden Fehler: „warning connect to transport private/spamassassin: Connection refused“
und die E-Mail wrden nicht weitergeleitet. Was kann denn der Fehler für so etwas sein?
MFG
Jens Weiß
Hallo Jens,
ohne weiteres Wissen relativ schwer zu sagen. Aber hast du es schon mit Google versucht? Hab hier auf Anhieb einige Lösungen gefunden: http://www.linuxquestions.org/questions/linux-server-73/mail-transport-unavailable-error-753514/
Vielen Dank für das coole Howto!!
Hallo Timo,
Danke für das gut geschriebene Tutorial.
Wir haben bei uns schon länger einen eigenen Postfix auf Debian für unsere internen Mails laufen, aber ich habe erst jetzt die Muße gehabt, mal endlich einen Spamfilter dafür zu installieren.
Dein Tutorial hat mir dabei sehr weitergeholfen (Habe allerdings den bereits erstellten User debian-spamd an allen Stellen verwendet, wo du einen eigenen User spamd benutzt hast).
Viele Grüße,
Christian
Hi sehr nettes Tut! 🙂
Bekomme beim starten von SpamAssi folge meldeung! Irgend eine Idee?
root@mail:/# spamassassin start
Feb 23 09:56:16.559 [19070] warn: archive-iterator: no access to start: Datei oder Verzeichnis nicht gefunden at /usr/share/perl5/Mail/SpamAssassin/ArchiveIterator.pm line 830.
Feb 23 09:56:16.559 [19070] warn: archive-iterator: unable to open start: Datei oder Verzeichnis nicht gefunden
Danke und Viele Grüße
Hallöchen 🙂
CRON = 0
Bedeutet aber, dass keine Updates geholt werden, oder? Weil du zum Schluss erwähnst, dass nachts updates durchgeführt werden. Oder hab ich da nun was verwechselt?
Hallo Andre,
du hast natürlich recht 🙂 danke.
ist das hier evtl auch relevant?
https://workaround.org/ispmail/jessie/spamassassin
Debian bug #739738
Unfortunately the SpamAssassin version shipped with Debian Jessie contains a nasty bug that keeps printing error messages to your mail.log file and probably even prevents proper spam scanning. To fix it edit the file /usr/share/perl5/Mail/SpamAssassin/Util.pm, jump to line 288 and replace
return if !defined $_[0];
by
return undef if !defined $_[0];
sehr schön und einfach, hat mir auf die schnelle art weitergeholfen. dafür erstmal danke.
ein satz was man da eigentlich genau in der master.cf tut wäre aber beruhigend gewesen, so ist da erstmal das rumfummeln in configs die man nicht versteht, mit einem unguten gefühl.
Hi,
Mich würde mal interessieren, ob diese Anleitung auch bei Debian Jessie greift. Würde am liebsten gleich anfangen und habe auch schon Postfix u. Dovecot erfolgreich installiert.
MfG
Mir sind keine Probleme mit Jessie bekannt. Solltest du in Probleme laufen, kannst du einfach direkt hier anfragen.