Backup und Restore von imap-Ordnern zur Archivierung

rMarkus

Chuck The Plant
Hallo,

bisher habe ich nur nicht zufriedenstellende Lösungen für folgendes Problem gefunden:

- Es sollen alle E-Mails eines IMAP-Ordners in eine lokale Datei/Ordner heruntergeladen werden
- Die E-Mails werden dann manuell oder durch das Tool aus dem Ordner geloescht
- Bei bedarf soll man alle oder ggf. eine E-Mail aus der lokalen Sicherung wieder auf den IMAP-Server zurueckspielen (daran scheitern die meisten tools)
- Das Tool soll klein sein und keine ekligen Abhaengigkeiten wie GUI, Sprachinterpreter oder Datenbanken haben

So eine Aufgabenstellung sollte doch nicht selten sein.

Vielleicht habt ihr da einen sachdienlichen Hinweis.
 
Schaue dir mal isync / mbsync an. Das ist das gleiche Tool, hat sich irgendwann auf dem Weg mal umbenannt.
 
Danke Yamagi.

Ich habe das mal mit mbsync durchprobiert:

=====================================================

Imap Backup & Restore mit mbsync/isync
---

# Software installieren unter FreeBSD
pkg install isync

# Konfigurationsdatei anlegen (hier als Beispiel GMX):

vi ~/.mbsyncrc
"
# Achtung: Leerzeilen haben hier eine Funktion
IMAPAccount gmx
Host imap.gmx.net
User xxx
Pass yyy
SSLType IMAPS

IMAPStore gmx-remote
Account gmx

MaildirStore gmx-local
# Slash am Ende ist wichtig, sonst kann der das nachher nicht oeffnen
Path ~/.mail/gmx/
Inbox ~/.mail/gmx/inbox/
Channel gmx
Master :gmx-remote:
Slave :gmx-local:
# IMAP-Ordner, die gesichert werden sollen, hier spaeter eintragen:
Patterns INBOX Gesendet
Create Slave
Sync Pull
Remove None
CopyArrivalDate yes
SyncState *
"

mkdir -p ~/.mail/gmx

# Testlauf: Nur auflisten der zu kopierenden Ordner
mbsync -l --verbose gmx

# Aktiv SPAETER starten mit:
mbsync gmx

Testlauf mit Testdaten:
1. In Mutt einen Testordner erzeugen:
- Die ersten 1000 Mails taggen: T ~m 1-1000
- Die Mails in neuen Ordner kopieren: ;C =test
(s verschiebt und C kopiert)
Create new Folder: yes
- dann in den Ordner wechsel, ob auch alle da ist:
2. Test-Ordner runterladen
- vi ~/.mbsyncrc
"
# wie oben, aber nur den Test-Ordner uebertragen:
Patterns "test"
"
- Mail-Ordner von vorherigen Versuchen loeschen und neu anlegen:
rm -r ~/.mail
mkdir -p ~/.mail/gmx
- Backup starten: mbsync gmx
- Man kann das jetzt noch mal aufrufen und es kommen dann immer die
neuen Mails rueber
3. Mails im Ordner mit mutt loeschen
- Ordner wechseln: c =test
- Die ersten 1000 Mails taggen: T ~m 1-1000
- und loeschen: ;d $
4. Sync-Status der lokalen Sicherung bearbeiten, damit das auch zurueckgesichert wird:
- remove all .mbsyncstate and .uidvalidity:
find .mail -type f -name '.??*' -delete
- strip mbsync's unique identifiers from mail names:
find .mail -type f -name '*U=*' | { while read f; do mv "$f" "`echo $f | sed
-e 's/,U=[0-9]*//'`"; done }
- pruefen mit:
find .mail -type f -name '*U=*'
5. Recover machen: mbsync -Cm --push gmx
- Bedeutung:
-Cm -> Override Channel-config: create Master
--push -> Override Channel-Config: push statt pull
 
Zusammenfassung:
- Das funktioniert wie oben beschrieben
- Auch der Empfangszeitpunkt ist nach dem Restore wieder so wie vorher

Leider hat mbsync eine Abhängigkeit zu Perl.

Mich stört aber folgendes:
Unter Punkt 4. muss der Sync-Status brutal zerstoert werden, damit mbsync die Mails wieder zurueckspielt nach IMAP.

Kann man das nicht schöner und verlustfrei z.B. mit irgendwelchen Override-Optionen machen?
 
Hmm... Das weiß ich ehrlich gesagt nicht. Aber selbst wenn nicht, sollte sich das eigentlich schmerzfrei reinpatchen lassen. Man müsste nur an der richtigen Stelle sagen, den Sync-Status nicht zu lesen oder noch besser ihn beim Synchronisieren erst gar nichts auszuschreiben. Ich kenne auch keine Alternative. Es gäbe noch offlineimap, aber meiner Erfahrung nach ist das Programm unzuverlässig und (wie viele Python-Scripte) unendlich langsam, gerade wenn es sich durch mehr als nur ein paar hundert Mails fressen soll.
 
Zurück
Oben