Mailpiler auf Proxmox VE installieren – E-Mail-Archiv im LXC
Mailpiler auf Proxmox VE installieren – E-Mail-Archivierung im LXC-Container
Hinweis: Diese Anleitung beschreibt die Installation von Mailpiler mit der zamba-lxc-toolbox auf Proxmox VE. Für die Installation wird hier der dev-Branch der Toolbox verwendet. Dieser kann Änderungen enthalten, die noch nicht Bestandteil einer stabilen Version sind.
Mit Mailpiler lässt sich eine zentrale Open-Source-Lösung zur E-Mail-Archivierung aufbauen. In dieser Anleitung installieren wir Mailpiler automatisiert als LXC-Container auf Proxmox VE.
Die Installation erfolgt mit der zamba-lxc-toolbox aus dem bashclub-Projekt. Nach der Grundinstallation konfigurieren wir unter anderem SMTP, LDAP, IMAP, TLS-Zertifikate, Mailcow und Postfix.
Autor: Thorsten Spille
Mailpiler mit der zamba-lxc-toolbox installieren
Git auf dem Proxmox-Host installieren
Falls Git auf dem Proxmox-Host noch nicht vorhanden ist:
apt update
apt -y install git
zamba-lxc-toolbox herunterladen
Anschließend wird der dev-Branch der zamba-lxc-toolbox geklont:
git clone -b dev https://github.com/bashclub/zamba-lxc-toolbox
cd zamba-lxc-toolbox
Für Mailpiler erstellen wir zunächst eine eigene Konfigurationsdatei:
cp conf/zamba.conf.example conf/piler.conf
Anschließend wird conf/piler.conf mit dem bevorzugten Texteditor angepasst. Für eine einfache Installation müssen insbesondere die mit LXC_ beginnenden Variablen geprüft und angepasst werden.
DNS und FQDN beachten: Der Mailpiler-Hostname wird aus dem FQDN des Containers erzeugt. Der FQDN sollte deshalb sowohl vom Proxmox-Host als auch von den späteren Clients korrekt über DNS auflösbar sein.
Falls der DHCP-Server ein DNS-Suffix verteilt, empfehlen wir für den Mailpiler-Container eine passende statische IP- und DNS-Konfiguration.
Mailpiler LXC-Container erstellen
Nach der Konfiguration kann die Installation gestartet werden:
bash install.sh -c conf/piler.conf [-s piler] [-i <id>]
Optional können der gewünschte Service piler und eine bestimmte LXC-Container-ID angegeben werden.
Nach erfolgreicher Installation ist das Mailpiler Webinterface über den FQDN des Containers erreichbar. Voraussetzung ist eine funktionierende DNS-Auflösung.
Mailpiler Erstkonfiguration
Standard-Passwörter sofort ändern
Wichtig: Nach der Installation müssen die Standard-Zugangsdaten unverzüglich geändert werden. Insbesondere sollte ein System mit Standard-Passwörtern niemals öffentlich erreichbar sein.
Die Installation verwendet zunächst folgende Standard-Logins:
admin@local
auditor@local
Die Passwörter werden im Mailpiler Webinterface unter Administration → Users → Edit/View für den jeweiligen Benutzer geändert.
SMTP, LDAP und IMAP konfigurieren
Die zentrale Konfigurationsdatei befindet sich im LXC-Container unter:
/etc/piler/config-site.php
Dort sind bereits Konfigurationsbereiche für verschiedene Dienste und Authentifizierungsmethoden vorbereitet:
- SMTP / Smarthost – optional mit Authentifizierung
- IMAP – Benutzeranmeldung am Mailarchiv über einen IMAP-Server
- LDAP – Benutzeranmeldung über ein LDAP-Verzeichnis
- UCS LDAP – Anbindung an Univention Corporate Server
- POP3 – Benutzeranmeldung über einen POP3-Server
Offizielle Mailpiler-Dokumentation:
TLS-Zertifikat für Mailpiler einrichten
Nach dem Ausrollen des Containers sind die Piler-Dienste zunächst mit einem Snakeoil-Zertifikat aus dem Paket ssl-cert konfiguriert.
Für den produktiven Betrieb sollte dieses Zertifikat durch ein gültiges TLS-Zertifikat ersetzt werden. Hierfür kann beispielsweise ein Zertifikat aus der eigenen PKI oder ein Let's-Encrypt-Zertifikat verwendet werden.
Verwendete Zertifikatsdateien
| Dienst | Datei |
|---|---|
| nginx Zertifikatskette | /etc/nginx/ssl/fullchain.pem |
| nginx Private Key | /etc/nginx/ssl/privkey.pem |
| Mailpiler | /etc/piler/piler.pem |
Mailpiler Zertifikat austauschen
Zunächst werden die vorhandenen Links auf die Snakeoil-Zertifikate entfernt:
unlink /etc/nginx/ssl/fullchain.pem
unlink /etc/nginx/ssl/privkey.pem
Anschließend werden die neuen Zertifikatsdateien kopiert:
/etc/nginx/ssl/fullchain.pem– vollständige Zertifikatskette,root:root 0640/etc/nginx/ssl/privkey.pem– Private Key,root:root 0600
Danach wird ausgeführt:
renew-piler-cert
Das Skript beendet die entsprechenden Dienste, erzeugt auf Grundlage des nginx-Zertifikats das benötigte Piler-Zertifikat und startet die Dienste anschließend neu.
Bestehende E-Mails über POP3 oder IMAP importieren
Bereits vorhandene Postfächer können für einen initialen E-Mail-Import in Mailpiler über das Webinterface konfiguriert werden:
Administration → Import
Dort können entsprechende POP3- oder IMAP-Postfächer für den Import hinterlegt werden.
Mailempfang für das Archiv konfigurieren
Mailpiler verfügt über einen integrierten SMTP-Dienst, der die zu archivierenden Nachrichten auf TCP-Port 25 entgegennimmt.
Der produktive Mailserver muss den Mailpiler-Server daher über SMTP erreichen können.
SMTP ACL für Mailpiler
Besonders wichtig bei öffentlich erreichbarem SMTP: Der Zugriff auf den SMTP-Dienst des Archivs sollte auf die tatsächlich berechtigten Mailserver bzw. Netze eingeschränkt werden.
Hierfür kann die Datei:
/etc/piler/smtp.acl
angelegt werden. Dort werden erlaubte IP-Netze im CIDR-Format definiert.
Beispiel:
# Beispiel Microsoft 365
40.92.0.0/15 permit
40.107.0.0/16 permit
52.100.0.0/14 permit
104.47.0.0/17 permit
Hinweis: IP-Netze externer Anbieter wie Microsoft 365 können sich ändern. Die aktuell gültigen Netze sollten deshalb vor der Übernahme anhand der Dokumentation des jeweiligen Anbieters geprüft werden.
Nach Fertigstellung der ACL wird diese aktiviert und der SMTP-Dienst neu gestartet:
sed -i -e "s|smtp_access_list=.*|smtp_access_list=1|g" /etc/piler/piler.conf
systemctl restart piler-smtp
Mailserver für die E-Mail-Archivierung konfigurieren
Nach der Installation von Mailpiler muss der produktive Mailserver so konfiguriert werden, dass die zu archivierenden Nachrichten zusätzlich an den Mailpiler Archivserver übermittelt werden.
Ein mögliches Ziel ist beispielsweise:
archive@<fqdn-des-archivservers>
Wie diese Weiterleitung bzw. Journalisierung eingerichtet wird, hängt vom eingesetzten Mailserver ab.
Mailpiler mit Postfix
Bei Postfix kann eine Kopie ein- und ausgehender Nachrichten über entsprechende BCC- bzw. Recipient-Konfigurationen an Mailpiler übertragen werden.
Da sich die konkrete Postfix-Konfiguration nach Umgebung und gewünschtem Archivierungsumfang richtet, empfehlen wir die jeweils aktuelle Mailpiler-Dokumentation:
Mailpiler – Installation und Mailserver-Konfiguration
BCC-Adressen beachten: Bei bestimmten Postfix-Konfigurationen können zusätzliche Envelope-Informationen sichtbar werden. Mailpiler bietet mit HEADER_LINE_TO_HIDE eine Möglichkeit, entsprechende Header für normale Benutzer auszublenden.
Mailpiler mit Mailcow
Auch Mailcow lässt sich mit Mailpiler als zentralem E-Mail-Archiv kombinieren.
Im Mailcow Webinterface können unter:
E-Mail → Konfiguration → Addressumschreibung
für die gewünschten Domains BCC-Zuordnungen für eingehende und ausgehende Nachrichten definiert werden.
Ist der Archivserver nicht über DNS erreichbar, aber über seine IP-Adresse verfügbar, kann zusätzlich unter:
System → Konfiguration → Routing
ein entsprechendes Transport-Mapping eingerichtet werden.
Exchange und weitere Mailserver
Bei anderen Mailservern unterscheidet sich die Konfiguration entsprechend. Bei Microsoft Exchange bzw. Microsoft-Umgebungen kann beispielsweise Journaling zum Einsatz kommen.
Weitere Informationen befinden sich in der offiziellen Dokumentation:
Mailpiler Pfade im LXC-Container
Die Installation über die zamba-lxc-toolbox verwendet unter anderem folgende Pfade:
| Funktion | Pfad |
|---|---|
| Konfiguration | /etc/piler |
| Cronjobs | /etc/cron.d/piler |
| CLI-Tools | /usr/bin |
| Hauptdienst | /etc/systemd/system/piler.service |
| Suchdienst | /etc/systemd/system/pilersearch.service |
| SMTP-Dienst | /etc/systemd/system/piler-smtp.service |
| WebUI-Skripte | /usr/libexec/piler |
| Datenverzeichnis | /var/piler |
ZFS Dataset für Mailpiler
Das Datenverzeichnis und Home-Verzeichnis des Piler-Benutzers befindet sich unter:
/var/piler
In unserer Installation wird der LXC-Mountpoint mp0 als separates ZFS-Dataset auf /var/piler eingebunden.
Das Dataset verwendet eine für diesen Einsatzzweck angepasste recordsize=16K.
Die optimale ZFS-Konfiguration hängt von Storage, Mailaufkommen und Workload ab. Die Einstellung recordsize=16K sollte daher als Konfiguration dieser Installation und nicht als allgemeingültige Vorgabe für jedes Mailpiler-System verstanden werden.
Support und Autor
Diese Mailpiler-Integration für die zamba-lxc-toolbox wurde dokumentiert von:
Thorsten Spille
Spille IT Solutions
thorsten@spille-edv.de
Wer die Arbeit unterstützen möchte:
Thorsten Spille auf Ko-fi unterstützen
Technischer Hinweis: Mailpiler, Proxmox VE, die zamba-lxc-toolbox und die angebundenen Mailserver werden kontinuierlich weiterentwickelt. Prüft deshalb insbesondere bei produktiven Mailarchiven die jeweils aktuelle Dokumentation sowie die Kompatibilität der eingesetzten Versionen.