legacy les fournit comme des couches de traduction au-dessus du même modèle de données JMAP : un changement de drapeau IMAP et un changement de mot-clé JMAP sont la même mutation, vue à travers deux protocoles. Il n’y a pas de second stockage de courrier qui pourrait dériver.
IMAP (RFC 9051)
La passerelle IMAP implémente IMAP4rev2 sur le port 993 (TLS implicite). Les points qui comptent pour un exploitant :- Les mêmes données, en direct. Un message déplacé dans le webmail apparaît déplacé dans chaque session IMAP ; les changements faits par une connexion sœur sont annoncés correctement : une boîte qui rétrécit est annoncée par des lignes
EXPUNGE(numérotation de l’ancienne vue, en ordre décroissant), jamais par un simpleEXISTSdécroissant, que la RFC 9051 interdit et que les clients multi-connexions comme eM Client punissent d’une resynchronisation complète du dossier. - Resynchronisation incrémentale.
CONDSTOREetQRESYNCsont pris en charge, y compris les réponsesVANISHED: un client qui se reconnecte récupère des deltas au lieu de relister le dossier. - Des UID durables. L’unicité des UID par boîte est imposée par la couche de stockage ;
UID EXPUNGErespecte son ensemble d’UID. - Une identification honnête. La commande
IDannonce le nom du serveur et sa vraie version, et journalise l’identité déclarée du client : quand un client précis se comporte mal, les journaux peuvent le nommer. - Mots de passe d’application. Les clients qui ne peuvent pas suivre le flux de connexion web s’authentifient avec des mots de passe d’application par client ; les échecs alimentent fail2ban comme sur tous les autres écouteurs.
CalDAV (RFC 4791) et CardDAV (RFC 6352)
Les agendas, les listes de tâches et les carnets d’adresses sont servis en HTTPS sur l’écouteur principal, sous les préfixes de chemin configurés. Les passerelles traduisent vers les mêmes objets JMAP que le webmail édite, et chaque mutation est inscrite au journal de changements : JMAP/changes, la sync-collection de la RFC 6578 et le push voient immédiatement une écriture DAV.
Comportements d’interopérabilité vérifiés contre de vrais clients (Apple Calendar, Thunderbird, eM Client 10.4) :
- Amorçage à la racine du serveur. Certains clients ne retiennent que le nom d’hôte de l’autodécouverte et sondent
OPTIONS/PROPFINDsur/. La racine annonce les classes de conformité DAV combinées et répond à unPROPFINDauthentifié aveccurrent-user-principal; chaque principal annonce aussi le home set de l’autre service, si bien qu’une seule passe de découverte trouve agendas, listes de tâches et carnets d’adresses. - Du XML sûr pour les parseurs stricts. Les contenus textuels qui embarquent du HTML ou un
&nu sont enveloppés en CDATA : une seule description d’événement décorée ne peut pas rendre tout un multiget illisible et tuer la synchronisation. - Des ETag en empreinte de contenu. L’ETag d’un VEVENT change exactement quand sa représentation change, y compris quand une exception de récurrence est ajoutée depuis un autre client : un
If-Matchpérimé échoue en412et le client se resynchronise au lieu d’écraser en silence le changement qu’il n’a jamais vu. Idem pour les VTODO. - Un filtrage côté serveur réel.
calendar-queryévaluetime-range(conscient des récurrences, sémantique de chevauchement),prop-filter,param-filterettext-match; une forme de filtre que le serveur ne modélise pas dégrade vers un résultat trop inclusif, jamais vers un résultat vide en silence.free-busy-queryrenvoie un vraiVFREEBUSY. - Des fuseaux qui font l’aller-retour.
DTSTART;TZID=est émis avec le composantVTIMEZONEcorrespondant (généré depuis la base IANA, 597 zones), les noms de fuseaux du registre Windows émis par Outlook/Exchange sont normalisés vers IANA sur chaque chemin d’ingestion, et les propriétés paramétrées à la façon d’Outlook (SUMMARY;LANGUAGE=fr-FR:...) s’analysent correctement. - Des collections créées par le client.
MKCALENDARà une URL choisie par le client fonctionne (Apple Calendar et Thunderbird créent leurs collections à une URL en UUID de leur choix). - Des alarmes modélisées. Les composants
VALARMdes VEVENT et des VTODO s’importent dans le modèle d’alertes et sont réémis au GET, y compris les déclencheurs absolus (VALUE=DATE-TIME). Les flux ICS publics ne portent volontairement aucun VALARM : un abonné ne doit pas hériter des rappels de l’éditeur.
Points d’accès d’autodécouverte
Quatre familles de points d’accès configurent les clients automatiquement (adossées aux enregistrements DNS de la page d’authentification) :Derrière un proxy inverse, faites passer tout vers OxiMail sauf le chemin de défi ACME : l’extrait généré par l’assistant fait exactement cela. Une liste blanche de routes, ou une interception des
OPTIONS/CORS au niveau du proxy, casse en silence la découverte et le DAV ; voir Premier démarrage.Ce que le mode legacy ne change pas
Les passerelles sont des chemins d’accès en lecture-écriture, pas un serveur parallèle : l’authentification, le chiffrement au repos, l’isolation par organisation, fail2ban et la limitation de débit sont la même mécanique que pour JMAP. Désactiver[legacy] retire les écouteurs et les préfixes de routes ; les données restent intactes.