Mail-Archiver: Zentrale IMAP E-Mail-Archivierung & Migration

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Hallo zusammen,
erstmal großes Lob an @s1t5 für die ganze Arbeit an dein gestarteten Projekt. Richtig gute Arbeit!

Ich verfolge das Projekt jetzt schon einige Monate und hab mich nun dazu durchgerungen selber eine Instanz des "Mail-Archiver" auf einen meiner Server zu Implementieren. Das ganze hat allerdings erstmal reinen Test-Charakter.

Die Implementierung lief recht einfach ab. Die Beschreibung auf der Projektseite ist ja auch ausreichend informativ gestaltet. Nach der ersten Anmeldung und dem Anlegen einiger Benutzer Accounts wollte ich nun mal einige Email Accounts zufügen. Dabei ist mir allerdings aufgefallen, dass bei bestimmten IMAP Accounts ein Fehler("Verbindung zum Email Server konnte nicht hergestellt werden. Überprüfen Sie die Einstellungen und stellen Sie sicher das der Server erreichbar ist!") in der UI angezeigt wird. In den Logs wird folgendes protokolliert:

"info: MailArchiver.Controllers.MailAccountsController[0]
Creating new account: EinfachIch, Provider: IMAP
info: MailArchiver.Controllers.MailAccountsController[0]
Testing connection for account: EinfachIch, Server: imap.strato.de:993
info: MailArchiver.Services.EmailService[0]
Testing connection to IMAP server imap.strato.de:993 for account EinfachIch (test@EinfachIch.de)
info: MailArchiver.Services.EmailService[0]
Authentication successful for test@EinfachIch.de
fail: MailArchiver.Services.EmailService[0]
Connection test failed for account EinfachIch: Object reference not set to an instance of an object.
System.NullReferenceException: Object reference not set to an instance of an object.
at MailArchiver.Services.EmailService.TestConnectionAsync(MailAccount account) in /app/Services/EmailService.cs:line 2520
warn: MailArchiver.Controllers.MailAccountsController[0]
Connection test failed for account EinfachIch"

Es handelt sich hierbei um einen Strato IMAP Mail Account.

Ein weiterer IMAP Account bei einem anderen Hoster funktioniert hingegen einwandfrei.

Frage in die Runde: Hat jemand von Euch eventuell auch einen Strato Mail Account, und die Möglichkeit das mal gegen zu checken?

VG Ich
 
@EinfachIch

Bei den Zugängen zu IMAP Konten scheinen einige doch ihren eigenen "Dialekt" zu nutzen. Zwischenzeitlich gab es wohl auch Probleme mit Telekom Konten etc. Ich hatte auch mal so ein Problem.
Der liebe @s1t5 liest hier mit und versucht immer schnell zu helfen. Dazu hast du genau die richtigen Infos mit dem LOG-Auszug beigefügt! Also wer noch weitere Probleme mit der Konnektion der Postfächer hat, meldet euch genau mit diesen Infos! --- Aktualisiert dann auch bitte euren Container, da die Update-Frequenz mit den Fehler-Bereinigungen recht hoch ist. Oder schaut auch auf Github s1t5/mailarchiver.

Schönes Spiel
F@H
 
  • Like
Reaktionen: EinfachIch
Hi @EinfachIch,
danke für dein Feedback! Bei Strato ist es vor einigen Tagen zu einem Problem beim Ordnerbezug über IMAP gekommen (ich vermute da wurde was bei denen geändert?). Dies habe ich durch den Einbau einer Fallback-Kette inzwischen lösen können.
Wie @FricklerAtHome schon erwähnt hatte habe ich in der letzten Zeit viele kleinere Anpassungen vorgenommen um diverse Themen verschiedener Mailanbieter abzudecken (verschiedene gestaffelte Authentifizierungsarten, verschiedene Art und Weisen des Ordenrbezuges usw).

Gerade eben habe ich Version 2510.3 veröffentlicht, welche all diese Anpassungen beinhaltet. Aktualisiere hier gerne einmal einen Container, dann sollten sich die Konten auch wie erwartet hinzufügen lassen.

VG
Philip
 
Moin Philip,

gerade mit dem neusten Release 2510.3 ausprobiert - klappt jetzt einwandfrei mit dem Strato Accounts.
Vielen Dank dafür - mach weiter so! Top!

VG Andreas
 
Zuletzt bearbeitet von einem Moderator:
Hallo @s1t5
Dein Programm ist wirklich super. Genau das was ich seit 10 Jahren gesucht habe und um Welten besser als das am nächsten vergleichbare ecoMailz.
Ganz tolle Arbeit (y)

