Direkt zum Inhalt

E-Mails sicher von einem Hoster zum anderen umziehen – mit imapsync - Schritt-für-Schritt-Anleitung

Wer seinen Webhoster wechselt, hat die Website meistens schnell übertragen: Dateien kopieren, Datenbank exportieren und beim neuen Anbieter wieder importieren, Domain umziehen – fertig.

Bei den E-Mails sieht es etwas anders aus.

In einem IMAP-Postfach können sich über viele Jahre Tausende Nachrichten angesammelt haben. Dazu kommen gesendete E-Mails, Papierkorb, Entwürfe, Archive und zahlreiche selbst angelegte Ordner.

Genau vor diesem Problem stand ich bei meinem eigenen Hosterwechsel.

Meine Anforderungen waren relativ einfach: Alle vorhandenen E-Mails sollten inklusive der Ordnerstruktur auf den neuen Mailserver kopiert werden. Auf dem alten Server sollte dabei zunächst nichts gelöscht werden.

Nach einigen Versuchen stellte sich imapsync dafür als sehr praktische Lösung heraus.

In dieser Anleitung zeige ich, wie man E-Mail-Postfächer mit imapsync Schritt für Schritt von einem Hoster zu einem anderen migriert – einschließlich Verbindungstest, Dry-Run und der korrekten Zuordnung von Ordnern wie „Gesendet“, „Papierkorb“ und „Spam“.

Was ist imapsync?

imapsync ist ein Werkzeug zur Synchronisation zweier IMAP-Postfächer.

Das Prinzip ist einfach:

Alter Mailserver
       │
       │ IMAP
       ▼
    imapsync
       │
       │ IMAP
       ▼
Neuer Mailserver

imapsync meldet sich gleichzeitig beim alten und beim neuen Mailserver an und kopiert die Nachrichten zwischen den beiden Postfächern.

Das hat gegenüber einem manuellen Export einige Vorteile.

Die E-Mails müssen nicht zunächst lokal gespeichert und anschließend wieder importiert werden. Auch große Postfächer lassen sich übertragen und ein Transfer kann später erneut durchgeführt werden.

Besonders wichtig bei einem Hosterwechsel: Ohne entsprechende Löschoptionen entfernt imapsync keine Nachrichten vom alten Server.

Damit bleibt das ursprüngliche Postfach zunächst als zusätzliche Sicherheitskopie erhalten.

Was benötigt man für den Umzug?

Für beide Mailserver benötigt man die jeweiligen IMAP-Zugangsdaten.

Für den alten Server beispielsweise:

IMAP-Server: imap.alter-hoster.example
Port:        993
Benutzer:    ALTER_BENUTZER
Passwort:    ********

Und für den neuen Server:

IMAP-Server: imap.neuer-hoster.example
Port:        993
Benutzer:    mail@example.org
Passwort:    ********

Port 993 wird üblicherweise für verschlüsselte IMAP-Verbindungen über SSL/TLS verwendet.

Achtung beim IMAP-Benutzernamen

Eine kleine Besonderheit hat mich bei der Migration zunächst aufgehalten:

Der IMAP-Benutzername muss nicht identisch mit der E-Mail-Adresse sein.

Einige Hostinganbieter verwenden interne Namen für ihre Postfächer. Der Benutzername könnte dann beispielsweise so aussehen:

mailbox123-user

obwohl die eigentliche E-Mail-Adresse lautet:

user@example.org

Deshalb sollte man die korrekten IMAP-Zugangsdaten vorher im Kundenbereich des alten Hosters nachsehen.

imapsync auf dem Mac installieren

Ich habe den Umzug auf einem Mac durchgeführt.

Am einfachsten lässt sich imapsync dort über Homebrew installieren:

brew install imapsync

Danach kann man überprüfen, ob die Installation funktioniert:

imapsync --version

imapsync steht auch für Linux und Windows zur Verfügung. Die Installation unterscheidet sich dort entsprechend.

Schritt 1: IMAP-Verbindung testen

Bevor man imapsync startet, sollte zunächst geprüft werden, ob der Mailserver überhaupt über das Netzwerk erreichbar ist.

Unter macOS und Linux eignet sich dafür beispielsweise nc:

nc -vz imap.alter-hoster.example 993

Für den neuen Server entsprechend:

nc -vz imap.neuer-hoster.example 993

Bei einer erfolgreichen Verbindung erscheint sinngemäß:

Connection to imap.alter-hoster.example port 993 succeeded!

Wenn die Verbindung nicht funktioniert

Genau hier hatte ich während meines Umzugs ein Problem.

Der Mailserver war über Webmail problemlos erreichbar, imapsync konnte jedoch keine Verbindung aufbauen. Ursache war letztendlich eine Firewall, die die direkte Verbindung auf Port 993 blockierte.

