Ubuntu 12.04 „Precise Pangolin“
Ubuntu 11.10 „Oneiric Ocelot“
Ubuntu 10.04 „Lucid Lynx“
Imapsync
ist ein IMAP-Client für die Shell, welcher das inkrementelle und rekursive Kopieren von E-Mailnachrichten zwischen zwei Servern vereinfacht. Es ist also 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 Quellen vorhanden. Es muss zuerst manuell ein .deb-Paket erstellt werden, um die Installation erfolgreich auszuführen.
Zuerst müssen einige Werkzeuge installiert [1] werden, um das Erstellen des Pakets zu ermöglichen:
build-essential
devscripts
debhelper
cdbs
libdigest-hmac-perl
libterm-readkey-perl
libio-socket-ssl-perl
libdate-manip-perl
libmail-imapclient-perl
mit apturl
Paketliste zum Kopieren:
sudo apt-get install build-essential devscripts debhelper cdbs libdigest-hmac-perl libterm-readkey-perl libio-socket-ssl-perl libdate-manip-perl libmail-imapclient-perl
sudo aptitude install build-essential devscripts debhelper cdbs libdigest-hmac-perl libterm-readkey-perl libio-socket-ssl-perl libdate-manip-perl libmail-imapclient-perl
Nun wird der Quellcode geladen und extrahiert.
Arbeitsverzeichnis erstellen:
mkdir ~/tmp; cd ~/tmp
Quellcode vom Server holen und entpacken:
dget -xu http://de.archive.ubuntu.com/ubuntu/pool/universe/i/imapsync/imapsync_1.315+dfsg-1.dsc
In Imapsync Verzeichnis wechseln:
cd imapsync-1.315+dfsg
Suffix +local
dem Versionsstring anfügen:
dch -l +local
Nun öffnet sich der Editor, der über die Umgebungsvariable EDITOR
, bzw. über das Alternativen-System festgelegt ist, mit der Changelog-Datei des heruntergeladenen imapsync Quellpakets.
Die ersten fünf Zeilen sollten nun syntaktisch so ausehen:
1 2 3 4 5 | imapsync (1.315+dfsg-1+local1) precise; urgency=low * rebuild -- simon <simon@test3.vm.home.local> Tue, 07 Aug 2012 19:04:34 +0200 |
Es muss eine Beschreibung hinter dem *
eingegeben werden, da dch
sonst seine Arbeit verweigert. Die letzte Zeile passt man nach Wunsch an.
Nun muss nur noch das Paket erstellt und installiert werden.
Kompilieren und Packen:
dpkg-buildpackage -us -uc
Installieren:
sudo dpkg -i ../imapsync_1.315+dfsg-1local1_all.deb apt-get -f install
Imapsync ist bis Ubuntu 11.04 in den offiziellen Paketquellen vorhanden und kann daher über die Paketverwaltung installiert [1] werden:
imapsync (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install imapsync
sudo aptitude install imapsync
Nach der Installation kann Imapsync über ein Terminal [2] mit dem Kommando imapsync
gestartet [3] werden.
Nachfolgend sind die wichtigsten Verbindungsparameter aufgelistet. Nachdem man das Kommando mit diesen Parametern bestückt hat, sollte man 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 über die wichtigsten:
Parameter für den Kopiervorgang | ||
Parameter | Beschreibung | |
--folder <name> | Ordner inklusive enthaltene Mails kopieren. * | |
--folderrec <name> | Ordner inklusive enthaltene 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 Nachrichten vom Quellserver nach erfolgreichem Transfer. | |
--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 dem Befehl --regexflag 's/"Seen"//g'
alle Nachrichten als ungelesen markiert, oder mit --regexflag 's/"Junk"//g'
die Junkflags entfernt.
Situation 1: Es soll die komplette Mailbox auf einen anderen Server umgezogen werden.
imapsync --host1 foo.example.com --user1 foobar --password1 secret --authmech1 PLAIN \ --host2 bar.example.com --user2 barfoo --password2 secret --authmech2 PLAIN \ --delete
Situation 2: Es soll die Inbox inkl. Unterordner eines Benutzers 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 an: Quellbenutzer;Passwort;Zielbenutzer;Passwort
user001;password001;user001;password001 user002;password002;user002;password002 user003;password003;user003;password003 user004;password004;user004;password004 user005;password005;user005;password005
Diese wird als mailboxes.txt abgespeichert. Nun kann mit folgendem Einzeiler 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 falschen/unterschiedlichen Konfigurationen 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)
imapsync - Fork des letzten unter der GPL veröffentlichten imapsync-Quellcodes
NoPriv.py - IMAP-Konto als lokales HTML-Archiv sichern
Serverdienste Übersichtsseite