E-Mail Postfach auf eigenen Server umziehen

Es kommt vor dass man eine Domain bei einem Provider hat mit gehostetem E-Mail Postfach. Möchte man nun die Domain auf einen eigenen Server umziehen fällt zwangsweise auch das E-Mail Postfach beim Provider weg oder man möchte es einfach selbst umziehen weil z.B. der angebotene Speicherplatz zu klein ist. Auf dem neuen Root-Server ist dafür das Tool fetchmail eine gute Hilfe. Etwas Kommandozeilenerfahrung mit SSH sollte man dafür allerdings mitbringen. Auf einem CentOS Server ist falls noch nicht vorhanden das Paket fetchmail zu installieren:

yum install fetchmail

Für fetchmail gibt es eine Konfigurationsdatei /etc/fetchmailrc in der die Zugangsdaten des alten Postfaches einzutragen sind mit folgendem Format:

poll xxx.xxx.xxx.xxx with proto IMAP user ‚benutzername‘ there with password ‚dasaltePasswort‘ is info@domain.de here ssl;

Benötigt werden die Daten des alten Postfaches:

  • Servername oder IP-Adresse (nach poll)
  • IMAP oder POP3 als Postfachtyp
  • Benutzername
  • Passwort

Die zuletzt angegebene E-Mail Adresse ist das neue Postfach, das zuvor auf dem Server angelegt werden muss. SSL sollte man aktivieren, bei vielen Providern ist es mittlerweile Standard.

Nun kann man einmal den Abruf testen mit dem Kommando

fetchmail -v -a -k -c -f /etc/fetchmailrc

Das Kommando bewirkt folgendes
-v Verbose, damit die einzelnen Schritte aufgelistet und zu sehen sind
-a Alle Mails abrufen, auch die gelesenen
-k keep, die E-Mails werden nicht gelöscht nach dem Abruf (für den Test)
-c check, es wird nur ein Test gemacht, die Mails werden nicht gespeichert
-f file, verwende die angegebene Konfigurationsdatei

Die Ausgabe enthält nun einige Zeilen wie
fetchmail: –check mode enabled, not fetching mail
fetchmail: IMAP> A0002 STARTTLS
fetchmail: IMAP< A0004 OK LOGIN completed
und das wichtigste die Anzahl der E-Mails
fetchmail: IMAP< * 161 EXISTS

War das erfolgreich kann man einen Download starten ohne -c, evtl. ohne die Mails zu löschen mit dem Kommando:

fetchmail -v -a -k -f /etc/fetchmailrc

Die Mails sind jetzt im neuen Postfach gespeichert unter /var/qmail/mailnames/undsoweiter und können normal über das neue Postfach abgerufen werden.

Möchte man die Mails beim alten Provider löschen ist statt -k ein -K zu verwenden, die Mails werden nach dem Abruf vom alten Postfach unwiederbringlich gelöscht. Das ist hilfreich falls weiterhin Mails im alten Postfach eingehen und diese nachträglich abgerufen werden müssen.

Zu erwähnen ist dass keine E-Mails aus Unterordnern automatisch heruntergeladen werden. Möchte man z.B. den Ordner Gesendete Objekte von 1und1 herunterladen dann ist die Datei /etc/fetchmailrc wie folgt anzupassen:

poll xxx.xxx.xxx.xxx with proto IMAP user ‚benutzername‘ there with password ‚dasaltePasswort‘ is info@domain.de here ssl folder „Gesendete Objekte“;

Am besten man lädt sich also zuerst einzeln jeweils einen Unterordner und verschiebt die E-Mails nach dem Abruf in den entsprechenden Ordner des neuen Postfaches. Zum Schluss lädt man dann die E-Mails aus der normalen Inbox ohne Ordner.

Vor dem ganzen Abruf vielleicht auch noch die maximale E-Mail Größe im postfix definieren, sonst werden übergroße Mails nicht heruntergeladen, also in der /etc/postfix/main.cf eine Zeile mit z.B.
message_size_limit = 51200000
hinzufügen, dann können 50 MB große E-Mails empfangen werden.

Erfolgreich habe ich das verwendet um Postfächer von 1&1 und von Greyhound umzuziehen.
Bei Greyhound muss man allerdings vorher telefonisch den Abruf und das Löschen aktivieren lassen und es können nicht alle Mails auf einmal abgerufen werden, also einfach das Kommando mehrmals hintereinander ausführen.

Alles in allem eine kleine Frickelbude, aber immer noch besser als beide Postfächer im Thunderbird einzurichten um dann alle Mails einmal runterzuladen und im neuen Postfach hochzuladen (über DSL).