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

Ich arbeite mit dem Container Manager von Syno.
Anbei mein YML-File

services:
mailarchive-app:
image: s1t5/mailarchiver:latest
container_name: MailArchiver
healthcheck:
test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/5000' || exit 1
interval: 10s
timeout: 5s
retries: 3
start_period: 90s
environment:
- ConnectionStrings__DefaultConnection=Host=mailarchiver-db;Database=mailarchiver;Username=mailarchiveruser;Password=mailarchiverpass;
- Authentication__Enabled=true
- Authentication__Username=xxxx
- Authentication__Password=xxxx
- TimeZone__DisplayTimeZoneId=Europe/Berlin
- Authentication__SessionTimeoutMinutes=60
- Authentication__CookieName=MailArchiverAuth
- MailSync__IntervalMinutes=15
- MailSync__TimeoutMinutes=60
- MailSync__ConnectionTimeoutSeconds=180
- MailSync__CommandTimeoutSeconds=300
- MailSync__AlwaysForceFullSync=false
- MailSync__IgnoreSelfSignedCert=false
- BatchRestore__AsyncThreshold=50
- BatchRestore__MaxSyncEmails=150
- BatchRestore__MaxAsyncEmails=50000
- BatchRestore__SessionTimeoutMinutes=30
- BatchRestore__DefaultBatchSize=50
- BatchOperation__BatchSize=50
- BatchOperation__PauseBetweenEmailsMs=50
- BatchOperation__PauseBetweenBatchesMs=250
- Selection__MaxSelectableEmails=250
- Upload__MaxFileSizeGB=10
- Upload__KeepAliveTimeoutHours=4
- Upload__RequestHeadersTimeoutHours=2
- Npgsql__CommandTimeout=600
ports:
- 8778:5000
depends_on:
db:
condition: service_healthy
restart: on-failure:5
db:
image: postgres:17-alpine
container_name: MailArchiver-DB
hostname: mailarchiver-db
security_opt:
- no-new-privileges:true
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "mailarchiver", "-U", "mailarchiveruser"]
timeout: 45s
interval: 10s
retries: 10
environment:
POSTGRES_DB: mailarchiver
POSTGRES_USER: mailarchiveruser
POSTGRES_PASSWORD: mailarchiverpass
volumes:
- /volume1/docker/mailarchiverdb:/var/lib/postgresqlmailarchiver/data:rw
restart: on-failure:5
 
Da kann ich leider nicht helfen! Meine Installation läuft unter Portainer auf einem Proxmox Host. Bei mir kommt deshalb nur die auf GIT veröffentlichte Docker-Compose YML zum Einsatz. Die hat zum Beispiel keine"BATCH..." Parameter.
Irgendwie fehlt mir bei dir auch die Verschränkung der Container mittels "network" ENV Eintrag.
Wie gesagt ich nutze den Container Manager der Syno nicht und deine YML Datei hat schon einige erweiternde Einträge.
 
Also ich habe nun die Docker Compose von aus Git-Hub verwendet seit ein paar Tagen läuft es ohne Probleme, ich berichte.
Danke für die Unterstützung!
 
  • Like
Reaktionen: s1t5
Hallo, ich verwende seit einigen Tagen die Software als LXC auf Proxmox, läuft alles super! Vielen Dank dafür.
Ich bekomme leider den Account von iCloud nicht hinzugefügt. Da ich 2FA nutze, muss ich ein App Passwort nutzen, leider kommt beim Anlegen immer eine Fehlermeldung:
"Authentication Failed
Unauthorized: No token provided".

Und dann habe ich noch eine Frage, ist eine Absicherung der Nutzeranmeldung mit 2FA geplant, um generell die Sicherheit vor unbefugter Nutzung zu erhöhen?
 
@Guidoswelt Danke für das Feedback! Ich habe gerade mal meinen icloud Account mit einem App Passwort hinzugefügt, dies gelingt ohne Probleme und der Sync läuft durch. Welche Version hast du denn im Einsatz?
2FA für die Benutzeraccounts ist ebenfalls möglich. Das kannst du oben mit klick auf dein Accountnamen aktivieren.
 
Noch eine kurze Servicenachricht ;-) Inzwischen ist auch OIDC implementiert um hier dritte Authentifizierungsdienste anzubinden.
 
Danke für die schnelle Antwort, ich war tatsächlich auf einer älteren Version, nun klappt alles reibungslos!
 
  • Like
Reaktionen: s1t5
Ich wette nun wird Mail-Archiver auch in der C't aufpoppen. Da gibt es ja (in jährlicher Folge) immer Empfehlungen zu diesem Thema.
Bei mir hat das Archiv der 7 Benutzer nun die 100.000 Mails überschritten mit einem Speicherplatzverbrauch von 17,8 GB Festplatte. RAM braucht der Container zusammen mit 5 anderen (Portainer) 1,63 und die 4 Kerne unter Proxmox sind zu 99% im Idle 0! ---- Auf Gut ruhrpott-deutsch: Läuft Langen!
 
