Am 20. April 2026 wurde mit Stalwart v0.16.0 (die Tage daruf dann noch v0.16.1 und v0.16.2) ein neues Release veröffentlicht das einiges an Änderungen mit sich bringt. Es dient u.a. auch als Vorbereitung auf die Version 1.0 und räumt mit „ein paar“ Altlasten auf.
Es ist aus meiner persönlichen Sicht sinnvoll vor dem Upgrade, noch in der v0.15.5-Installation, mindestens die folgenden Punkte abzuarbeiten.
- Account Namen müssen nun E-Mail-Adressen sein
- Bei Anwendung des Installations-Skripts bis incl. v0.15.5 wurde Stalwart komplett (Konfiguration, Daten, Binary, Logs) in Verzeichnisse unterhalb von
/opt/stalwartinstalliert. Beim Upgrade auf Version 0.16.0 wird aber davon ausgegangen, dass die Verzeichnisse dem File System Hierarchy Standard (FHS) genügen – konkret also/usr/local/bin/stalwartals Platz für das Stalwart-Binary/etc/stalwart/config.tomlals Platz für die toml-Konfigurationsdatei/var/lib/stalwartfür den Data Store (bei Single-Node RocksDB)/var/log/stalwart/für Log-Dateien
Nachfolgend eine exemplarische Anleitung um diese Voraussetzungen in einer simplen Single-Node Stalwart-Installation (so wie ich sie in diesem Vortrag vorgestellt habe) zu realisieren.
ACHTUNG:
- Erstellen Sie unbedingt vorab ein vollständiges Backup des Mailsystems!
- Falls Sie die Möglichkeit dazu haben erstellen Sie einen Snapshot des Servers
Account-Namen
User vorab informieren, dann in der internen User-Verwaltung die Accounts anpassen.

Verzeichnisse entsprechend FHS-Standard
Stalwart stoppen, etc-Verzeichnis & Binaries passend platzieren
# Stalwart stoppen
systemctl stop stalwart.service
# etc-Verzeichnis an die richtige Stelle schieben
mkdir /etc/stalwart
chown stalwart:stalwart /etc/stalwart
cp -p /opt/stalwart/etc/config.toml /etc/stalwart/
# Bei mir waren vorher noch SymLinks von /usr/local/bin auf
# die beiden Binaries stalwart und stalwart-cli die noch unter
# /opt/stalwart/bin lagen. Diese SymLinks habe ich vorher gelöscht
# und dann die Binaries wie folgt an die richtige Stelle geschoben
cp /opt/stalwart/bin/stalwart /usr/local/bin
cp /opt/stalwart/bin/stalwart-cli /usr/local/bin
chown stalwart:stalwart /usr/local/bin/stalwart*
systemd-Service-Datei anpassen
Nun die zugehörige systemd-Datei /etc/systemd/system/stalwart.service anpassen. Die sah im alten Zustand so aus:
[Unit]
Description=Stalwart
Conflicts=postfix.service sendmail.service exim4.service
ConditionPathExists=/opt/stalwart/etc/config.toml
After=network-online.target
[Service]
Type=simple
LimitNOFILE=65536
KillMode=process
KillSignal=SIGINT
Restart=on-failure
RestartSec=5
ExecStart=/opt/stalwart/bin/stalwart --config=/opt/stalwart/etc/config.toml
SyslogIdentifier=stalwart
User=stalwart
Group=stalwart
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
Im neuen Zustand muss diese Datei dann erst mal so aussehen:
[Unit]
Description=Stalwart
Conflicts=postfix.service sendmail.service exim4.service
ConditionPathExists=/etc/stalwart/config.toml
After=network-online.target
[Service]
Type=simple
LimitNOFILE=65536
KillMode=process
KillSignal=SIGINT
Restart=on-failure
RestartSec=5
ExecStart=/usr/local/bin/stalwart --config=/etc/stalwart/config.toml
SyslogIdentifier=stalwart
User=stalwart
Group=stalwart
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
Oder als diff:
# diff stalwart.service.v0.15.x stalwart.service
4c4
< ConditionPathExists=/opt/stalwart/etc/config.toml
---
> ConditionPathExists=/etc/stalwart/config.toml
14c14
< ExecStart=/opt/stalwart/bin/stalwart --config=/opt/stalwart/etc/config.toml
---
> ExecStart=/usr/local/bin/stalwart --config=/etc/stalwart/config.toml
RocksDB und Logs verschieben
mv /opt/stalwart/data /var/lib/stalwart
mv /opt/stalwart/logs /var/log/stalwart
chmod 750 /var/lib/stalwart
chmod 750 /var/log/stalwart
Noch die /etc/stalwart/config.toml anpassen. Der Parameter …
store.rocksdb.pathmuss auf"/var/lib/stalwart"tracer.log.pathmuss auf"/var/log/stalwart"
… geändert werden.
Stalwart mit aktualisierter Services-Datei neu starten
systemctl daemon-reload
systemctl start stalwart
Fazit
Damit ist Stalwart,
- nach wie vor in der Version 0.15.5 und
- für den Fall eines einfache Single-Node-Setups
grundsätzlich mal auf den v0.16.0- bzw. v0.16.1-Upgrade vorbereitet. Weitere Anleitung für das konkrete Upgrade folgt.