Module 8 · Lesson 18 of 26

Migrating Mailcow to a new server

Part of Mailcow: Self-Hosted Mail Server Mastery — Upgrades, Migrations & Version Pinning.

Same-IP migration (simplest):

  1. Backup on old: backup_and_restore.sh backup all → push to S3.
  2. Provision new host, install Docker + clone Mailcow.
  3. Copy mailcow.conf over.
  4. Pull the same Mailcow git tag.
  5. Restore from snapshot.
  6. Move the IP (or update DNS).

IP-change migration:

  • Schedule a maintenance window during low traffic.
  • Update DNS A and MX TTLs to 300 s 48 hours before the move.
  • Cut over DNS, then PTR on the new IP, then start the new Mailcow.
  • Expect 1–4 h of soft mail delays as senders retry against the old IP.

Don't mix git tags. Restoring a snapshot taken on version 2025.06 into a 2026.01 install will fail Bayes/DB migrations. Always restore into the same tag, then run update.sh.

Sign in to keep track of what you have read.

Pulse · self-hosted sending

Own the infrastructure your pipeline depends on.

One install script on your own server. Pulse sets up the MTA, mailboxes, certificates and dashboard; you add domains and start sending.

# on a fresh Ubuntu server
$ cd pulse && sudo ./install.sh
→ docker compose up · kumomta · stalwart · caddy
→ dashboard ready on https://pulse.yourdomain.com
$

Also from us:Beat — monitoring that tells you the fixConsulting — $65/hr, no retainer