Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
imapsync ist ein kommerzieller IMAP-Client für die Shell, welcher das inkrementelle und rekursive Kopieren von E-Mailnachrichten zwischen zwei Servern vereinfacht. Es ist sehr gut für die Datenmigration bei Serverumzügen oder einfach zum Sichern der eigenen Mailbox geeignet. Das Programm basiert auf Perl und ist mit nahezu allen bekannten IMAP-Servern kompatibel.
Trotz seines Namens ist imapsync keine Software für eine 2-Wege-Sychronisation: Es wird nur vom Quell- auf den Zielserver kopiert. Bei anderen Wünschen kann man sich mit den Programmen OfflineIMAP (offlineimap) und isync (isync) beschäftigen.
Ab Ubuntu 11.10 ist imapsync nicht mehr in den offiziellen Paketquellen enthalten. Daher muss man das Paket imapsync_1.315+dfsg-1_all.deb manuell herunterladen und installieren [1].
Fortgeschrittene finden auf GitHub weitere Informationen, um die aktuellste Version aus dem Quellcode zu erstellen.
Nach der Installation kann imapsync über ein Terminal [2] mit dem folgenden Kommando gestartet werden:
imapsync OPTIONEN
Nachfolgend sind die wichtigsten Verbindungsoptionen aufgelistet. Nachdem man das Kommando um diese Parametern ergänzt hat, sollte man zusätzlich die Option --justlogin
anfügen, um zu testen, ob sich imapsync an beiden Servern erfolgreich anmeldet. Sollte dies der Fall sein, kann man mit den Parametern zum Kopieren fortfahren. Tritt während der Anmeldung ein Fehler auf, bitte den Abschnitt Kompatibilität beachten!
Parameter für den Quellserver | ||
Parameter | Beschreibung | |
--host1 <IP oder Domain> | Quell-IMAP-Server | |
--port1 | Port am Quellserver | |
--user1 <username> und --password1 <passwd> | Login für den Quellserver | |
--authmech1 <PLAIN|LOGIN|CRAM-MD5|...> | Authentifizierungsmethode Quellserver (meist PLAIN, dann aber ungesichert) | |
--ssl1 | Nutzt SSL für die Serververbindung | |
--tls1 | Nutzt TLS für die Serververbindung | |
Parameter für den Zielserver | ||
--host2 <IP oder Domain> | Ziel-IMAP-Server | |
--port2 | Port am Zielserver | |
--user2 <username> und --password2 <passwd> | Login für den Zielserver | |
--authmech2 <PLAIN|LOGIN|CRAM-MD5|...> | Authentifizierungsmethode Zielserver (meist PLAIN, dann aber ungesichert) | |
--ssl2 | Nutzt SSL für die Serververbindung | |
--tls2 | Nutzt TLS für die Serververbindung |
Nachdem die Anmeldung geglückt ist, können nun die Parameter für den Kopiervorgang angehängt werden. Nachfolgend wieder eine Übersicht:
Parameter für den Kopiervorgang (Auswahl) | ||
Parameter | Beschreibung | |
--folder <name> | Ordner inklusive enthaltener Mails kopieren* | |
--folderrec <name> | Ordner inklusive enthaltener Mails und Unterordner kopieren (Rekursiv)* | |
--include <RegEx> | Alle Ordner, die auf das Muster <RegEx> passen, werden kopiert* | |
--exclude <RegEx> | Alle Ordner, die auf das Muster <RegEx> passen, werden nicht kopiert* | |
--prefix1 und --prefix2 | Legt das IMAP-Prefix für Quell- und Zielserver fest | |
--delete | Löscht nach erfolgreichem Transfer Nachrichten vom Quellserver | |
--delete2 | Löscht Nachrichten vom Zielserver, die nicht auf dem Quellserver vorhanden sind | |
--justfolders | Legt nur die Ordner auf dem Zielserver an |
* diese Argumente können mehrmals verwendet werden
imapsync erlaubt auch das automatische Bearbeiten von Nachrichten und ihrer Header während des Kopiervorgangs. Hierzu wird die Option --regexflag
genutzt, um die Flags einer Nachricht zu entfernen oder hinzuzufügen - respektive die Option --regexmess
, um Bestandteile der Nachricht selbst zu verändern.
So werden mit der Option --regexflag 's/"Seen"//g'
alle Nachrichten als ungelesen markiert, oder mit --regexflag 's/"Junk"//g'
die Junkflags entfernt.
Es soll eine komplette Mailbox auf einen anderen Server übertragen werden:
imapsync --host1 foo.example.com --user1 foobar --password1 secret --authmech1 PLAIN \ --host2 bar.example.com --user2 barfoo --password2 secret --authmech2 PLAIN \ --delete
Es soll die Inbox eines Benutzers inkl. Unterordner auf einen anderen Server gesichert werden. Die Ordner Spam und Privat sollen nicht übertragen werden:
imapsync --host1 foo.example.com --user1 foobar --password1 secret --authmech1 PLAIN \ --host2 bar.example.com --user2 barfoo --password2 secret --authmech2 PLAIN \ --exclude 'Privat' --exclude 'SPAM'
Um auch bei vielen zu migrierenden Mailboxen den Überblick zu behalten, sollte man den Prozess am besten automatisieren. Dazu legt man eine Textdatei mit folgendem Muster Quellbenutzer;Passwort;Zielbenutzer;Passwort
an:
user001;password001;user001;password001 user002;password002;user002;password002 user003;password003;user003;password003 user004;password004;user004;password004 user005;password005;user005;password005
Diese Datei wird als mailboxes.txt abgespeichert. Nun kann mit folgendem Befehl die komplette Migration vorgenommen werden:
{ while IFS=';' read u1 p1 u2 p2; do imapsync --host1 foo.example.org --user1 "$u1" --password1 "$p1" --authmech1 PLAIN \ --host2 bar.example.org --user2 "$u2" --password2 "$p2" --authmech2 PLAIN \ done ; } < mailboxes.txt
imapsync ist, wie bereits oben erwähnt, mit fast allen IMAP-Servern kompatibel. Trotzdem gibt es Ausnahmen aufgrund falscher Implementierungen oder falscher/unterschiedlicher Konfiguration der Server.
Bekannte Probleme gibt es mit diesen Mailservern:
MDaemon - (nur als Zielserver fehlerhaft; fehlerhafte Implementierung von APPEND)
Zarafa - (nur als Zielserver; Fehler beim Setzen des RECENT-Flags; Nachricht wird übersprungen)
Diese Revision wurde am 9. Februar 2017 19:38 von aasche erstellt.