Deshalb lohnt sich dieser einfache Test.

Wenn bereits nc keine Verbindung herstellen kann, braucht man noch nicht nach falschen Passwörtern oder imapsync-Optionen zu suchen.

Mögliche Ursachen sind:

  • Firewall
  • Router-Regeln
  • VPN
  • gesperrter Port 993
  • falscher IMAP-Servername
  • temporäre Serverprobleme

Erst wenn die Verbindung funktioniert, geht es weiter.

Schritt 2: Login am alten Mailserver testen

Jetzt prüfen wir die Anmeldung am alten Server.

Dafür bietet imapsync die Option --justlogin.

imapsync --host1 imap.alter-hoster.example --port1 993 --ssl1 --user1 "ALTER_BENUTZER" --justlogin

Das Passwort schreibe ich bewusst nicht in den Befehl.

imapsync fragt anschließend danach:

What's the password for ALTER_BENUTZER?

Das eingegebene Passwort wird dabei nicht angezeigt.

Bei einer erfolgreichen Anmeldung erscheint unter anderem:

Host1: success login

und am Ende:

Exiting with return value 0

Damit wissen wir, dass Server, Port, SSL, Benutzername und Passwort korrekt sind.

Schritt 3: Login am neuen Mailserver testen

Jetzt wiederholen wir den Test für das neue Postfach:

imapsync --host1 imap.neuer-hoster.example --port1 993 --ssl1 --user1 "mail@example.org" --justlogin

Auch hier sollte anschließend erscheinen:

Host1: success login

Ich würde den eigentlichen Mailumzug erst beginnen, wenn beide Login-Tests unabhängig voneinander funktionieren.

Das macht die spätere Fehlersuche erheblich einfacher.

Schritt 4: Erst einen Dry-Run durchführen

Jetzt könnten wir eigentlich bereits mit dem Kopieren beginnen.

Davon würde ich allerdings abraten.

imapsync besitzt mit --dry eine sehr praktische Möglichkeit, zunächst zu simulieren, was bei der Migration passieren würde.

Ein einfacher Dry-Run sieht beispielsweise so aus:

imapsync --host1 imap.alter-hoster.example --port1 993 --ssl1 --user1 "ALTER_BENUTZER" --host2 imap.neuer-hoster.example --port2 993 --ssl2 --user2 "mail@example.org" --dry

Die Passwörter werden wieder interaktiv abgefragt.

Der große Vorteil: Man sieht jetzt unter anderem, welche Ordner auf beiden Servern existieren und wie imapsync sie zuordnen würde.

Vorsicht bei Gesendet, Papierkorb und Spam

Hier zeigte sich bei meinem Hosterwechsel die nächste Besonderheit.

Der alte Mailserver verwendete beispielsweise englische Ordnernamen:

INBOX
Sent
Sent Messages
Drafts
Trash
Deleted Messages
Junk
Archive

Der neue Mailserver hatte dagegen bereits deutsche Standardordner:

INBOX
Gesendet
Entwürfe
Papierkorb
Spam
Archiv

Würde man die Migration einfach ohne Kontrolle starten, könnten anschließend beide Varianten vorhanden sein:

Sent
Gesendet

Trash
Papierkorb

Junk
Spam

Die Nachrichten wären zwar vorhanden, aber die Ordnerstruktur wäre unnötig unübersichtlich.

Ordner mit –f1f2 richtig zuordnen

Deshalb habe ich die Ordner explizit zugeordnet.

imapsync bietet dafür --f1f2.

Die gewünschte Zuordnung sah beispielsweise so aus:

Sent             → Gesendet
Sent Messages    → Gesendet
Trash            → Papierkorb
Deleted Messages → Papierkorb
Drafts           → Entwürfe
Junk             → Spam
Archive          → Archiv

Ein entsprechender Dry-Run sieht beispielsweise so aus:

imapsync --host1 imap.alter-hoster.example --port1 993 --ssl1 --user1 "ALTER_BENUTZER" --host2 imap.neuer-hoster.example --port2 993 --ssl2 --user2 "mail@example.org" --f1f2 "Archive=Archiv" --f1f2 "Sent=Gesendet" --f1f2 "Sent Messages=Gesendet" --f1f2 "Trash=Papierkorb" --f1f2 "Deleted Messages=Papierkorb" --f1f2 "Drafts=Entwürfe" --f1f2 "Junk=Spam" --dry

Die tatsächlichen Namen sollte man immer anhand der Ausgabe des eigenen Servers kontrollieren.

Gerade Umlaute können intern vom IMAP-Server anders dargestellt werden. Ein Ordner namens „Entwürfe“ muss deshalb in einer imapsync-Ausgabe nicht zwangsläufig genauso aussehen.

