Im letzten Artikel haben wir die Vorarbeiten erledigt und machen uns nun an die Installation des Pilers. Zuerst legen wir eine eigene Gruppe und einen entsprechenden Benutzer an:

groupadd piler
useradd -g piler -m -s /bin/bash -d /var/piler piler
usermod -L piler
chmod 755 /var/piler

Das Home-Verzeichnis dieses Benutzers liegt in /var es bietet sich also an, dieses Verzeichnis entsprechend groß zu dimensionieren. Dann laden wir den Piler herunter (Ende März 2024 die Version 1.4.4), kompilieren und installieren ihn:

mkdir -p /root/mailpiler/piler/
cd /root/mailpiler/piler/
wget https://bitbucket.org/jsuto/piler/downloads/piler-1.4.4.tar.gz
tar xzf piler-1.4.4.tar.gz
cd piler-1.4.4/
./configure --localstatedir=/var --with-database=mysql --enable-memcached
make
make install
ldconfig

Ist das erledigt, legen wir eine Sicherheitskopie des Postinstall-Skripts an und ändern zwei Default-Werte hinein (das ist nicht zwingend erforderlich, spart uns aber gleich ein wenig Tipparbeit):

cp util/postinstall.sh util/postinstall.sh.bak
sed -i "s/ SMARTHOST=.*/ SMARTHOST="\"$MAILSERVER_DOMAIN\""/" util/postinstall.sh
sed -i 's/ WWWGROUP=.*/ WWWGROUP="www-data"/' util/postinstall.sh

Danach starten wir das Postinstall:

make postinstall

Diese Routine fragt einiges ab – und hier liegt das Problem, mit dem ich noch nicht ganz sicher umzugehen weiß: Wenn ich kein Passwort für den DB-Benutzer piler festlege, bricht das Skript nach dem Anlegen der Datenbank ab, weil es den Benutzer piler nicht findet und ihn daher auch nicht für die DB berechtigen kann. Lege ich ein Passwort fest, wird der Benutzer angelegt, das Skript produziert aber Fehlermeldungen, dass der Zugriff für den Benutzer verweigert wurde (das sind in der Regel Hinweise auf ein falsches Passwort). Da der Benutzer nun angelegt ist (wir haben ein Passwort vergeben), müssen wir einmal die Datenbank löschen…

mysql -u root
DROP DATABASE piler;
EXIT;

… und noch einmal make Postinstall zünden – diesmal ohne Passwort für den Benutzer piler. Das läuft dann sauber durch.

Jetzt passen wir die Piler-Konfiguration noch ein wenig an:
cp /usr/local/etc/piler/piler.conf /usr/local/etc/piler/piler.conf.bak

sed -i "s/hostid=.*/hostid=$PILER_DOMAIN/" /usr/local/etc/piler/piler.conf
sed -i "s/update_counters_to_memcached=.*/update_counters_to_memcached=1/" /usr/local/etc/piler/piler.conf
sed -i "s/spam_header_line=.*/spam_header_line=X-Spam-Flag: YES/" /usr/local/etc/piler/piler.conf # rspamd in mailcow setup.

Wir müssen Manticore deaktivieren, weil sonst der mit Piler gelieferte Suchdienst auf die Bretter geht:

systemctl disable manticore
systemctl stop manticore

Außerdem legen wir einen Symlink zu der nicht installierten Sphinxsearch-Konfig an:
ln -s /usr/local/etc/piler/manticore.conf /usr/local/etc/piler/sphinx.conf

Als nächstes starten wir den Piler und den Searcher und schreiben beide in den Autostart:

/etc/init.d/rc.piler start
/etc/init.d/rc.searchd start

update-rc.d rc.piler defaults
update-rc.d rc.searchd defaults

Damit sollte der Piler funktionieren. Im nächsten Artikel kümmern wir uns um die Weboberfläche.