Für gewerbliche Nutzer ist die E-Mail-Archivierung in Deutschland nicht optional, sondern eine gesetzliche Pflicht. Geschäftsrelevante E-Mails – etwa Rechnungen, Angebote, Auftragsbestätigungen oder steuerlich relevante Korrespondenz – gelten als Handels- bzw. Geschäftsbriefe und müssen gemäß GoBD sowie Handels- und Steuerrecht revisionssicher archiviert werden. Eine einfache Ablage im Postfach reicht dabei nicht aus, da E-Mails unveränderbar, vollständig und nachvollziehbar aufbewahrt werden müssen. Verstöße können bei Betriebsprüfungen zu erheblichen Problemen und im schlimmsten Fall zu steuerlichen Nachteilen führen.
Übersicht der Systeme
Es gibt eine Vielzahl kommerzieller Anbieter für die (rechtssichere) Archivierung von Mails, bspw.:
- MailStore Server / SPE
- Veritas Enterprise Vault
- Barracuda Message Archiver
MailStore Server setzen wir auch bei unseren Kunden ein. Die Software arbeitet seit Jahren zuverlässig, hat aber auch ihren Preis. Zudem setzt diese Windows als System voraus.
Mail-Archiver - eine Alternative
Mail-Archiver kann als Docker Container betrieben werden. Das System verwendet .NET und PostgreSQL und ist relativ schlank. Somit kann es bspw. auch auf einer NAS mit Docker-Unterstützung mitlaufen. Die Bedienung erfolgt ausschließlich über den Browser (WebGUI) und ist zudem responsive.
Screenshots
Die folgenden Screenshots stammen direkt von mail-archiver.org:
Dashboard
Archiv
Detailansicht
Was kann Mail-Archiver
Postfachprofile
Archiviert werden können:
- IMAP-Postfächer
- Microsoft 365 Postfächer (Graph-API)
- manueller Import von Mails (aus alten Archiven, etc.)
User-Verwaltung
Verfügbare Nutzerrollen:
- Admin
- User (ohne Selbstverwaltung)
- User (mit Selbstverwaltung)
Die Option Selbstverwaltung ermöglicht es Usern, selbst Postfächer zur Archivierung einzurichten. Andernfalls muss der Admin Archivierungsprofile einrichten und diese den Usern zur Verfügung stellen.
Der Admin hat grundsätzlich auf alle Postfächer und deren Inhalte Zugriff.
Protokollierung
Ein „K.O.-Faktor“ kommerzieller Archivierungslösungen ist die Auditierbarkeit von Vorgängen innerhalb des Archivs. Also wer hat wann was gemacht (Mail aus dem Archiv gelöscht, Logins, Zugriff auf das Archiv, usw.). Mail-Archiver protokolliert auch diese Zugriffe sehr exakt.
Löschung von Mails (Postfach & Archiv)
Bei der Einrichtung zu archivierender Postfächer kann eingestellt werden, ob:
- Mails aus dem Postfach älter X Tage nach der Archivierung gelöscht werden sollen
- Mails aus dem lokalen Archiv selbst nach X Tagen gelöscht werden sollen
Bei der Löschung aus dem lokalen Archiv sollte man die gesetzlichen Fristen im Hinterkopf behalten. Für die Postfächer selbst bietet die automatische Löschung von Mails eine Möglichkeit, diese auf Dauer schlank zu halten.
Anbindung via OIDC-Implementierung
In Mail-Archiver ist OIDC implementiert, was bspw. die Anbindung via Microsoft Entra ID oder SSO ermöglicht.
Ressourcen & Setup
Für die reine Hintergrundarchivierung werden kaum Ressourcen benötigt. Die Suche nach Mails oder Anhängen lastet den Docker-Host dann schon eher aus. Möchte man größere Postfächer auf lange Zeit archivieren, sollte ausreichend Plattenplatz zur Verfügung stehen.
docker-compose.yml
Innerhalb der compose sollten folgende Werte den eigenen Bedürfnissen angepasst werden:
- admin Username & Passwort
- Postgre DB User & Passwort
- Timezone
- MailSync_IntervalMinutes= X ;dieser Wert sollte bei gewissen Anbietern – bspw. T-Online oder GMX – nicht zu kurz bzw. knapp gesetzt werden, sondern können Verbindungen ggf. geblockt werden
- Port des Containers
Es empfiehlt sich der Einsatz eines Proxy mit TLS-Terminierung. Wird OIDC/SSO verwendet, sollte man die Hinweise für den Proxy beachten.
services:
mailarchive-app:
image: s1t5/mailarchiver:latest
restart: always
environment:
# Database Connection
- ConnectionStrings__DefaultConnection=Host=postgres;Database=MailArchiver;Username=mailuser;Password=SuperSecurePostGRESPassword;
# Authentication Settings
- Authentication__Username=admin
- Authentication__Password=TheSuperS3cureAdm1nPassword
# TimeZone Settings
- TimeZone__DisplayTimeZoneId=Europe/Berlin
# MailSync
- MailSync__IntervalMinutes=5
- MailSync__TimeoutMinutes=60
- MailSync__ConnectionTimeoutSeconds=180
- MailSync__CommandTimeoutSeconds=300
# Datenschutz
- View__DefaultToPlainText=true
- View__BlockExternalResources=true
# Uploads
- Upload__MaxFileSizeGB=10
# DB
- Npgsql__CommandTimeout=900
# Timezone
- TimeZone__DisplayTimeZoneId=Europe/Berlin
# Logging
- Logging__LogLevel__Default=Information
- Logging__LogLevel__Microsoft_AspNetCore=Warning
# Security
- AllowedHosts=mailarchiv.peetzcom.cloud
ports:
- "5000:5000"
networks:
- postgres
volumes:
- /data/docker/mailarchiver/data-protection-keys:/app/DataProtection-Keys
depends_on:
postgres:
condition: service_healthy
postgres:
image: postgres:17-alpine
restart: always
environment:
POSTGRES_DB: MailArchiver
POSTGRES_USER: mailuser
POSTGRES_PASSWORD: SuperSecurePostGRESPassword
volumes:
- /data/docker/mailarchiver/postgres-data:/var/lib/postgresql/data
networks:
- postgres
healthcheck:
test: ["CMD-SHELL", "pg_isready -U mailuser -d MailArchiver"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
networks:
postgres:



