E-Mails von Gmail zu Uberspace umziehen

Gmail ist zwar hübsch und praktisch, aber wer will sich schon seine E-Mails durchsuchen lassen und wer weiß überhaupt wie lange Google den Service noch für ausreichend profitabel hält. Außerdem ist selbst hosten cool, das wisst ihr ja inzwischen.

Wie man seinen E-Mail-Server einrichtet wird vom Uberspace-Support ausreichend beschrieben. Bevor man jetzt seine MX-Records endgültig ändert will man aber möglicherweise seine jahrelang angesammelten Mails noch in die neue Mailbox mitnehmen. Das geht so:

  1. Imap in den Einstellungen von Gmail aktivieren, sofern man das nicht schon getan hat.
  2. Per SSH auf dem Uberspace einloggen. Da der Sync bei größeren Mailboxen etwas länger dauern kann sollte man zunächst eine Screen Session starten das geht mittels
    screen -S imapsync

    So kann das Script weiterlaufen, auch wenn man sich wieder ausgeloggt hat.

  3. Mit dem Editor seiner Wahl legt man jetzt zwei separate Passwortdateien an. passfile1 enthält das Gmail Passwort (Wer Two-Factor-Authentication nutzt muss sich hierfür ein applikationsspezifisches Passwort generieren.), passfile2 enthält das Uberspace Passwort. (Das verwendete Script kann die Passwörter zwar auch direkt übernehmen, die tauchen aber dann in der Prozessliste auf und sind somit für jeden User auf dem Server einsehbar.)
  4. Das Script zum Mailtransfer ist imapsync. Das ist netterweise schon auf deinem Uberspace installiert. Die komplette Zeile mit den hierfür richtigen Optionen lautet
    imapsync --host1 imap.gmail.com --user1 deinusername@gmail.com --passfile1 passfile1 --host2 pyxis.uberspace.de --user2 deinusername@pyxis.uberspace.de --passfile2 passfile2 --syncinternaldates --ssl1 --ssl2 --noauthmd5 --split1 100 --split2 100 --port1 993 --port2 993 --exclude "Spam|Trash" --allowsizemismatch

    Was die einzelnen Optionen bewirken, können sich interessierte User ja aus den Manpages erschließen. Den Usernamen von Gmail und Uberspace, sowie den richtigen Server müsst ihr natürlich an den entsprechenden Stellen ersetzen.

  5. Das Script sollte jetzt fröhlich los kopieren. Wenn ihr euch währenddessen ausloggen und den Rechner zuklappen wollt, dann müsst ihr die Screen Session zunächst mit
    Ctrl+A gefolgt von D

    detachen. Um sie später wieder aufzunehmen reicht

    screen -r imapsync

     

Viel Erfolg

