Migrate your Mailcow instance to a new server with minimal downtime.
Category: Mailcow
Step 1 — Back Up the Source Server
cd /opt/mailcow-dockerized
sudo docker compose down
sudo tar -czf /tmp/mailcow-backup.tar.gz mailcow.conf docker-compose.yml data/assets/ssl data/conf data/index /var/lib/docker/volumes
Step 2 — Set Up the New Server
# On the new server — install Docker and clone Mailcow
cd /opt
sudo git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
sudo ./generate_config.sh
Step 3 — Transfer Data
# Copy backup to new server
scp /tmp/mailcow-backup.tar.gz user@new-server:/tmp/
# On new server — extract and overwrite
cd /opt/mailcow-dockerized
sudo tar -xzf /tmp/mailcow-backup.tar.gz --strip-components=2
Step 4 — Start Mailcow on New Server
sudo docker compose pull
sudo docker compose up -d
Step 5 — Cut Over DNS
Update your MX and A records to point to the new server IP. Use a low TTL (300s) before the migration so DNS propagates quickly. Keep the old server running for 24–48 hours to catch any stragglers.