Mailpiler auf Proxmox VE installieren – E-Mail-Archiv im LXC
Installation via zamba-lxc-toolbox (dev)
Mailpiler auf Proxmox VE
installieren – E-Mail-Archivierung im LXC-ContainerHinweis: 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
Supporte mich
Mailpiler mit einemder Kaffee:
zamba-lxc-toolbox installieren

Git auf dem Proxmox-Host installieren

git
Falls installierenGit (einmalig)auf dem Proxmox-Host noch nicht vorhanden ist:
apt update
apt -y install git
Toolboxzamba-lxc-toolbox klonenherunterladen
Anschließend Pilerwird LXC-Containerder erstellendev-Branch der zamba-lxc-toolbox geklont:
git clone -b dev https://github.com/bashclub/zamba-lxc-toolbox
cd zamba-lxc-toolbox
Für KonfigurationMailpiler erstellen wir zunächst eine eigene Konfigurationsdatei:
cp conf/zamba.conf.example conf/piler.conf
Anschließend Mitwird favorisiertemconf/piler.conf mit dem bevorzugten Texteditor angepasst. Für eine einfache Installation müssen insbesondere die Dateimit conf/piler.confLXC_ anpassen
# Hier ist es nur notwendig,beginnenden Variablen beginnendgeprüft mitund LXC_angepasst zuwerden.
DNS #und WirdFQDN vom DHCP Server im Netzwerk ein DNS-Suffix mitgegeben, so sollte der Piler Hostname eine statische IP-Konfiguration verwendet werden
#beachten: Der Piler Mailpiler-Hostname wird aus dem FQDN Desdes Containers erzeugterzeugt. #Der NachFQDN Anpassungsollte deshalb sowohl vom Proxmox-Host als auch von den späteren Clients korrekt über DNS auflösbar sein.
Falls der conf/piler.confDHCP-Server ein DNS-Suffix verteilt, empfehlen wir für den Mailpiler-Container erzeigen: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 kann man den Container-Typ / Service angeben und die gewünschte LXC Container ID
Optional können der gewünschte Service piler und eine bestimmte LXC-Container-ID angegeben werden.
Nach erfolgtererfolgreicher Installation ist diedas Mailpiler WebsiteWebinterface über den FQDN des Containers erreichbar,erreichbar. dabeiVoraussetzung ist wichtig,eine dassfunktionierende DNS-Auflösung.
Mailpiler Erstkonfiguration
Standard-Passwörter sofort ändern
Wichtig: Nach der FQDNInstallation desmüssen Containersdie vomStandard-Zugangsdaten Clientunverzüglich auflösbargeändert ist.werden. Insbesondere sollte ein System mit Standard-Passwörtern niemals öffentlich erreichbar sein.
Erstkonfiguration
Die
PasswörterInstallation ändernverwendet (Webzunächst UI)
folgende Standard-Logins:-
admin@local
auditor@local:auditorauditor@local
Die Passwörter der Standard-Benutzer sollten auf sichere Passwörter geändert werden im Mailpiler Webinterface unter administrationAdministration ->→ usersUsers ->→ Edit/viewView für den jeweiligen Benutzer.Benutzer geändert.
SMTP (Smarthost),
SMTP, LDAP und IMAP Login Settings (CLI via pct enter oder ssh)
konfigurieren
InDie derzentrale DateiKonfigurationsdatei befindet sich im LXC-Container unter:
/etc/piler/config-site.php
Dort essind bereits vorbereitete KonfigurationsblöckeKonfigurationsbereiche für Loginsverschiedene Dienste und Mailversand:-Authentifizierungsmethoden vorbereitet:
Offizielle Mailpiler-Dokumentation:
TLS-Zertifikat für User-LoginMailpiler am Mailarchiv)
https://www.mailpiler.org/authenticating-against-an-imap-server/
- LDAP (für User-Login am Mailarchiv)
https://www.mailpiler.org/authenticating-against-an-ldap-directory/
- UCS LDAP (für User-Login am Mailarchiv)
- POP3 (User-Login)
https://www.mailpiler.org/authenticating-against-a-pop3-server/
TLS-Zertifikat
einrichten
Nach dem Ausrollen des Containers sind die pilerPiler-Dienste Dienstezunächst mit einem Snakeoil-Zertifikat aus dem snakeoilPaket ssl-cert konfiguriert.
Für den produktiven Betrieb sollte dieses Zertifikat (Paketdurch ssl-cert)ein konfiguriert.gültiges DiesesTLS-Zertifikat sollteersetzt durchwerden. Hierfür kann beispielsweise ein Zertifikat aus einerder zugehörigeneigenen PKI oder mitein einemLet's-Encrypt-Zertifikat letsencryptverwendet Zertifikat ersetzt werden, damit es für den Client signiert ist.werden.
Dateien:nginx:
Verwendete Zertifikatsdateien
/etc/nginx/ssl/fullchain.pem
/etc/nginx/ssl/privkey.pem
/etc/piler/piler.pem
Mailpiler Zertifikat austauschen
Zunächst werden die vorhandenen Links auf dasdie SnakeoilSnakeoil-Zertifikate Zertifikatpiler: /etc/piler/piler.pem = Kopie des Snakeoil Zertifikats, Zertifikatkette und Private Key in einer Dateientfernt:
Austausch des Zertifikats
unlink /etc/nginx/ssl/fullchain.pem
unlink /etc/nginx/ssl/privkey.pem
Anschließend werden die neuen Zertifikatsdateien kopiert:
Zertifikat (komplette Kette nach/etc/nginx/ssl/fullchain.– vollständige Zertifikatskette,pem,pemroot:root0640)0640
/etc/nginx/ssl/privkey.pem, – Private Key, root:root 0600) auf das Mailpiler-System (z.B. via SFTP) kopieren.0600
Danach wird ausgeführt:
renew-piler-cert
Das (Skript beendet die entsprechenden Dienste, erzeugt auf BasisGrundlage des nginx nginx-Zertifikats eindas pilerbenötigte Zertifikat,Piler-Zertifikat und startet Dienste)die Dienste
POP-/IMAP-Importanschließend vianeu.
Bestehende E-Mails über POP3 oder IMAP importieren
POP-/IMAP-Bereits vorhandene Postfächer können für deneinen initialen E-Mail-Import viain WebUIMailpiler unterüber administrationdas - importWebinterface konfiguriert werden:
Administration → Import
Dort können entsprechende POP3- oder IMAP-Postfächer für den Import hinterlegt werden.
Mailempfang vorbereiten
Auf dem Mailpiler läuft ein integrierter SMTP-Server, der Mails für das Archiv konfigurieren
Mailpiler verfügt über einen integrierten SMTP-Dienst, der die zu archivierenden Nachrichten auf TCP-Port 25 annimmt.entgegennimmt.
Der produktive Mailserver muss dafürden gesorgtMailpiler-Server werden,daher dassüber derSMTP 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 dasbzw. ArchivNetze erreicheneingeschränkt kann.
werden.
SMTP
Hierfür Acl List
Ist der SMTP des Mailarchivs öffentlich erreichbar, sollte eine ACL mit erlaubten Mailservern für den Mailempfang am Archiv definiert werden. Hierzu wirdkann die DateiDatei:
/etc/piler/smtp.acl
angelegt undwerden. darinDort werden erlaubte IP-Netze im CIDR CIDR-Format unddefiniert.
Beispiel:
# MSBeispiel Microsoft 365 Server
40.92.0.0/15 permit
40.107.0.0/16 permit
52.100.0.0/14 permit
104.47.0.0/17 permit
IstHinweis: dieIP-Netze Listeexterner vollständig,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 die Datei gespeichert, die ACLdiese aktiviert und der piler-smtpSMTP-Dienst neu gestartet:
sed -i -e "s|smtp_access_list=.*|smtp_access_list=1|g" /etc/piler/piler.conf
systemctl restart piler-smtp
Konfiguration
Mailserver desfür Mailservers
die E-Mail-Archivierung konfigurieren
AufNach demder Installation von Mailpiler muss der produktive Mailserver sollteso nun BCC-Maps definiertkonfiguriert werden, damitdass alle eingehende Mails (derdie zu archivierenden Domains)Nachrichten zusätzlich an dieden AdresseMailpiler 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.
Postfix
Da sich die konkrete Postfix-Konfiguration nach Umgebung und gewünschtem Archivierungsumfang richtet, empfehlen wir die jeweils aktuelle Mailpiler-Dokumentation:
Ein BeispielMailpiler ist– inInstallation derund InstallationsanleitungMailserver-Konfiguration zu finden: https://www.mailpiler.org/installation/
BCC-Adressen beachten: Bei bestimmten Postfix-Konfigurationen können zusätzliche Envelope-Informationen sichtbar werden. Mailpiler bietet mit ToHEADER_LINE_TO_HIDEarchiveeine emails,Möglichkeit, pilerentsprechende mustHeader receivefür themnormale somehow.Benutzer Soauszublenden.
Mailpiler havemit toMailcow
Auch yourMailcow maillässt serversich tomit sendMailpiler aals copyzentralem ofE-Mail-Archiv each received emails to piler via smtp. Since piler is actually an SMTP server, you should not put postfix, exim, … on the archive itself. If you need it for some reason, then put it to 127.0.0.1:25/tcp, and set the listen_addr variable in piler.conf to listen on eth0 or similar.
If you have MS Exchange, then turn on journaling.
If you have postfix (including zimbra), then add the following to main.cf:
/etc/postfix/main.cf:
smtpd_recipient_restrictions = reject_non_fqdn_recipient, ..., \
check_recipient_access pcre:$config_directory/x-add-envelope-to, ...
always_bcc = archive@piler.yourdomain.com
/etc/postfix/x-add-envelope-to:
/(.*)/ prepend X-Envelope-To: $1
Note that such configuration might reveal Bcc addresses to the recipients in the To/Cc fields. To prevent it happening piler features the HEADER_LINE_TO_HIDE config.php variable to automatically hide the X-Envelope-To: line.
When set (and the default is as seen below) it will hide such header lines from regular users on the GUI, only auditors are allowed to see all recipients, including the Bcc addresses.
$config['HEADER_LINE_TO_HIDE'] = 'X-Envelope-To:';
If you have Exim, then add the following at the beginning of the routers-section:
begin routers
mailarchive:
debug_print = "R: mailarchive for $local_part@$domain"
driver = manualroute
domains = *
transport = remote_smtp
# piler listening on port 25:
route_list = * "piler.yourdomain.com::25"
self = send
unseen
Mailcow
kombinieren.
Im Mailcow WebUIWebinterface unterkönnen unter:
E-Mail -→ Konfiguration -→ Addressumschreibung
für prodie Domaingewünschten Domains BCC-MapsZuordnungen für eingehende und ausgehende MailsNachrichten definiert werden.Sollte
Ist DNS-Auflösungder des MailarchivsArchivserver nicht verfügbar,über dasDNS Archiverreichbar, aber über dieseine IP-Adresse erreichbar sein, soverfügbar, kann unterzusätzlich unter:
System -→ Konfiguration -→ Routing
ein Transportentsprechendes Transport-Mapping angelegteingerichtet 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 MailserverInformationen
Mehrbefinden gibtssich in der offiziellen Doku:Dokumentation:
https://www.mailpiler.org/docs.html Mailpiler Dokumentation
Angepasste
Mailpiler Pfade im LXC-Container
Konfigurations-Verzeichnis:Die Installation über die zamba-lxc-toolbox verwendet unter anderem folgende Pfade:
/etc/piler
Piler-Cronjobs:
Cronjobs
/etc/cron.d/piler
Piler
CLI-/usr/bin
/etc/systemd/system/piler.service
/etc/systemd/system/pilersearch.service
/etc/systemd/system/piler-smtp.service
/usr/libexec/piler
Datenverzeichnis
/var/piler
ZFS Dataset für Mailpiler
Das Datenverzeichnis und Home-DirectoryVerzeichnis des pilerPiler-Benutzers Users:befindet sich unter:
/var/piler
In unserer Installation wird der LXC-Mountpoint mp0 ist einals separates ZFS-Dataset mit sparsamer recordsize=16K, welches auf /var/piler eingehängt wird.eingebunden.
Supportkontakt
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 SolutionsThorsten Spille <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.
