MailCow auf einen anderen Host umziehen

Dieses Tutorial richtet sich an User, welchen eine Mailcow-Installation (Quelle) auf einen neuen und leeren Server (Ziel) umziehen möchten. Alle Daten und Docker Images, welche auf dem Zielserver in /var/lib/docker/volumes liegen, werden gelöscht! Die Funktion des BACKUP_AND_RESTORE.sh Scripts wird in diesem Tutorial nicht verwendet. Legen Sie vor Beginn des unten beschriebenen Vorgehens ein Backup Ihrer Daten an!


Installation von Docker auf dem Zielserver:

Zunächst muss auf dem Zielserver Docker und Doker-Compose installiert werden.

Docker installieren:

user@ziel.voiceoverit.de:~# curl -sSL https://get.docker.com/ | CHANNEL=stable sh

user@ziel.voiceoverit.de:~# systemctl enable docker.service

Stellen Sie nach der Installation sicher, dass Docker gestartet ist:

user@ziel.voiceoverit.de:~# systemctl start docker.service

Docker-Compose installieren:

user@ziel.voiceoverit.de:~#  curl -L https://github.com/docker/compose/releases/download/$(curl -Ls https://www.servercow.de/docker-compose/latest.php)/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose 

user@ziel.voiceoverit.de:~# chmod +x /usr/local/bin/docker-compose

Beenden Sie den Dienst Docker und stellen Sie sicher, dass er wirklich deaktiviert ist:

user@ziel.voiceoverit.de:~# systemctl disable docker.service 
user@ziel.voiceoverit.de:~# systemctl status docker.service

Daten transferieren:

Sie kommen nun zum dem Teil, wo es zu Datenverlust kommen kann. Die folgenden Befehle löschen jegliche Inhalte, welche bereits auf dem Zielserver unter /var/lib/docker/volumes liegen.
Sind Sie sich diesem bewusst, können Sie auf dem Quellserver folgende Befehle nacheinander ausführen. Benutzername und Hostname des neuen Servers müssen noch entsprechend angepasst werden.
Der Kopiervorgang kann je nach Umfang an Postfächern und belegtem Speicher einige Zeit in Anspruch nehmen.
Sollte „rsync“ noch nicht installiert sein, installieren Sie es zuvor mit „apt-get install rsync“

user@origin.voiceoverit.de:~# rsync -aHhP --numeric-ids --delete /opt/mailcow-dockerized/ benutzer@zielserver.de:/opt/mailcow-dockerized
user@origin.voiceoverit.de:~# rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ benutzer@zielserver.de:/var/lib/docker/volumes

Beenden Sie nach dem erfolgreichen Kopiervorgang Docker auf dem Quellserver.

user@origin.voiceoverit.de:~# cd /opt/mailcow-dockerized

user@origin.voiceoverit.de:~# docker-compose down

user@origin.voiceoverit.de:~# systemctl stop docker.service

Führen Sie die folgenden Commands erneut aus – Der Kopiervorgang sollte nun nicht mehr so lange dauern:

user@origin.voiceoverit.de:~# rsync -aHhP --numeric-ids --delete /opt/mailcow-dockerized/ benutzer@zielserver.de:/opt/mailcow-dockerized
user@origin.voiceoverit.de:~# rsync -aHhP --numeric-ids --delete /var/lib/docker/volumes/ benutzer@zielserver.de:/var/lib/docker/volumes

Mailcow auf dem neuen Host starten:

Wechseln Sie zurück auf den Zielserver, starten Sie Docker, laden Sie die Mailcow-Images herunter, und starte sie Mailcow:

user@ziel.voiceoverit.de:~# systemctl start docker.service
user@ziel.voiceoverit.de:~# cd /opt/mailcow-dockerized
user@ziel.voiceoverit.de:~# docker-compose pull
user@ziel.voiceoverit.de:~# docker-compose up -d 

Änderen Sie nun die DNS-Einstellungen bei Ihrem Domainanbieter, um auf den neuen Mailserver zu verweisen.

Um den Verlust von Mails durch ein Zustellen an den alten Mailserver zu verhindern, können Sie den alten Mailserver vorübergehend als Relayhost konfigurieren. Er sollte eingehende Mails dann an dem im DNS eingetragenen Server weiterleiten. Überprüfen Sie auch die Queue im Administrationspanel.


Vielen Dank an die Community rund um Mailcow! Weitere Informationen zu Mailcow findet Ihr unter mailcow.email bzw. https://github.com/mailcow/mailcow-dockerized.
Weiterführende Informationen zur Installation und Wartung gibt es in der englischen Dokumentation: https://mailcow.github.io/mailcow-dockerized-docs