Das einige was mir bis jetzt aufgefallen ist, ist das die Synchronisation mit Google Mail mit mehren Labels "Ordnern" extrem lange braucht (Neusynchronisation mehrere Stunden, Abgleich alle 10 Minuten dauert meist zwischen 11 und 15 Minuten). ich denke das hat mit den Labels zu tun, kann das sein?

Ich weiß nicht ob der Log vom Docker was hilft, aber ich poste ihn hier mal:

Code:
MailArchiver
date,stream,content
2025/10/18 22:21:24,stdout,      Processing batch of 50 messages (starting at 4750) in folder INBOX via IMAP
2025/10/18 22:21:24,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:21:24,stdout,"      Memory usage after processing batch 95: 225,2 MB
2025/10/18 22:21:24,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:18:25,stdout,      Mail sync completed. Waiting for next sync cycle.
2025/10/18 22:18:25,stdout,info: MailArchiver.Services.MailSyncBackgroundService[0]
2025/10/18 22:18:15,stdout,         at MailArchiver.Services.MailSyncBackgroundService.ExecuteAsync(CancellationToken stoppingToken) in /app/Services/MailSyncBackgroundService.cs:line 72
2025/10/18 22:18:15,stdout,"         at MailArchiver.Services.SyncJobService.StartSyncAsync(Int32 accountId, String accountName, Nullable`1 lastSync) in /app/Services/SyncJobService.cs:line 53
2025/10/18 22:18:15,stdout,      System.InvalidOperationException: A sync job for account HEINZ GMail is already running.
2025/10/18 22:18:15,stdout,      Error syncing mail account HEINZ GMail: A sync job for account HEINZ GMail is already running.
2025/10/18 22:18:15,stdout,fail: MailArchiver.Services.MailSyncBackgroundService[0]
2025/10/18 22:18:15,stdout,      Sync job for account 3 (HEINZ GMail) is already running
2025/10/18 22:18:15,stdout,warn: MailArchiver.Services.SyncJobService[0]
2025/10/18 22:18:15,stdout,      AlwaysForceFullSync is disabled. Using quick sync for all accounts.
2025/10/18 22:18:15,stdout,info: MailArchiver.Services.MailSyncBackgroundService[0]
2025/10/18 22:18:15,stdout,      Found 1 enabled accounts to sync
2025/10/18 22:18:15,stdout,info: MailArchiver.Services.MailSyncBackgroundService[0]
2025/10/18 22:18:15,stdout,      Starting mail sync process...
2025/10/18 22:18:15,stdout,info: MailArchiver.Services.MailSyncBackgroundService[0]
2025/10/18 22:17:05,stdout,      Processing batch of 50 messages (starting at 4700) in folder INBOX via IMAP
2025/10/18 22:17:05,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:17:05,stdout,"      Memory usage after processing batch 94: 230,7 MB
2025/10/18 22:17:05,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:12:47,stdout,      Processing batch of 50 messages (starting at 4650) in folder INBOX via IMAP
2025/10/18 22:12:47,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:12:47,stdout,"      Memory usage after processing batch 93: 221,1 MB
2025/10/18 22:12:47,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:08:30,stdout,      Processing batch of 50 messages (starting at 4600) in folder INBOX via IMAP
2025/10/18 22:08:30,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:08:30,stdout,"      Memory usage after processing batch 92: 222,7 MB
2025/10/18 22:08:30,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:04:15,stdout,      Processing batch of 50 messages (starting at 4550) in folder INBOX via IMAP
2025/10/18 22:04:15,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:04:15,stdout,"      Memory usage after processing batch 91: 205,8 MB
2025/10/18 22:04:15,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:03:15,stdout,      Mail sync completed. Waiting for next sync cycle.
2025/10/18 22:03:15,stdout,info: MailArchiver.Services.MailSyncBackgroundService[0]
2025/10/18 22:03:05,stdout,         at MailArchiver.Services.MailSyncBackgroundService.ExecuteAsync(CancellationToken stoppingToken) in /app/Services/MailSyncBackgroundService.cs:line 72
2025/10/18 22:03:05,stdout,"         at MailArchiver.Services.SyncJobService.StartSyncAsync(Int32 accountId, String accountName, Nullable`1 lastSync) in /app/Services/SyncJobService.cs:line 53
2025/10/18 22:03:05,stdout,      System.InvalidOperationException: A sync job for account HEINZ GMail is already running.
2025/10/18 22:03:05,stdout,      Error syncing mail account HEINZ GMail: A sync job for account HEINZ GMail is already running.
2025/10/18 22:03:05,stdout,fail: MailArchiver.Services.MailSyncBackgroundService[0]
2025/10/18 22:03:05,stdout,      Sync job for account 3 (HEINZ GMail) is already running
2025/10/18 22:03:05,stdout,warn: MailArchiver.Services.SyncJobService[0]
2025/10/18 22:03:05,stdout,      AlwaysForceFullSync is disabled. Using quick sync for all accounts.
2025/10/18 22:03:05,stdout,info: MailArchiver.Services.MailSyncBackgroundService[0]
2025/10/18 22:03:05,stdout,      Found 1 enabled accounts to sync
2025/10/18 22:03:05,stdout,info: MailArchiver.Services.MailSyncBackgroundService[0]
2025/10/18 22:03:05,stdout,      Starting mail sync process...
2025/10/18 22:03:05,stdout,info: MailArchiver.Services.MailSyncBackgroundService[0]
2025/10/18 22:02:00,stdout,      User 'HEINZ' signed in successfully
2025/10/18 22:02:00,stdout,info: MailArchiver.Services.CookieAuthenticationService[0]
2025/10/18 22:02:00,stdout,      Updated last login time for user 'HEINZ'
2025/10/18 22:02:00,stdout,info: MailArchiver.Services.CookieAuthenticationService[0]
2025/10/18 22:02:00,stdout,      Updated user: HEINZ (ID: 1)
2025/10/18 22:02:00,stdout,info: MailArchiver.Services.UserService[0]
2025/10/18 22:02:00,stdout,      2FA verification successful for user HEINZ from IP ::ffff:172.20.0.1
2025/10/18 22:02:00,stdout,info: MailArchiver.Controllers.TwoFactorController[0]
2025/10/18 22:00:03,stdout,      Processing batch of 50 messages (starting at 4500) in folder INBOX via IMAP
2025/10/18 22:00:03,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:00:03,stdout,"      Memory usage after processing batch 90: 199,8 MB
2025/10/18 22:00:03,stdout,info: MailArchiver.Services.EmailService[0]
2025/10/18 22:00:02,stdout,      User 'HEINZ' signed in successfully
2025/10/18 22:00:02,stdout,info: MailArchiver.Services.CookieAuthenticationService[0]
2025/10/18 22:00:02,stdout,      Updated last login time for user 'HEINZ'
2025/10/18 22:00:02,stdout,info: MailArchiver.Services.CookieAuthenticationService[0]

