Mailcow Server Migration

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.