Module 7 · Lesson 16 of 26

Restore drills and PITR

Part of Mailcow: Self-Hosted Mail Server Mastery — Backups, Snapshots & Disaster Recovery.

Backup ≠ restore. Test the restore path before an incident.

Quarterly drill:

  1. Spin up a fresh VPS with the same hostname (or use /etc/hosts overrides on a workstation).
  2. Install Mailcow as if new.
  3. Run ./helper-scripts/backup_and_restore.sh restore and point at your snapshot.
  4. Log in, verify mailboxes mount, send a test message in and out.

Point-in-time recovery options:

  • ZFS / BTRFS snapshots at the host level — atomic, hourly, near-zero cost.
  • MariaDB binlogs — set MYSQL_BINLOG=y in mailcow.conf to replay individual transactions.
  • S3 versioning on rclone-pushed backups — ransomware insurance.

RTO/RPO targets:

Setup RPO RTO
Daily rclone push 24 h 1–2 h
Hourly ZFS + nightly off-host 1 h 30 min
Synchronous DRBD/replicated vmail Seconds 5 min

For most small teams, daily off-host with quarterly drills is plenty.

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