Hier die Übersicht der Jobs
1760818784468.png
 
Zuerst einmal viel dank für das Mail-Archiv super Programm!!!

2 Fragen hätte ich dazu:

1. Frage - Wo werden die Mail abgespeichert bzw. wie kann der Speicherort angepasst werden
2. Wie gestaltet man am besten ein Backup um auch eine Wiederherstellund ausführen zu können.

Grüße Micha
 
Frage 1: Die Mails werden in der Postgres Datenbank gespeichert, du findest Sie also nicht einzeln im Dateisystem.
Die PostgresDB kann man über die ENV (Enviroment-Einstellungen) der config.yaml Datei anpassen. --- Da hab ich auch schon rumgefrickelt, bin aber doch beim aktuellen Konstrukt gebleiben. Weil:

Frage 2: Weil mir das doch zu viel Aufwand war beim Backup. Ich arbeite also mit der orginalen YAML Datei und muss nicht nachdenken. Für das Backup nutze ich die Funktionen meines HOST. Bei mir ist das Proxmox und der MA läuft als LXC Container. Mittels Proxmox Backup ist es trivial ein tägliches Backup zu fahren. Es liegt bei mir sogar nicht auf dem Proxmox-Host sondern auf meinem Syno-Nas.
Ansonsten schau dir mal diese anleitung an: Docker-Backup
Eine Backup Funktion sollte auch mit dem Container-Manager der Syno gehen

Grüße
F@H
 
@frite77 Danke für dein Feedback! :) Wie ich in deinem Log sehe werden da mehrere tausend Mail abgeglichen. Hast du denn bei dem Gmail Konto die Dinge hier beachtet? https://github.com/s1t5/mail-archiver/blob/main/doc/GmailBestPractices.md

Mit den Labels ist das immer so eine Sache. Sobald das Alle-Mails-Label ebenfalls über IMAP abrufbar ist, werden die Mails beim Sync dort alle zusätzlich noch einmal abgeglichen und die Quellordner im Mail Archiver überschreiben sich immer wieder. Leider ist die Label Implementierung bei Gmail sehr speziell, da eine Mail nicht klassisch in einem Ordner liegt, sondern einer Mail mehrere Labels zugewiesen sein können und diese dann mehrfach unter den Labels auftaucht, da diese als Ordner per IMAP abrufbar sind.

Schau zudem gerne einmal in deine Docker Compose unter dem Kapitel der Batch Settings, gegebenenfalls kann man hier noch etwas an der Batch Size und den Pausen schrauben um den Sync zu beschleunigen.
 
  • Like
