Windows: hMailServer auf neuen Computer migrieren

Nachfolgend wird beschrieben, wie man eine hMailServer-Installation mit MySQL-Datenbank auf einen neuen Computer migriert.

Im konkreten Fall ging es darum, eine hMailServer 5.4-Installation von einem Microsoft Windows XP Professional (32-bit) auf einen Microsoft Windows Server 2012 R2 Standard umzuziehen. Dabei änderte sich auch der Pfad der Installation.

Ein wenig Historie

Bis Version 5.3 verwendete der hMailServer absolute Pfade, daher war es gar nicht oder nur mit Aufwand möglich, den Datenbestand an einen anderen Ort umzuziehen. Von daher verliefen Migrationen in der Art, das immer die gleichen Pfade verwendet werden mussten. Per Standard war dies „C:\Programme\hMailServer“.

MySQL auf dem Zielcomputer installieren und hMailServer vorbereiten

  • Den MySQL Installer 5.6 for Windows herunterladen und ausführen. Es sollte die gleiche MySQL-Version wie auf dem Quellcomputer verwendet werden. Ist das nicht möglich, so kann man während der Migration die Datei „libmysql.dll“ entsprechend aktualisieren (siehe weiter unten).
  • Nach dem Start der Installation „Install MySQL Products“ auswählen und dem Lizenzvertrag zustimmen.
  • Hat man gerade erst die neuste Version heruntergeladen, kann man die Überprüfung auf eine neuere Version überspringen.
  • Im Abschnitt „Server type“ „Server only“ auswählen.
  • Im Abschnitt „Configuration“ bei „Config Type“ „Server Machine“ auswählen.
  • Ggf. den Haken bei „Open Firewall port for network access“ entfernen, sofern der MySQL-Server nicht noch für andere Anwendungen verwendet werden soll.
  • Nachdem ein root-Kennwort vergeben wurde ist die Installation und Erstkonfiguration beendet.
  • Nach erfolgter Installation öffnet man aus dem Startmenü den “MySQL Command Line Client” und gibt das Root-Kennwort ein.
  • Mit folgenden Befehlen wird ein Benutzer für den hMailServer angelegt:
create user hmailserver@localhost identified by "PASSWORT";
grant all privileges on hmailserver.* to hmailserver@localhost;
flush privileges;
exit;

Idealerweise verwendet man die gleichen Anmeldedaten für die Datenbank wie auf dem Quellcomputer. Andernfalls sind weitere Nacharbeiten notwendig.

  • Bei einem Windows Server 2012 (R2) muss zunächst das Feature „.NET Framework 3.5-Funktionen“ installiert werden.
  • Die gleiche Version des hMailServers wie auf dem Quellcomputer herunterladen und installieren.
  • Bevor der hMailServer auf MySQL zugreifen kann, muss zunächst die Datei “libmysql.dll” in der 32-bit Version (z.B. aus dem 32-bit Archiv von MySQL) in den Ordner “C:\Program Files (x86)\hMailServer\Bin” kopiert werden.
  • Die Installation in Verbindung mit MySQL abschließen.

Tipp: Zur Sicherheit den hMailServer-Ordner der frischen Installation kopieren, falls man wieder erwartend etwas benötigen sollte.

Daten migrieren

  • Auf dem Quell- und dem Zielcomputer den Dienst „hMaiServer“ beenden.
  • Eine Datensicherung der MySQL-Datenbank erstellen.
  • Die MySQL-Sicherung auf dem Zielcomputer wiederherstellen.
  • Den Ordner „C:\Programme\hMailServer“ vom Quell- auf den Zielcomputer kopieren.
  • Die Datei „hMailServer.INI“ aus dem „Bin“-Ordner des hMailServers editieren und die Pfade anpassen. Hat man die gleichen Daten wie auf dem Quellserver verwendet, so kann man die neu erstellet „hMailServer.INI“ verwenden (einfach überschreiben).
  • Den Dienst „hMailServer“ auf dem Zielcomputer starten.

