Minimum for ~50 mailboxes: 2 vCPU, 6 GB RAM, 50 GB SSD. Bump to 4 vCPU / 8 GB / 80 GB for 200+.
OS: Debian 12 (bookworm) is the most-tested target. Ubuntu 22.04/24.04 LTS also works. Avoid CentOS Stream and RHEL derivatives — Docker support is messier and the official docs don't track them.
Filesystem: ext4 or xfs. ZFS works but the docs assume bind-mounted directories — skip overlays.
Swap: keep 2 GB; Rspamd and ClamAV occasionally spike.
Outbound port 25: verify the provider does not block it. Hetzner, OVH, Vultr (with request), and DigitalOcean (with request) all allow it. AWS EC2 and Google Cloud block 25 by default with no easy exception.
Sign in to keep track of what you have read.