Eigene Ordner korrekt übernehmen

Bei meinem alten Hoster gab es noch eine weitere Besonderheit.

Selbst angelegte Ordner wurden unterhalb von INBOX gespeichert.

Zum Beispiel:

INBOX/Rechnungen
INBOX/Projekte
INBOX/Kunden
INBOX/Urlaub

Auf dem neuen Server wollte ich diese Ordner jedoch auf oberster Ebene haben:

Rechnungen
Projekte
Kunden
Urlaub

Dafür kann imapsync die Namen während des Transfers mit einem regulären Ausdruck verändern:

--regextrans2 's#^INBOX/(.+)$#$1#'

Damit wird beispielsweise:

INBOX/Rechnungen

zu:

Rechnungen

Der eigentliche Posteingang INBOX ist davon nicht betroffen.

Der komplette imapsync-Befehl

Nach mehreren Tests sah der allgemeine Aufbau für meine Migration schließlich so aus:

imapsync --host1 imap.alter-hoster.example --port1 993 --ssl1 --user1 "ALTER_BENUTZER" --host2 imap.neuer-hoster.example --port2 993 --ssl2 --user2 "mail@example.org" --f1f2 "Archive=Archiv" --f1f2 "Sent=Gesendet" --f1f2 "Sent Messages=Gesendet" --f1f2 "Trash=Papierkorb" --f1f2 "Deleted Messages=Papierkorb" --f1f2 "Drafts=Entwürfe" --f1f2 "Junk=Spam" --regextrans2 's#^INBOX/(.+)$#$1#'

Wichtig: Dieses Beispiel muss an die tatsächlichen Ordnernamen der beiden verwendeten Mailserver angepasst werden.

Für den Test hängt man zunächst einfach:

--dry

an.

Wenn alles richtig aussieht, wird --dry entfernt und der eigentliche Transfer gestartet.

Was passiert während des Transfers?

imapsync geht die Ordner nacheinander durch und vergleicht Quelle und Ziel.

Je nach Größe des Postfachs kann der Vorgang einige Zeit dauern.

Ein Postfach mit vielen kleinen Nachrichten verhält sich dabei anders als ein Postfach mit wenigen, aber sehr großen Anhängen.

Am Ende erhält man eine Statistik.

Interessant sind insbesondere Angaben wie:

Folders synced
Messages transferred
Messages skipped
Messages found in host1 not in host2
Messages deleted on host1
Detected errors

Im Idealfall steht am Ende:

Detected 0 errors

imapsync ein zweites Mal laufen lassen

Einer der größten Vorteile von imapsync ist, dass der Vorgang wiederholt werden kann.

Das ist für einen Hosterwechsel ideal.

Man kann beispielsweise zunächst sämtliche vorhandenen Nachrichten kopieren, anschließend die Domain beziehungsweise die Mailserver-Einstellungen umstellen und danach einen weiteren Abgleich durchführen.

Eine mögliche Strategie sieht so aus:

Neues Postfach anlegen
        ↓
Erster imapsync-Lauf
        ↓
Domain / MX umstellen
        ↓
Neues Postfach testen
        ↓
Zweiter imapsync-Lauf
        ↓
Altes Postfach als Backup behalten
        ↓
Alten Vertrag später beenden

Der zweite Lauf muss nicht zwangsläufig wieder alle Nachrichten übertragen. imapsync vergleicht Quelle und Ziel und kann bereits vorhandene Nachrichten erkennen.

Das reduziert auch das Risiko, dass während der eigentlichen Umstellung noch eine Nachricht im alten Postfach zurückbleibt.

Passwörter gehören nicht in den Beispielbefehl

Bei einem Blogartikel über imapsync findet man häufig Befehle, in denen Benutzername und Passwort direkt angegeben werden.

Das würde ich vermeiden.

Ein Passwort kann dadurch beispielsweise in der Shell-History oder unter Umständen in Prozessinformationen auftauchen.

Für einen manuellen Umzug ist es einfacher, das Passwort überhaupt nicht als Parameter anzugeben.

imapsync fragt es dann interaktiv ab.

Wer sehr viele Postfächer automatisiert migrieren möchte, kann stattdessen mit Passwortdateien arbeiten. Dafür gibt es unter anderem:

--passfile1
--passfile2

Solche Dateien müssen entsprechend vor unberechtigtem Zugriff geschützt werden.

Für einen einmaligen privaten Hosterwechsel finde ich die interaktive Passworteingabe allerdings deutlich unkomplizierter.

Was imapsync nicht überträgt

Ein wichtiger Punkt wird leicht übersehen:

imapsync migriert IMAP-Inhalte.

Damit bekommt man insbesondere Nachrichten und Ordner vom alten zum neuen Server.

