Auf vielen Servern wird Spamassassin bzw. der Daemon spamd direkt als root ausgeführt. Dies hat den entscheidenden Vorteil, dass man sich nicht um irgendwelche Berechtigungen kümmern muss. Jedoch ist dies aus meiner Sicht eine unschöne Sache, da es auch die Möglichkeit gibt Spamassassin unter einem eigen dafür eingerichteten Benutzer zu betreiben. Ebenfalls erlaubt die aktuelle Version 3.2.3 keine Ausführung als root bzw. nur eingeschränkt.
Die folgenden Fehlermeldungen sind im syslog zu finden:
spamd: still running as root: user not specified with -u, not found, or set to root, falling back to nobody
spamd[29756]: auto-whitelist: open of auto-whitelist file failed: locker: safe_lock: cannot create tmp lockfile /root/.spamassassin/auto-whitelist.lock.host.29756 for /root/.spamassassin/auto-whitelist.lock: Permission denied
Diese Fehlermeldungen treten auf, weil spamd als root ausgeführt wird und anschliessend auf den pseudo Benutzer nobody zurückfällt. Der Benutzer nobody hat natürlich keinen Zugriff auf die unter /root/.spamassassin abgelegte Bayes Datenbank und erhält darum eine „Permission denied“ Meldung. Ein Nebeneffekt ist, dass das Bayes System und AutoLearn nicht funktionieren.
Der einfachste Weg zur Behebung dieses Problems ist, Spamassassin unter einem eigen dafür angelegten Benutzer auszuführen. Dazu muss auf Debian basierenden Systemen folgendermassen vorgegangen werden.
1. Einen Benutzer anlegen z.B. mit dem Namen spamd
# adduser
Anschliessend die Daten ausfüllen, oder direkt alle Parameter mitgeben
Im Normalfall wird das Home-Verzeichnis gerade erstellt und eine Gruppe, welche den identischen Namen trägt.
2. In den meisten Fällen ist es notwendig die Berechtigungen des Ordners mit den Konfigurationsdateien anzupassen. Dies sollte folgendermassen aussehen:
drwxr-xr-x 3 root spamd 1024 Jul 29 19:53 spamassassin
Ebenfalls sollte der Benutzer die Konfigurationsdateie(n) lesen können.
-r--r----- 1 root spamd 2141 Aug 6 18:28 local.cf
Da wir gerade mit dem Benutzer eine Gruppe erstellt haben, reicht es den Owner zu ändern. Wir möchten ja nicht, dass jeder Benutzer z.B. in den Ordner schreiben kann.
3. Die Bayes Datenbank liegt immer im Home Verzeichnis des Benutzers unter welchem Spamassassin ausgeführt wird. Es ist daher notwendig den Ordner /root/.spamassassin nach /home/spamd/.spamassassin zu kopieren/verschieben. Natürlich sollte der Benutzer spamd im Ordner /home/spamd/.spamassassin Lese- und Schreibrechte besitzen.
4. Der letzte Schritt besteht bereits darin, den Benutzer von spamd zu ändern. Dazu einfach die Datei /etc/defaults/spamassassin mit einem Texteditor öffnen und in den Parametern von OPTION -u spamd hinzufügen. Schlussendlich sieht dies z.B. folgendermassen aus:
OPTIONS="-u spamd --sql-config --nouser-config --local --daemonize –max-children=1"
5. Bevor mittels einem Neustart von spamd (sudo /etc/init.d/spamassassin restart) die Änderungen wirksam gemacht werden, sollte der Output vom spamassassin –lint -D auf Fehler überprüft werden.
Nach dem Ändern des Benutzers muss natürlich auch der Pfad der Datenbank beim Lernen der Bayes DB mittels dem Tool sa-learn angepasst werden.