Passer au contenu principal
OxiMail est un serveur de messagerie et de collaboration écrit en Rust. C’est un binaire unique. Il parle JMAP comme protocole principal, ainsi que SMTP, IMAP, CalDAV, CardDAV et ManageSieve. Un seul serveur, un seul fichier de configuration et un seul processus vous donnent le courrier, l’agenda, les contacts, les tâches, le stockage de fichiers et la messagerie instantanée. Tout repose sur le même moteur de stockage. OxiMail est publié sous licence AGPL-3.0-or-later. Ce manuel documente le serveur open source : ses protocoles, son administration et son API JMAP.

Ce qui distingue OxiMail

OxiMail repose sur quelques principes fermes, posés dès la conception. Ce sont des choix techniques, pas des arguments commerciaux.

Conçu autour de JMAP

JMAP (RFC 8620 et RFC 8621) est le successeur moderne d’IMAP. C’est un protocole unique en HTTPS et JSON, avec des requêtes groupées, un suivi efficace des changements et la notification immédiate (push). OxiMail traite JMAP comme son protocole natif. Il expose ainsi le courrier, l’agenda, les contacts, les tâches, les fichiers, le partage et la messagerie instantanée. Les protocoles classiques (IMAP, CalDAV, CardDAV, ManageSieve) sont traduits vers le même stockage géré par JMAP. Vos clients actuels continuent donc de fonctionner.

Aucune erreur silencieuse

OxiMail n’échoue jamais en silence. Un identifiant d’objet invalide renvoie une entrée notFound. Il ne renvoie jamais un tableau vide qui masquerait l’erreur. Un courriel accepté est toujours remis quelque part, ou rejeté de façon explicite. Il n’est jamais perdu en silence. Les erreurs sont remontées, journalisées et renvoyées à l’appelant. C’est la règle la plus importante du projet.

Aucun service annexe

Une pile de messagerie classique réunit de nombreux services : Postfix, Dovecot, nginx, un fail2ban externe, ClamAV, un démon antispam. OxiMail réunit chacun de ces rôles dans le même binaire, sous la forme d’une crate Rust. Il n’y a aucun démon externe à installer, à sécuriser ou à maintenir en cohérence. Le serveur SMTP, les passerelles IMAP, CalDAV et CardDAV, le limiteur de débit, la logique de bannissement et la chaîne antispam vivent tous dans le même processus.

Ouvert et auditable

OxiMail est publié sous licence AGPL-3.0-or-later et bâti sur des standards ouverts (des RFC et des brouillons publics de l’IETF). Le code est inspectable par tous, et il n’y a aucun verrouillage propriétaire. Vos données restent dans des formats documentés et circulent sur des protocoles documentés.

Qui administre OxiMail

OxiMail s’adresse aux opérateurs qui veulent garder la maîtrise de leurs données de messagerie et de collaboration : auto-hébergeurs, institutions et opérateurs régionaux. L’opérateur administre le serveur sur sa propre infrastructure et conserve ses propres clés. Aucun tiers ne s’interpose entre l’opérateur et les données.

Ce que couvre ce manuel

Ce manuel est celui du serveur OxiMail. Il documente les protocoles que parle le serveur, la manière de l’administrer et l’API JMAP sur laquelle vous pouvez bâtir vos propres applications.
Le workspace d’OxiMail (le client web) est un produit distinct. Il est hors du périmètre de ce manuel. Ce manuel s’arrête au serveur : ses protocoles, son administration et son API. Comme l’API est ouverte, chacun peut écrire un client à partir des méthodes JMAP documentées.
Le manuel est organisé en trois parcours :

Guide d'administration

L’administrer. Installation, courrier et SMTP, stockage, authentification et sécurité, antispam, collaboration, chiffrement au repos, multi-tenant, TLS, migration et exploitation au quotidien.

Développeur / API JMAP

Bâtir dessus. Le modèle de session et de dispatch de JMAP Core, les méthodes pour le courrier, l’agenda, les contacts, les tâches, les fichiers, le partage et la messagerie instantanée, ainsi que l’API REST d’administration.

Référence d'architecture

Le comprendre. La structure du binaire crate par crate, les chemins des requêtes et le modèle de stockage.

Une précision sur l’exactitude

Ce manuel décrit ce que le serveur fait réellement aujourd’hui, sur la version actuelle v0.30.0. Il ne présente pas comme livré ce qui est seulement prévu ou expérimental. Tout ce qui est conçu mais pas encore implémenté est signalé clairement comme prévu. Si une page indique qu’une fonctionnalité existe, c’est que le serveur la fournit.