E-Mails archivieren mit Mail-Archiver – mein Docker-Setup

Vor kurzem kam ein Freund mit einer ziemlich dringenden Anfrage auf mich zu.
Seine Domain sollte abgeschaltet werden und er wollte vorher noch die Mails aus bestimmten Postfächern sichern. Möglichst vollständig und natürlich am besten schnell.

Das Thema war mir nicht fremd. Ich selbst habe über die Jahre eine Menge E-Mails angesammelt. Klar, mein Mailserver wird regelmäßig gesichert. Trotzdem spielte ich schon lange mit dem Gedanken, ob es nicht Sinn macht meine Mails auch mal zu archivieren.

Genau in dem Moment bin ich über Mail-Archiver von s1t5 gestolpert.

🧰 Was ist Mail-Archiver eigentlich?

Mail-Archiver ist ein Open-Source-Tool, mit dem du E-Mails aus verschiedenen Postfächern zentral archivieren kannst. Vollautomatisch. Durchsuchbar. Und unabhängig davon, ob die Mails später noch auf dem Mailserver existieren oder nicht.

📌 Kernfunktionen

  • Automatisches Archivieren ein- und ausgehender E-Mails aus mehreren Konten
  • Speicherung von Mailinhalten und Anhängen mit geplanter Synchronisation
  • Moderne Weboberfläche, mobil und desktopfähig, mehrsprachig und mit Dark Mode
  • Unterstützung für OpenID Connect zur externen Authentifizierung

🔍 Suche und Zugriff

  • Leistungsfähige Suche über alle archivierten E-Mails hinweg
  • Vorschau von E-Mails inklusive Anhängen
  • Export kompletter Postfächer als MBOX oder ZIP mit EML-Dateien
  • Export einzelner E-Mails oder ganzer Mail-Batches

👥 Benutzerverwaltung

  • Mehrbenutzerfähig mit individuellen Berechtigungen
  • Dashboard mit Statistiken, Speicherübersicht und Absenderanalyse
  • Detailliertes Audit-Log für Zugriffe, Exporte, Löschungen und mehr

🧩 Mailanbieter-Unterstützung

  • IMAP für klassische Mailkonten
  • Microsoft 365 über die Graph API
  • Import-Konten für bestehende Archive

📥 Import und Wiederherstellung

  • Import von MBOX- und EML-Archiven
  • Wiederherstellung einzelner E-Mails oder kompletter Postfächer

🗑️ Aufbewahrungsregeln

  • Automatisches Löschen von Mails auf dem Mailserver nach X Tagen
  • Individuelle Aufbewahrungsdauer pro Konto
  • Separate Regeln für das lokale Archiv

🧩 Voraussetzungen

Bevor es losgeht, brauchst du natürlich eine funktionierende Docker-Umgebung.
Wenn du Docker noch nicht installiert hast, findest du hier eine Schritt-für-Schritt-Anleitung, wie du das auf Ubuntu mit einem Script erledigst:

Sobald Docker läuft, kann es direkt weitergehen.

🐳 Installation mit Docker

Hier ist das Docker-Compose-Setup, das ich verwende.

Hinweis: Die Kennwörter wurden für diesen Beitrag neu generiert. Bitte ändere sie trotzdem!

services:

  mailarchiver-app:
    image: s1t5/mailarchiver:latest
    container_name: mailarchiver-app
    hostname: mailarchiver-app
    restart: always
    environment:
      - ConnectionStrings__DefaultConnection=Host=mailarchiver-db;Database=MailArchiver;Username=mailuser;Password=R9M4KxZ7F2BqA6pE;
      - Authentication__Username=maadmin
      - Authentication__Password=H8PZC5W4yQF7R6L9
      - TimeZone__DisplayTimeZoneId=Europe/Berlin
    ports:
      - "5000:5000"
    networks:
      mailarchiver.dockernetwork.local:
        ipv4_address: 172.22.14.10
    volumes:
      - ./data/data-protection-keys:/app/DataProtection-Keys
    depends_on:
      mailarchiver-db:
        condition: service_healthy

  mailarchiver-db:
    image: postgres:17-alpine
    container_name: mailarchiver-db
    hostname: mailarchiver-db
    restart: always
    environment:
      POSTGRES_DB: MailArchiver
      POSTGRES_USER: mailuser
      POSTGRES_PASSWORD: R9M4KxZ7F2BqA6pE
    volumes:
      - ./data/postgres-data:/var/lib/postgresql/data
    networks:
      mailarchiver.dockernetwork.local:
        ipv4_address: 172.22.14.11
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U mailuser -d MailArchiver"]