Reaktionen: FricklerAtHome
@s1t5 und alle Backuper

Zum Thema Backup von mir noch eine Anmerkung. Der obige Leitfaden von s1t5 ist super und deckt nach meiner Ansicht fast alle Eventualitäten super ab! Auch hier nochmal DANKE!
Es gibt viele Gründe für ein Backup, aber unterschiedliche Begleiterscheinungen. Mail-Archive ist ja quasi selbst ein Backup / Archiv. Damit ist die Dringlichkeit für eine Wiederherstellung zumindest in unseren Einsatzszenarien nur auf moderat und nicht an erster Stelle. In der Regel merken die Benutzer ja nichts von einem Ausfall. Und wenn MA dann wieder läuft holt es sich alle in dieser Zeit angefallenen "Neuerungen" nachträglich wieder zu einem aktuellen Stand. ich hatte das hier schon einmal beschrieben. Eine MA Instanz lief mal unbemerkt mehrere Tage/Wochen nicht. Das ist erst durch Zufall bemerkt worden. Der Container wurde dann repariert und wieder gestartet. Schon nach kurzer Zeit waren die Mail-Accounts und das Archiv wieder synchron und konsistent.
Diese Erkenntnis ist auch der Grund warum wir die Datenbank nicht ausgeglieder haben und immer den "ganzen Container" im STOP Modus sichern (siehe auch den Leitfaden). Die Gesamtanwendung bleibt konsistent und wir müssen nicht auch noch zB. bei Postgres irgendwelche Fehler suchen. Also kein kleinteiliges Gefrickel.
Das bei großen Mailmengen so ein Backup im Stop-Modus auch mal etwas dauert, spielt also für die Funktion gar keine Rolle. Es sei denn einer unserer Anwender will ums Verrecken zwischen 04:10 Uhr und 04:20 Uhr seine archivierten Mails nutzen. --- Dann hätten wir aber ein ganz anderes Problem!
 
  • Like
Reaktionen: s1t5
Mal wieder eine Anmerkung zum Thema ARCHIV:

Mail-Archive und auch andere Archiv-Programme sind super. Ein Backup gehört zum "guten Nutzungsweg". Aber was bedeutet das über längere Zeiträume.
Wir machen Backup's und können so aktuelle Datenverluste vermeiden. Langfristig müssen wir uns aber auch Fragen stellen, wie lange geht eine "Rückspielung" noch? Hab ich noch ein lauffähiges ursprüngliches Programm? Ist mein Backup / Archivmedium nutzbar (wer hat z.B. noch Diskettenlaufwerke lauffähig? )?
Ich achte deshalb bei der von uns eingesetzten Software immer darauf ob es in der Basis auch ein langfristig normiertes Datenformat unterstützt.
Das habe ich jetzt für Mail-Archive mit dem EML Import ausprobiert. Ich habe aus meinem unter Win laufenden kommerziellen Mail-Archiv-Programm ca. 100.000 E-Mails nach Mail-Archive mittels EML importiert. Hat geklappt. --- Dann das Ganze anders herum. Hat auch einwandfrei funktioniert. Genau so sollte es sein!
Jetzt kann ich mir überlegen für welche Zwecke ich noch eine Windows-Maschine mit der kommerziellen Software brauche. Aber das ich auch in 10 Jahren noch eine angenehme Zugriffsmöglichkeit auf unsere Mails habe ist erstmal für mich beantwortet.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Kachelkaiser
Und noch(mals) ein Hinweis:

Mail-Archive archiviert nicht eure Notizen, Aufgaben, Termine oder Adressbücher. Das müßt ihr anders lösen. Eine "Archivierung" in einer PST-Dateien von Outlook kann das. Aber auch das ist wieder komplex wenn Outlook nicht mehr zum Einsatz kommt! Hier ist die entscheidende Variable die Fähigkeit des genutzen E-Mail Servers!

F@H
 
  • Like
Reaktionen: Kachelkaiser
Hallo,

ich wollte eine Mail aus dem Archiv löschen leider wird es mir mit folgendem Fehler Quitiert.

An error occurred while deleting the email.

Micha
 
Vielen Dank für das Feedback! Ich habe gerade Version 2511.2 veröffentlicht in der der Fix ebenfalls erhalten ist. Du kannst somit gerne wieder auf das latest Tag wechseln.
 
  • Like
Reaktionen: maxblank
Hallo leider muss ich nochmal schreiben.
Heute morgen habe ich festgestellt dass das gesamte Archiv, inklsuiver aller Einstellungen verschwunden ist.
Ich wurde aufgefordert das ich ein neues Passwort vergeben muss, da es sich um einen Neuinstallation handelt.

Hat jemand eine Idee woran das liegen könnte?
 

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat