A from-scratch pure-Rust email server for tiny machines — TLS via rustls, one binary.
Choose your machine — the installer never auto-detects. Prebuilt binaries download from this site; pick Build from source if yours is not listed.
curl -fsSL https://YOUR-SITE/install-linux-x86_64.sh | sh
Install Termux from F-Droid, run pkg install curl openssl, no root needed on high ports.
Downloads a prebuilt static binary from this site — no local compile, no toolchain.
The binary is fully static (musl on Linux) with no libc or library requirements, uses plain threads instead of an async runtime, and idles at a few MB of RSS. If it has a CPU from this century and a network jack, it probably works:
| Hardware | Arch / binary | Notes |
|---|---|---|
| Raspberry Pi Zero / Pi 1 | armv6 musl | 512 MB RAM is plenty; dedicated ARMv6 build — no illegal-instruction crashes |
| Pi 2/3/4/5, ARM SBCs | armv7 / aarch64 musl | The classic always-on home server |
| 128 MB VPS (cheapest tier) | x86_64 musl | Gets you a public IP + unblocked port 25 |
| Old netbooks / thin clients | x86_64 musl | Second life as a mail machine |
| Mac (Intel & Apple Silicon) | darwin | Great for trying it locally first |
| Android phone/tablet (Termux) | arm64 musl | An old phone makes a fine mail server |
| Windows 10/11 | x86_64 .exe | Native MSVC build; PowerShell one-liner installer |
Everything on board: SMTP (receive + submit) · IMAP · webmail + admin UI · DKIM signing · outbound MTA with retry queue · TLS/STARTTLS.
/bin/desertemail-<target>) and verifies SHA-256 against /bin/SHA256SUMS — mismatch aborts; missing sums file warns and continues~/.desertemail/bin and wires up your PATH (override with DESERTEMAIL_PREFIX)config.toml and — on Linux with systemd — optionally installs and starts a service unitThe wizard is plain POSIX sh (runs on dash/BusyBox); Windows uses a PowerShell variant (irm … | iex). Piped installs stay interactive via /dev/tty; for CI use DESERTEMAIL_NONINTERACTIVE=1 with env-var answers. Re-running never clobbers an existing config without asking. Unsupported machines use Build from source (needs git + cargo).
“We can’t expect God to do all the work.”
— Joshua Graham