PS: Ein Artikel der C't zum Thema Mail Archivierung ist aus dem Januar 2025

C'T Mail Archivierung
Der ist leider hinter einer PayWall, aber sowas zu diesem Thema kommt dort gerne im Januar!
 
Soweit ich das mitbekommen habe noch nicht! Wie das mit der neuen Proxmox Funktion "Docker-Import" funktionieren könnte kann ich auch noch nicht sagen. Ich nutze bei meiner Installation auf Proxmox einen Portainer-Container. Auch weil ich damit Watchtower für die regelmäßige Aktualisierung nutzen kann.

F@H
 
Also seit Gestern! Das geht so schnell! Danke für den Link @King3R
Vergesst nich die Standard Credentials für die datenbank und das WEB Interface zu personalisieren!
 
Danke für den Link, der Mail Archiver läuft jetzt bei mir. Der Job hat eine fehlgeschlage Mail. Er dauert fast 1 Stunde und wiederholt sich alle Stunde. Wie finde ich die fehlgeschlagene Mail heraus?
 
Läuft bei euch die vorgestern veröffentliche Version 2601.1?

Ich hab gestern auf Version 2601.1 aktualisiert, muss aber sagen, so ganz fehlerfrei läuft die bei mir nicht...

Schon gestern ist mir direkt aufgefallen, dass ein Sync mit Arcor statt <5 Sekunden über 30 Minuten lief und letztlich mit "Fehlgeschlagen" endete.
Gerade bin ich wieder in die Jobs, und alles "Fehlgeschlagen" mit Arcor.

Code:
Error during sync for account XXX@arcor.de: The instance of entity type 'MailAccount' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.
      System.InvalidOperationException: The instance of entity type 'MailAccount' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.ThrowIdentityConflict(InternalEntityEntry entry)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(TKey key, InternalEntityEntry entry, Boolean updateDuplicate)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(TKey key, InternalEntityEntry entry)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(InternalEntityEntry entry)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.StartTracking(InternalEntityEntry entry)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.OnStateChanging(EntityState newState)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntryBase.SetPropertyModified(IProperty property, Boolean changeState, Boolean isModified, Boolean isConceptualNull, Boolean acceptChanges)
         at Microsoft.EntityFrameworkCore.ChangeTracking.PropertyEntry.set_IsModified(Boolean value)
         at MailArchiver.Services.Providers.ImapEmailService.SyncMailAccountAsync(MailAccount account, String jobId) in /app/Services/Providers/ImapEmailService.cs:line 167
info: MailArchiver.Services.SyncJobService[0]
      Completed sync job 0ea95fe9-5c74-417a-bd6f-48fe3177c551 with status Failed
fail: MailArchiver.Services.MailSyncBackgroundService[0]
      Error syncing mail account XXX@arcor.de: The instance of entity type 'MailAccount' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.
      System.InvalidOperationException: The instance of entity type 'MailAccount' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the conflicting key values.
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.ThrowIdentityConflict(InternalEntityEntry entry)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(TKey key, InternalEntityEntry entry, Boolean updateDuplicate)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(TKey key, InternalEntityEntry entry)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(InternalEntityEntry entry)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.StartTracking(InternalEntityEntry entry)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.OnStateChanging(EntityState newState)
         at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntryBase.SetPropertyModified(IProperty property, Boolean changeState, Boolean isModified, Boolean isConceptualNull, Boolean acceptChanges)
         at Microsoft.EntityFrameworkCore.ChangeTracking.PropertyEntry.set_IsModified(Boolean value)
         at MailArchiver.Services.Providers.ImapEmailService.SyncMailAccountAsync(MailAccount account, String jobId) in /app/Services/Providers/ImapEmailService.cs:line 167
         at MailArchiver.Services.MailSyncBackgroundService.ExecuteAsync(CancellationToken stoppingToken) in /app/Services/MailSyncBackgroundService.cs:line 101
info: MailArchiver.Services.MailSyncBackgroundService[0]
      Mail sync completed. Waiting for next sync cycle.

Kurzerhand wieder auf das Image 2512.2 gewechselt - und läuft wieder
 
Also bei uns läuft die 2601.1 problemlos. Es schein also an dem Provider ARCOR zu liegen.
Arcor ist ja von Vodafone vor etlichen Jahren (wie Unitymedia und Kabel Deutschland) übernommen worden. Eventuell hat es auf deren Seite eine Veränderung gegeben oder s1t5 muss nachschauen ob etwas in der Transportkonfiguration für diesen Provider hackt. So etwas hat es ja schon mal gegeben.
Grundlegend scheint die 202601.1 zumindet bei uns zu funktionieren!
 

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