22 Antworten auf „E-Mails von Gmail zu Uberspace umziehen“

  1. Cool, danke für die Infos!

    Ich war komplett in der iCloud für Mails, Kontakte, Kalender, etc. und habe nun eine Owncloud im Uberspace laufen für Kontakte und Kalender. Fehlt nur noch Mail! Und das hast du gut für einen anderen Hoster beschrieben – ich bin mir sicher, das ist mit ein wenig Anpassung übertragbar!

  2. hi, ich bekomme immer den Fehler:
    Failure: error login on [imap.gmail.com] with user [email@google-apps.de] auth [LOGIN]: 2 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)

    Ich benutze Google Apps mit meiner Domain.
    Hab schon versucht einen UnlockCaptcha durchzuführen, aber der will meinen Nutzernamen nicht haben ??? https://www.google.com/a/meine-domain/UnlockCaptcha
    Google sagt: Diese Zeichen sind nicht zulässig: @
    wobei hello@meine-domain.de doch der Nutzername ist ?

    Was mach ich falsch ?
    mfg

  3. Tolle Anleitung,
    ich überlege auch gerade zu wechseln, frage mich aber ob es eine Möglichkeit gibt, wie bei Gmail die Archivieren-Funktion per prominent platziertem „Archivieren-Button“ in meinen Mail Clients zu benutzen. (Klar kann man die Mails auch per Hand verschieben, aber alles was zu umständlich ist macht man dann ja doch nicht)
    Also zumindest im (guten alten) Sparrow for Mac funktioniert das mit dem Archivieren-Button. In Mail auf iOS gibt es die Option in den Einstellungen nur bei Gmail oä. Konten.
    Weiß da jemand was?
    (mit dem Begriff „Archivieren“ findet man bei Google leider nur wie man sich seine Mails vom Server zieht zu Backup-zwecken 😉

    Danke

  4. Danke für die Anleitung, werde ich bei Gelegenheit mal probieren. Problem, welches ich hier allerdings sehe, sind die Labels die in der IMAP-Struktur ja als Ordner abgebildet werden.

    Hat eine E-Mail mehrere Labels, wird sie auch in jedem virtuellen Ordner synchronisiert, liegt also auf dem Ziel-Server mehrfach vor. Kann nun gut oder schlecht sein, je nachdem wie man seine Mails verwaltet. Zusätzlich kommt dazu, dass der Ordner „Alle Nachrichten“ übertragen wird, in dem nochmal alle E-Mails drin sind. Damit hat man dann die x-fache Datenmenge auf dem Ziel-Server liegen.

    Eine richtige Lösung für das Problem habe ich bisher nicht gefunden, man könnte sich nur die Arbeit machen, nur den Ordner „Alle Nachrichten“ zu übertragen und die Mails nachträglich manuell in Ordner zu sortieren.

    Oder weißt du ne andere/bessere Lösung dafür?

    1. Moin Bernd,

      eigentlich ist es ganz leicht: Wenn du keine doppelten Nachrichten haben möchtest, kannst du entweder alle Ordner außer „Alle Nachrichten“ syncen oder du syncronisierst nur „Alle Nachrichten“.

      Viele Grüße aus der lübschen Hansestadt!

      Alexander

      1. Beide Varianten haben ihre Nachteile 😉

        Zum einen hat man nicht automatisch für jede E-Mail ein Label vergeben. Damit würde man also viele Mails nicht übertragen, wenn man „Alle Nachrichten“ weg lässt.

        Überträgt man statt dessen nur „Alle Nachrichten“, fehlt die Ordnerstruktur und man muss alles wieder manuell sortieren, wie ich es schon in meinem ersten Kommentar geschrieben hatte.

        In der Hinsicht hat man sich mit GMail ein echtes Problem an Land gezogen, wenn man wieder davon weg möchte. Oder man lebt eben mit den doppelten Mails und schert sich nicht um den Speicherplatz.

        1. Ein IMAPclient erkennt keine Labels, sieht nur Ordner.
          Ich habe immer nur ein Label pro Mail benutzt und die Mails dann direkt aus dem Posteingang entfernt, insofern war das dann kein Problem für mich, das Konto habe ich die meiste Zeit eh mit einem MUA benutzt.

          MUAs die Labels nutzen kenne ich nur im Zusammenhang mit notmuch/afew.

          Nachbearbeitung ist aber immer nötig, neue Filter für Labels müssen in jedem Fall angelegt werden..

          Ich bin gerade auf der Suche nach einer hübschen Anleitung wie ich mit meinen Kontakten bei gmail komplett ausziehen kann, mit Baikal statt owncloud und Android.

  5. Hallo,
    bei mir ist der Vorgang abgebrochen, bevor ich die Session detached habe.
    Wenn ich das Skript nochmal starte, werden dann alle Mails einfach nochmal kopiert, sodass dann einige doppelt da sind, oder werden die vorhandenen überschrieben oder … was passiert?
    VG die nachtschicht

  6. Hallo zusammen,
    prima Sache.
    Kann ich das Script auch mehrfach laufen lassen (für mails, die vielleicht nach der Migration bei gmail eingehen)? Oder bekomme ich die alten Mails dann doppelt?

  7. Könntest du mir bitte Schritt 3 genauer erklären?
    Ich bin absoluter Anfänger und für mich ist das alles noch neu.

    Ich habe versucht mit Putty ein Passfile zu erstellen indem ich

    echo „passwort1“ > /etc/secret1
    echo „passwort2“ > /etc/secret2
    chmod 600 /etc/secret1
    chmod 600 /etc/secret2

    eingegeben habe, aber leider kriege ich ein access denied. Ich habe das auch nur so eingegeben weil ich es irgendwo im Internet gefunden habe. Eigentlich habe ich keine Ahnung was das bedeutet 🙂

    Danke schonmal!

  8. @Mark Soweit ich weiß werden die Nachrichten nicht doppelt kopiert.

    @Maurice Der Fehler liegt darin, dass du versucht hast in den Ordner /etc zu schreiben. Das darfst du als einfacher Benutzer auf diesem System aber nicht. Bleib einfach in deinem Benutzerordner (in dem du nach dem Einloggen sowieso landest) und lass das „/etc/“ überall weg, dann sollte das eigentlich so funktionieren.

  9. Vielen Dank! Für alle die auch Probleme haben
    So muss es aussehen:

    echo “passwort1″ > passfile1
    echo “passwort2″ > passfile2
    chmod 600 passfile1
    chmod 600 passfile2

    und die anführungszeichen bei „passwort“ jeweils weglassen

    🙂

  10. Hallo!
    Danke für die Anleitung, kurze Anmerkung, es hat sich m. E. ein Schreibfehler im Code eingeschlichen:
    * -ssl2 sollte --ssl2 heißen
    Wofür steht --split1 und--split2, kann dazu in der imapsync Dokumentation nichts finden?

    1. Oh, ja, das stimmt wohl.
      Zu Split:

      –split1 : split the requests in several parts on source server.
      is the number of messages handled per request.
      default is like –split1 1000
      –split2
      : same thing on the „destination“ server.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.