Nicht automatisch übertragen werden beispielsweise:

  • Kontakte und Adressbücher
  • Kalender
  • Weiterleitungen
  • E-Mail-Aliase
  • Autoresponder
  • serverseitige Filterregeln
  • Spamfilter-Konfigurationen
  • andere Einstellungen des Hostingaccounts

Diese Dinge sollte man separat im neuen Kundenkonto einrichten beziehungsweise mit dafür vorgesehenen Export- und Importfunktionen übertragen.

Typische Probleme beim Mailumzug

AUTHENTICATIONFAILED

Wenn imapsync meldet:

AUTHENTICATIONFAILED

sollte man zuerst Benutzername und Passwort kontrollieren.

Dabei nicht vergessen: Der IMAP-Benutzername des alten Hosters kann ein interner Postfachname und nicht die sichtbare E-Mail-Adresse sein.

Connection timed out

Bei einem Timeout sollte zunächst getestet werden:

nc -vz imap.alter-hoster.example 993

Funktioniert bereits das nicht, liegt das Problem wahrscheinlich nicht bei imapsync.

Firewall, VPN, Router und Serveradresse sind dann die ersten Kandidaten.

Nach dem Umzug gibt es Sent und Gesendet

Dann wurden die Standardordner wahrscheinlich nicht passend zugeordnet.

Nicht vorschnell einen der beiden Ordner löschen!

Zuerst sollte kontrolliert werden, welche Nachrichten sich jeweils darin befinden. Anschließend kann man das Mapping mit --f1f2 korrigieren und imapsync erneut laufen lassen.

Nach dem Umzug unbedingt kontrollieren

Auch wenn imapsync keine Fehler meldet, würde ich das alte Postfach nicht sofort löschen.

Ich habe nach der Migration insbesondere folgende Punkte kontrolliert:

  • Sind alte Nachrichten im Posteingang vorhanden?
  • Sind gesendete E-Mails vollständig?
  • Funktionieren alte Anhänge?
  • Sind eigene Ordner vorhanden?
  • Sind Archiv und Papierkorb vollständig?
  • Funktioniert der Empfang neuer Nachrichten?
  • Kann ich über den neuen Server E-Mails versenden?
  • Funktionieren Smartphone und Desktop-Mailprogramm?
  • Stimmen Absenderadresse und Absendername?

Das alte Postfach kann anschließend noch eine Zeit lang als Sicherheitskopie bestehen bleiben.

Mehrere E-Mail-Postfächer migrieren

Hat man mehrere Adressen, wiederholt man den Vorgang einfach für jedes Postfach.

Beispielsweise:

POSTFACH_ALT_1 → person1@example.org
POSTFACH_ALT_2 → person2@example.org
POSTFACH_ALT_3 → info@example.org
POSTFACH_ALT_4 → support@example.org

Wenn die Server bei beiden Hostern für alle Accounts identisch sind, müssen im fertigen Befehl hauptsächlich die beiden Benutzernamen geändert werden.

Trotzdem habe ich für jedes Postfach zunächst einen Dry-Run durchgeführt.

Das lohnt sich, weil die Ordnerstruktur unterschiedlich sein kann. Ein Benutzer besitzt vielleicht einen Archivordner, ein anderer nicht. Manche Accounts enthalten zusätzliche selbst angelegte Ordner.

Fazit: Mailserver-Wechsel ohne Export-Chaos

Vor meinem Hosterwechsel hatte ich erwartet, dass die Migration der E-Mails einer der unangenehmsten Teile werden würde.

Mit imapsync war der eigentliche Transfer letztendlich erstaunlich kontrollierbar.

Entscheidend war für mich, nicht sofort tausende Nachrichten zu kopieren, sondern Schritt für Schritt vorzugehen:

IMAP-Port testen
       ↓
Login beim alten Server testen
       ↓
Login beim neuen Server testen
       ↓
Dry-Run
       ↓
Ordner kontrollieren
       ↓
Ordner-Mapping festlegen
       ↓
Migration starten
       ↓
Ergebnis kontrollieren
       ↓
Später erneut synchronisieren

Besonders hilfreich sind der Dry-Run und die Möglichkeit, die Ordner des alten und neuen Mailservers gezielt aufeinander abzubilden.

Damit lässt sich auch ein größeres IMAP-Postfach inklusive Posteingang, gesendeter Nachrichten, Papierkorb und eigener Ordner auf einen neuen Hoster übertragen, ohne zuerst alles lokal exportieren und wieder importieren zu müssen.

Und solange man keine Löschoptionen verwendet, bleiben die ursprünglichen Nachrichten auf dem alten Mailserver erhalten.

Das ist für mich bei einer Migration der entscheidende Punkt: Erst kopieren, dann kontrollieren und erst ganz am Ende aufräumen.