Migration von Confixx nach Plesk - Part II
Nachdem wir im ersten Schritt die FTP-Daten, Kunden und Datenbanken übernommen haben, geht es in diesem Teil um die E-Mails. Dazu ist jedoch leider etwas Handarbeit nötig, da ich keinen praktikablen Weg gefunden habe, wie man die Adressen automatisch übernehmen kann.
-
E-Mail-Adressen anlegen
Dazu rufen wir die Kunden im Plesk auf und gehen direkt zum Control Panel. In diesem Panel können wir nun alle E-Mail-Adressen anlegen mit den entsprechenden Benutzern und Passwort. Dabei wäre es sinnvoll, wenn man die vohandenen Benutzerdaten aus dem Confixx-System nutzt, damit man so wenig wie möglich im E-Mail-Programm ändern muss. Im gleichen Schritt erstellt man sich eine CSV-Datei (z.B. email_list.csv), die wie folgt aufgebaut ist:
user001_1;password001_1;user001_2;password001_2; user002_1;password002_1;user002_2;password002_2;
user001_1: Benutzername um die E-Mails auf dem Confixx-Server abzurufen
password001_1: Das dazugehörige Passwort
user001_2: Der neue Benutzername zu der E-Mail-Adresse auf dem Plesk-Server
password001_2: Das dazugehörige PasswortAchtung: Die letzte Zeile in dieser Datei muss eine Leerzeile sein!
-
Vorbereitungen für den Transfer
Es gibt verschiedene Tools, die einem dabei helfen, E-Mails zu synchronisieren. Ich persönlich habe mich für imapsync entschieden. Dies hatte aber keine besonderen Gründe. Es schien mir einfach am populärsten und kam mir als erstes in die Finger. Außerdem ist es eines er wenigen Projekte die scheinbar noch gepflegt werden.
In vielen Linux-Distributionen befindet sich imapsync bereits im Repository, woraus es man einfach installieren kann. Unter Debian basierten System macht man es mit folgendem Befehl:
sudo apt-get install imapsync
Allerdings werden mehr Pakete benötigt, als aufgelöst werden. An erster Stelle steht dabei Perl. Ob es installiert ist, überprüft man mit folgendem Befehl:
perl -v
Drüber hinaus werden noch weiter Module benötigt. Wie man nun prüft, welche man noch installieren muss, würde den Rahmen des Artikels sprengen. Deshalb verweis ich an dieser Stelle auf die INSTALL. Interessant ist dabei der Punkt PREREQUISITES. In der INSTALL wird darüber hinaus auch beschrieben, wie man imapsync manuell aus den Sourcen installieren kann.
-
Synchronisieren der E-Mails
Nun können wir beginnen, die E-Mails zwischen den beiden Servern zu synchronisieren. Der Vorteil von imapsync ist, dass es nur die E-Mails synchronisiert, die noch nicht auf beiden Servern vorhanden sind. Dabei arbeitet es standardmäßig rekursiv und inkrementell. imapsync kann sowohl mit dem POP3 Protokoll als auch mit IMAP-Servern umgehen.
Die Syntax von imapsync um 2 Konten zu synchronisieren lautet im einfachsten Fall:
imapsync --host1 imap.source.tld --user1 foo --password1 secret1 \ --host2 imap.destination.tld --user2 bar --password2 secret2
In diesem Beispiel bekommt der Benutzer bar alle E-Mails von foo.
Nun ist diese Methode nicht unbedingt praktikabel, wenn man viele E-Mail-Accounts zu synchronisieren hat. Aus diesem Grund haben wir im 1. Schritt eine Datei mit den entsprechenden Daten erstellt. Jetzt fehlt nur noch ein kleines Skript, welches die Datei auch ausliest und die Konten automatisch mittels imapsync synchronisiert. In meinem Beispiel heißt dieses Skript "email_script" und hat folgenden Inhalt:
#!/bin/sh date=`date +%X_-_%x` logfile="sync_log.txt" echo "" >> $logfile echo "------------------------------------" >> $logfile echo "IMAPSync started.. $date" >> $logfile echo "" >> $logfile { while IFS=';' read u1 p1 u2 p2; do echo "Syncing User $u1" date=`date +%X_-_%x` echo "Start Syncing User $u1" echo "Starting $u1 $date" >> $logfile imapsync --user1 "$u1" --password1 "$p1" --user2 "$u2" --password2 "$p2" --host1 "imap.source.tld" --host2 "imap.destination.tld" --debug --debugimap --authmech1 "PLAIN" date=`date +%X_-_%x` echo "User $user done" echo "Finished $user $date" >> $logfile echo "" >> $logfile done ; } < email_list.csv date=`date +%X_-_%x` echo "" >> $logfile echo "IMAPSync Finished.. $date" >> $logfile echo "------------------------------------" >> $logfileGegebenenfalls muss man noch in der Zeile "done ; } < email_list.csv" den Namen der Datei ändern, aus deren die Daten gelesen werden sollen. Außerdem müssen noch im eigentlichen imapsync Befehl die Server eingetragen werden. Dabei bitte imap.source.tld mit dem Quell-Server (Confixx) und imap.destination.tld mit dem Ziel-Server (Plesk) ersetzen.
Wenn man alles angepasst und das Skript ausführbar gemacht hat
chmod 775 email_script
kann man es mit
sh email_script
starten. In sync_log.txt steht dann das Ergebnis der Migration.
-
Abschließende Hinweise
In meinem Beispielskript nutz ich weitere Optionen als für den einfachsten Fall benötigt werden. Kurz zur Erklärung:
--authmech1 "PLAIN"
Zur Authentifizierung am ersten Server schick ich das Passwort im Klartext. imapsync nutzt Standardmäßig CRAM-MD5 als Passwort-Verschlüsselung. Man kann aber versuchen, falls man das Passwort im Klartext schicken muss, die Verbindung selbst zu verschlüsseln. Dazu gibt es die Option --ssl1 respektive --tls1--debug --debugimap
Mit dieser Option wird imapsync im Debug-Modus ausgeführt.Es gibt noch unzählige weitere Optionen die man nutzen kann. Welche dies sind und was diese genau machen, findet man mit diesem Befehl heraus:
imapsync --help
Quellen:
Post new comment