25
Nov
2011
admin

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.

  1. 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 Passwort

    Achtung: Die letzte Zeile in dieser Datei muss eine Leerzeile sein!
     

  2. 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.

  3. 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 "------------------------------------" >> $logfile 

    Gegebenenfalls 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.

  4. 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

Plain text

  • Keine HTML-Tags erlaubt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.