Requirements
OxiMail is built and tested on Debian 13. The installer refuses to run on other distributions or Debian versions, because the build dependencies and library versions are pinned to that target.
The setup wizard measures the host again at its first step (distribution, systemd, memory, free space on the volume of
/var/lib/oximail, architecture) and shows the result as recommendations: less than 2 GiB of memory, less than 10 GiB free, or a distribution outside those it is tested on (Debian 12 and 13, Ubuntu 24.04) is a warning, never a refusal.
System dependencies
The build needs a C toolchain and a C compiler for the bundled SQLite; since ADR-148 neither OpenSSL nor SQLCipher is in the dependency graph:rustc is not already present, install it with rustup:
Ports
OxiMail listens on the standard mail and web ports. Open them in your firewall (and any cloud provider security group) before you start the server. The setup wizard checks these and warns you about anything blocked.
Ports 25, 443, and 587 are the minimum for a working mail server. The IMAP ports (143/993) only matter if you enable the
legacy feature for IMAP clients. CalDAV and CardDAV are served over the same HTTPS port (443) as JMAP, so they need no extra ports.
Getting the binary
There is no published prebuilt-binary download today: you build OxiMail from source. The build produces a single self-contained executable (around 70 MB) that you copy to the server.A public source repository and a one-line installer are part of the project roadmap, not something you can rely on yet. Build from source as described below. If you see a one-liner referenced elsewhere, treat it as not-yet-live and verify before depending on it.
Build from source
From a clone of the source tree on a Debian 13 host:
Build with
--features passkey,legacy if you want legacy mail clients (IMAP) and DAV clients to connect. The release build takes roughly 5 to 15 minutes depending on the machine, and the binary lands at target/release/oximail.
A clone also ships an install.sh at the repository root that runs the whole sequence (system packages, Rust, compile, install, then launch the setup wizard) in one go. It is convenient on a fresh VPS, but the manual steps below give you control over each stage.
Placing and running the binary
Install the binary and its directories
Copy the compiled binary into place and create the runtime directories. A dedicated system user keeps the service from running as root:setcap is missing, install libcap2-bin first.
Configuration file
OxiMail reads a single TOML config file. The conventional location is/etc/oximail/oximail.toml. The source tree ships a fully commented example at config/oximail.example.toml that you can copy as a starting point:
config/setup.example.toml, the reference of every key the wizard’s own setup file accepts (oximail setup --config-file), where the admin password, the Cloudflare token and the relay credentials are given by reference (a file or an environment variable), never inline.
Run as a systemd service
Install a systemd unit so OxiMail starts at boot and restarts on failure. Logs go to the journal (runjournalctl -u oximail), so there is no log file to rotate.
Create /etc/systemd/system/oximail.service:
unbound on 127.0.0.1 and believes a DNSSEC answer only once its own probe has proven that resolver. The wizard installs and configures it (host checks). On a hand install, install unbound with its root trust anchor, order oximail.service after unbound.service, and run oximail resolver check: the same probe, with the server stopped or not (exit 0 reliable, 1 unmeasured, 2 unreliable or mute). An unproven resolver does not stop the server from starting, but it believes no DNSSEC answer and holds the mail to DANE domains until the probe passes.
For interactive setup the first time, you can run oximail setup directly instead of starting the service. The wizard creates the config, your admin account, and your DKIM keys, then hands off to the service. On a capable terminal it takes the whole screen, and everything it prints is also kept in /var/log/oximail-setup.log; this is the setup’s own log, the server itself still logs to the journal only.
What’s next
- First boot and setup wizard — configure DNS, DKIM, TLS, and create your first account.
- Configuration — the full TOML reference and the runtime override model.