Ggf. müssen weitere Anpassungen an der hMailServer-Konfiguration vorgenommen werden.

Troubleshooting

Am Besten man prüft vor der Migration, ob die Datenbank bereits relative statt absolute Pfade verwendet. In der Tabelle „hm_messages“ darf in der Spalte „messagefilename“ kein Pfad enthalten sein! Sind dennoch, zumindest teilweise, absolute Pfade enthalten, so kann man mit Hilfe des folgenden SQL-Befehls Diese entfernen:

UPDATE hm_messages SET messagefilename=REPLACE(messagefilename, messagefilename, right(messagefilename,42));

5 Kommentare

  • ich stehe gerade vor genau dieser Aufgabe mit dem kleinen Unterschied, dass der Zielcomputer ein Windows7 ist.
    zwei kleine Probleme habe ich schon jetzt, während der Vorbereitung:
    a) wie bekomme ich denn raus welche MySQL-Version auf dem Quell-Computer läuft? Ich habe jetzt erstmal die neueste Version installiert.
    b) „die gleichen Anmeldedaten für die Datenbank wie auf dem Quellcomputer“ sind auch schwierig, weil ich die nicht mehr kenne (braucht man ja nie)
    Oder kann es gar sein, dass ich auf dem XP-Rechner noch die interne Datenbank (war das nicht auch MySQL ?) verwende. Den Rechner habe ich vor X Jahren mal aufgesetzt und nur die hMail-Software vielleicht zwei mal aktualisiert – da läuft momentan die 5.4B1950

  • Hallo Steffen,

    es scheint, als gäbe es eine Menge Unklarheiten. Zu allererst vollständige Datensicherung des gesamten Systems erstellen!
    So ganz, so fürchte ich, kann ich nicht helfen, da wir fast immer HMS mit MySQL eingesetzt haben.
    HMS nutzt schon relativ lange MS SQL statt MySQL als Standard, sofern man beim Setup nichts anderes angibt.
    Was nun konkret verwendet wird, kann man versuchen mit folgenden Schritten einzugrenzen:

    Im HMS Administrator kann man unter „Status“ bei „Database information“ sehen, welcher Datenbankserver verwendet wird.
    Parallel dazu kann man einen Blick in die Datei „C:ProgrammehMailServerBinhMailServer.INI“ werfen, dort sind die Angaben zur Datenbankverbindung hinterlegt. Kennwörter in dieser Datei sind verschlüsselt.

    Welche MySQL-Server-Version man verwendet kann man z.B. unter „Systemsteuerung – Software“ auslesen, sofern das Programm entsprechend installiert wurde.
    Über einen MySQL-Client kann man die Version ebenfalls auslesen. Je nach Variante ist dafür eine Anmeldung am DB-Server notwendig. Ohne Anmeldung (zumindest bei uns) funktioniert der Aufruf von „mysql.exe -V“ aus dem Ordner, in dem MySQL-Installiert ist („C:Program FilesMySQLMySQL Server 5.6bin“ o.ä.).

    Der erste Anlaufpunkt für das Zurücksetzen des MySQL-root-Kennwort wäre diese Anleitung.

  • also wie es aussieht habe ich vor Jahren mit einer alten hmail-Version angefangen, die intern MySQL genutzt hat. Das hat sich wahrscheinlich auch über die Updates erhalten.
    Das vermute ich, weil es im hmail-Verzeichnis einen Ordner MySQL gibt, darin u.a. der Ordner data, der die hmailsever Datenbank enthält.
    Schlecht ist nur, dass ich nun gar keine Ahnung habe wie ich die Daten von dieser internen MySQL-Datenbank auf die neue MySQL5.6 bekomme.
    Ich habe jetzt einfach mal auf gut Glück das gesamte hmail-Verzeichnis (19GB) auf den neuen Computer kopiert (dort das bei der Installation angelegte ersetzt) – funktioniert natürlich nicht 🙁
    Ende meines Lateins.

  • Das ist klar, dass das nicht geht, da wie bereits erwähnt mittlerweile MS SQL mitgeliefert und verwendet wird.

    Vielleicht wäre es ein Versuch, die integrierte Backup-Funktion zu nutzen und diese Sicherung dann auf dem neuen Server einzuspielen.

    Ein Detail das zu beachten ist, ist die Größe der Datenbank, da der integrierte MS SQL nur für 4 GB ausgelegt ist!

    Was man ebenfalls versuchen kann, habe ich bislang aber noch nie getestet oder machen müssen, von daher keine Ahnung ob das so machbar ist:

    – Die Datenbank auf dem alten Computer sichern (Dienste beenden+Daten kopieren).
    – Die Datenbank auf dem neuen Computer in einen externen MySQL importieren, zurücksichern, o.ä.

    Die Chancen ordentlich über mysqldumpsql buddy, myphpadmin, etc. arbeiten zu können, stehen nicht schlecht, da es wohl die Möglichkeit gibt, das DB-Passwort auf der hMailServer.ini zu entschlüsseln:

    https://www.hmailserver.com/forum/viewtopic.php?t=8968

    Was ggf. je nach verwendeten Pfaden notwendig ist, nach erfolgter DB- und Data-Migration den Data directory synchronizer mal durchlaufen zu lassen.

    Eine generelle Änderung von MS SQL auf MySQL hatte ich schon mal durchgeführt, allerdings war das auf einer Kiste und mit der integrierten Backup-Funktion.

    Oder mit dem Anliegen mal im HMS-Forum melden bzw. zunähst dort suchen. Auf die schnelle habe ich da gerade nichts gefunden, muss aber nichts heißen.

    Lange Rede kurzer Sinn:

    Ich würde es mal mit der integrierten Backup/Restore-Funktion angehen. Wenn das nicht klappt, dann das DB-Kennwort entschlüsseln und eine ordentliche Sicherung der MySQL-DB durchführen, den Data-Ordner auf den neuen Computer kopieren, einen MySQL installieren, die DB-Sicherung zurückspielen und dann erst HMS installieren.

    Summa summarum ist das keine triviale Sache, wenn man ein wenig Erfahrung mit solchen Dingen hat, ist das durchaus hilfreich.

  • Also, ich hab mir die Nacht noch um die Ohren geschlagen und wahrscheinlich habe ich mehr Glück als Verstand:
    Das eingebaute Backup von hmail funktioniert ja nur bis 1,5GB, also habe ich mal nur die Konten und Einstellungen gesichert und auf dem neuen Server wieder hergestellt: Funktionierte. Alle Konten und Einstellungen sind vorhanden und hmail würde wohl drauflosarbeiten. Aber ich wollte ja auch meine alten email-Bestände zur Verfügung haben…
    hmail legt beim Restore des Backups die Datenbank im neuen MySQL-Verzeichnis an. Logisch – bei der Installation habe ich ja festgelegt, dass er mit MySQL arbeiten soll.
    Mein altes hmail hatte die MySQL-Datenbank im Unterordner unter dem hmail-Programmverzeichnis.
    Also habe ich nun einfach, die im alten Verzeichnis liegende Datenbank an die Stelle der neuen MySQL-Installation kopiert. und siehe da: alle Konten, alle Einstellungen und alle emails sind wieder vorhanden und es scheint zu laufen. Neue emails werden von den externen Konten abgeholt, Thunderbird auf dem Notebook und auf dem PC merkt nicht, dass er seine mails nun von einem anderen Rechner holt.
    Es scheint alles gut zu sein, aber ich habe den alten XP-Rechner noch nicht platt gemacht (passiert eh alles in VM’s auf ESXi).
    Zur Info: ich habe die interne Datenbank von hmail genutzt, allerdings war das auch eine MySQL-Version und nicht die MS SQL! Diese interne MySQL-Version war wahrscheinlich auch nicht auf 4GB beschränkt, denn mein gesamtes hmail-Verzeichnis war (und ist) 19GB groß.

Schreibe einen Kommentar

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