networks:
  mailarchiver.dockernetwork.local:
    external: true

Da ich meine Docker-Stacks sauber trenne, lege ich vorher noch das Netzwerk an:

docker network create --subnet=172.22.14.0/24 mailarchiver.dockernetwork.local

Danach ist es simpel:

docker-compose pull
docker-compose up -d

🌐 Erster Login und Grundkonfiguration

Im Browser rufst du anschließend http://ip:5000 auf.

Du meldest dich mit den Zugangsdaten aus der Compose-Datei an und wirst direkt aufgefordert, dein Kennwort zu ändern. Guter Start!

Das Dashboard ist am Anfang noch leer. Das ist normal.
Wir wechseln direkt in den Menüpunkt Mail Accounts.

📥 Mailkonten einbinden

Hier legst du dein erstes Mailkonto an.
Ich nutze dafür meinen eigenen IMAP-Account.

  • Name: Variable, ich nehme einfach die E-mail-Adresse
  • Anbieter: IMAP
  • Hostname und Port: entsprechend deinem Mailprovider
  • Zugangsdaten: E-Mail-Adresse und Kennwort
  • SSL oder STARTTLS: unbedingt aktivieren

Die Aufbewahrungsregeln kannst du flexibel setzen.
Ich lasse die Felder für Lösch- und Aufbewahrungstage leer. Meine Mails sollen dauerhaft archiviert bleiben.

Nach dem Speichern siehst du beim Konto das Datum 01.01.1970.
Das ist dein Zeichen: Es gab noch keinen Sync. Also klickst du auf Sync.

📊 Dashboard und Statistiken

Zurück im Dashboard siehst du, wie die Mails eingelesen werden.
Mit jedem Neuladen wächst der Zähler.

Du bekommst unter anderem:

  • Gesamtanzahl archivierter E-Mails
  • Anzahl der Konten
  • Anzahl der Anhänge
  • Belegter Speicherplatz

Dazu kommen Monatsstatistiken, häufige Absender, eine Kontoübersicht und die neuesten E-Mails.
Was ich besonders feiere: Die Mails bleiben im Archiv, selbst wenn du sie im Originalpostfach endgültig löschst.

🔍 Suche, Anzeige und Export

Über den Menüpunkt Archiv kannst du gezielt suchen.
Nach Begriffen. Nach Datum. Nach Konto. Eingehend oder ausgehend.

Öffnest du eine Mail, siehst du:

  • zugehöriges Konto und Ordner
  • Absender und Empfänger
  • Anhänge zum Download
  • kompletten Mailinhalt in HTML

Du kannst Mails in andere Postfächer kopieren oder als EML-Datei herunterladen.
Und ja, ganze Postfächer lassen sich als MBOX exportieren. Perfekt für Thunderbird.
Vielleicht mache ich dazu noch ein eigenes Tutorial, wenn Interesse besteht!

🧾 Audit-Trail

Zum Schluss noch ein echtes Highlight: der Audit-Trail.
Jede Anmeldung, jede Suche, jedes Öffnen einer Mail. Alles wird sauber protokolliert.
Gerade in sensiblen Umgebungen ein riesiger Pluspunkt.

✅ Fazit

Ich archiviere damit aktuell die Mails meines Freundes.
Und meine eigenen Mails gleich mit.

Ich nutze Mail-Archiver intern. Und dabei bleibt es auch.
Auch wenn MFA unterstützt wird, würde ich so ein Tool nicht offen im Internet betreiben.
Für mich gehört das hinter ein internes Netzwerk oder zumindest sauber abgeschottet.

Mail-Archiver ist eines dieser Tools, die man einmal aufsetzt und dann einfach laufen lässt.
Zuverlässig und im Ernstfall Gold wert.

👥 Techniverse Community

Lust auf Austausch rund um Matrix, Selfhosting und andere smarte IT-Lösungen?
In der Techniverse Community triffst du Gleichgesinnte, kannst Fragen stellen oder einfach nerdigen Talk genießen. 🚀

👉 Jetzt der Gruppe auf Matrix beitreten
~ Direkte Raumadresse: #community:techniverse.net

👉 Für lockere Gespräche abseits der Kernthemen komm in den Talkraum
~ Direkte Raumadresse: #talk:techniverse.net

Wir freuen uns, wenn du dabei bist!

Vielen Dank fürs Teilen!