Passer au contenu principal
OxiMail est un binaire Rust unique. L’installer consiste à déposer un seul exécutable sur un serveur, à placer un fichier de configuration à côté, puis à le lancer comme service. Il n’y a ni Postfix, ni Dovecot, ni serveur web à installer en complément. Cette page explique comment poser OxiMail sur un hôte. Une fois le serveur lancé, l’assistant de premier démarrage vous guide pour le DNS, le DKIM, le TLS et la création de votre premier compte.

Prérequis

ÉlémentValeur
Système d’exploitationDebian 13 (Trixie)
Privilègesaccès root
RAM2 Go au minimum (la compilation depuis les sources a besoin de cette marge)
Disque10 Go ou plus d’espace libre
Réseauun nom de domaine et une adresse IP publique
OxiMail est compilé et testé sur Debian 13. L’installeur refuse de s’exécuter sur d’autres distributions ou d’autres versions de Debian, car les dépendances de compilation et les versions de bibliothèques sont fixées pour cette cible.
OxiMail ne peut pas être compilé sous Windows ni sous macOS. La compilation a besoin des bibliothèques de développement OpenSSL et SQLCipher, fournies par les paquets Debian ci-dessous. Compilez sur une machine Debian 13 (un VPS, un conteneur LXC ou une VM).

Dépendances système

La compilation a besoin d’une chaîne d’outils C, ainsi que des en-têtes de développement OpenSSL et SQLCipher :
apt install -y build-essential pkg-config libssl-dev libsqlcipher-dev clang curl git
Il vous faut aussi une chaîne d’outils Rust stable. Si rustc n’est pas déjà présent, installez-le avec rustup :
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
source "$HOME/.cargo/env"

Ports

OxiMail écoute sur les ports standards du courrier et du web. Ouvrez-les dans votre pare-feu (et dans le groupe de sécurité de votre hébergeur) avant de démarrer le serveur. L’assistant de configuration les vérifie et vous avertit si l’un d’eux est bloqué.
PortProtocoleUsage
25TCPSMTP entrant (réception du courrier)
80TCPHTTP, utilisé pour les défis de certificat ACME
443TCPHTTPS, qui sert JMAP et l’API d’administration
587TCPSoumission SMTP (envoi de courrier, authentifié)
465TCPSMTPS (soumission en TLS implicite)
993TCPIMAPS (clients de messagerie classiques)
143TCPIMAP avec STARTTLS (optionnel)
Les ports 25, 443 et 587 sont le minimum pour un serveur de courrier fonctionnel. Les ports IMAP (143 et 993) ne servent que si vous activez l’option legacy pour les clients IMAP. Le CalDAV et le CardDAV sont servis sur le même port HTTPS (443) que JMAP, ils n’ont donc besoin d’aucun port supplémentaire.

Obtenir le binaire

Il n’existe pas aujourd’hui de binaire précompilé à télécharger : vous compilez OxiMail depuis les sources. La compilation produit un seul exécutable autonome (environ 70 Mo) que vous copiez sur le serveur.
Un dépôt de sources public et un installeur en une ligne font partie de la feuille de route du projet, mais ne sont pas encore disponibles. Compilez depuis les sources comme décrit ci-dessous. Si vous voyez une commande en une ligne mentionnée ailleurs, considérez-la comme non encore active et vérifiez-la avant d’en dépendre.

Compiler depuis les sources

Depuis un clone de l’arborescence des sources, sur un hôte Debian 13 :
cargo build --release --features passkey,legacy
Les deux options de fonctionnalité sont :
OptionEffetPar défaut
passkeyAuthentification sans mot de passe WebAuthn / FIDO2activée
legacyPrise en charge des protocoles IMAP, CalDAV et CardDAVdésactivée
Compilez avec --features passkey,legacy si vous voulez que les clients de messagerie classiques (IMAP) et les clients DAV puissent se connecter. La compilation en mode release prend de 5 à 15 minutes selon la machine, et le binaire apparaît dans target/release/oximail. Un clone fournit aussi un fichier install.sh à la racine du dépôt, qui exécute toute la séquence (paquets système, Rust, compilation, installation, puis lancement de l’assistant) d’un seul coup. C’est pratique sur un VPS neuf, mais les étapes manuelles ci-dessous vous donnent le contrôle de chaque phase.

Placer et lancer le binaire

Installer le binaire et ses répertoires

Copiez le binaire compilé à sa place et créez les répertoires d’exécution. Un utilisateur système dédié évite de faire tourner le service en tant que root :
# utilisateur système (sans shell de connexion)
useradd --system --shell /sbin/nologin --home-dir /var/lib/oximail oximail

# répertoires d'exécution
mkdir -p /etc/oximail/dkim
mkdir -p /var/lib/oximail/blobs
mkdir -p /var/lib/oximail/search
chown -R oximail:oximail /var/lib/oximail /etc/oximail
chmod 700 /etc/oximail/dkim

# le binaire
cp target/release/oximail /usr/local/bin/oximail
chmod 755 /usr/local/bin/oximail
OxiMail se lie à des ports privilégiés (25, 443, 587) tout en tournant sous un utilisateur non root. Accordez donc au binaire la capacité de se lier aux ports bas, plutôt que de le lancer en tant que root :
setcap 'cap_net_bind_service=+ep' /usr/local/bin/oximail
Si setcap est absent, installez d’abord le paquet libcap2-bin.

Fichier de configuration

OxiMail lit un seul fichier de configuration TOML. L’emplacement habituel est /etc/oximail/oximail.toml. L’arborescence des sources fournit un exemple entièrement commenté dans config/oximail.example.toml, que vous pouvez copier comme point de départ :
cp config/oximail.example.toml /etc/oximail/oximail.toml
chown oximail:oximail /etc/oximail/oximail.toml
chmod 600 /etc/oximail/oximail.toml
Une configuration de production minimale définit le nom d’hôte, les adresses d’écoute, les chemins de stockage et ACME pour le TLS :
[server]
hostname = "mail.example.com"
bind = "0.0.0.0:443"

[storage]
sqlite_path = "/var/lib/oximail/data.db"
blob_path = "/var/lib/oximail/blobs"

[smtp]
hostname = "mail.example.com"
bind = "0.0.0.0:25"

[tls]
acme_enabled = true
acme_email = "admin@example.com"
La référence complète, avec chaque clé et le modèle de surcharge TOML plus base de données, se trouve dans Configuration. Dans la plupart des cas, vous laissez l’assistant de configuration générer le fichier plutôt que de l’écrire à la main.

Lancer comme service systemd

Installez une unité systemd pour qu’OxiMail démarre au boot et redémarre en cas d’échec. Les journaux vont dans le journal système (lancez journalctl -u oximail), il n’y a donc pas de fichier de log à faire tourner. Créez /etc/systemd/system/oximail.service :
[Unit]
Description=OxiMail JMAP Mail Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/oximail serve --config /etc/oximail/oximail.toml
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
WorkingDirectory=/var/lib/oximail
StandardOutput=journal
StandardError=journal
SyslogIdentifier=oximail

[Install]
WantedBy=multi-user.target
Puis activez-le et démarrez-le :
systemctl daemon-reload
systemctl enable --now oximail
journalctl -u oximail -f
Pour la configuration interactive la première fois, vous pouvez lancer directement oximail setup au lieu de démarrer le service. L’assistant crée le fichier de configuration, votre compte administrateur et vos clés DKIM, puis passe la main au service.

Et ensuite