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 ] 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: Authentifizierung über IMAP Authentifizierung über LDAP Authentifizierung über POP3 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@ 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 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.