Ligne actuelle : v0.30 (2026)
Mi-août- Meet, première forme qui fonctionne : les appels en temps réel gagnent une surface serveur, à savoir une session ancrée sur un salon de discussion, dont la création atteint tous les membres du salon pour qu’un appelé apprenne l’appel sans type de notification dédié, plus un relais transitoire pour la poignée de main WebRTC, jamais persistée ni journalisée. La phase 1 est en pair-à-pair jusqu’à trois participants actifs, et l’adhésion est un bail de présence à expiration automatique plutôt qu’un drapeau (Meet).
Email/getgagne son arbre :bodyStructureest émis et récursif,fetchAllBodyValuesatteint enfin toutes les feuillestext/*(la partietext/calendard’une invitation comprise), et les pièces jointes portentpartId,charsetetdisposition. Les en-têtes par partie sont servis sousbodyProperties, seul chemin conforme vers les paramètres de Content-Type qui distinguent une invitation d’un.icsjoint. Changement de contrat : sans argumentfetch*BodyValues,bodyValuesrevient désormais vide comme l’exige la RFC 8621 §4.2, alors qu’il était rempli inconditionnellement (l’arbre du corps).- Chaque
/getferme son vocabulaire, et le canon est publié : un nom de propriété inconnu devient uninvalidArgumentsqui nomme les fautifs au lieu d’un mot ignoré en silence, et ce qui est sélectionnable, comme ce qui est calculé par appelant, est désormais émis en forme machine à côté des types générés (le canon de projection). - Les boîtes partagées se lisent et s’écrivent correctement : la clé de déchiffrement suit le compte effectif et non l’appelant, si bien que les corps d’une boîte partagée s’ouvrent ; et un message classé par un bénéficiaire est chiffré pour le propriétaire, ce qui referme le miroir du même défaut (chiffrement au repos).
Thread/getetThread/changesreviennent aux clients RFC 8621 purs, servis sous la capacitémaillà où le §3 les place ; un client ne déclarant quecore+mails’entendait répondreunknownCapabilitysur une méthode obligatoire (courrier).- Les annuaires de contacts de tenant : une organisation peut publier des jeux de contacts partagés qui atteignent les membres en fiches lisibles seulement dans leur propre carnet, avec des entrées tenues par des principaux et des groupes nommés (contacts, ADR-133).
- L’échange de clés post-quantique est réellement négocié : X25519MLKEM768 est proposé en tête, avec le X25519 classique en repli, sur 25, 465, 587, 993 et 443. La fonctionnalité était compilée depuis des mois alors que le fournisseur installé ne pouvait pas l’implémenter : chaque session retombait en silence (TLS & ACME).
- Deux ans de chiffrement amont rattrapés : SQLCipher passe de 4.5.7 à 4.14.0 et SQLite de 3.45.3 à 3.51.3, vérifiés en exécutant
PRAGMA cipher_versionplutôt qu’en lisant un manifeste, car les correctifs du moteur n’atteignent une base chiffrée que par une publication SQLCipher. Le binaire livré est désormais contrôlé au déploiement pour ne dépendre d’aucune bibliothèque de cryptographie, TLS ou SQLite du système (chiffrement au repos). - Les journaux de poignée de main cessent de crier au loup : les quatre écouteurs TLS séparent un pair qui a raccroché avant de négocier d’un vrai échec de négociation, chaque branche portant un champ
reasonstable. Une instance de production émettait 480 avertissements inoffensifs par jour pour une seule sonde de supervision, et un vrai échec s’y serait caché (exploitation). dkim=faildit pourquoi : le motif d’échec atteint l’en-têteAuthentication-Resultset le résultat conservé par message, si bien qu’une analyse après coup sépare une signature invalide d’un corps modifié en transit, d’une clé absente, ou d’une signature datée dans le futur, ce qui signifie que l’horloge du serveur retarde (authentification du courrier).- Exploitation :
oximail sqlroute sur la forme du statement, si bien qu’unWITH ... SELECTretourne des lignes au lieu de rapporter « 0 rows affected » ;blobs gcne collecte plus un blob non référencé plus jeune qu’une fenêtre de grâce de 24 heures (RFC 8620 §6.1) ; les instantanés locaux de retour arrière ont gagné une politique de rétention que le déploiement applique ;doctorjuge la santé de l’horloge ; et des limites seulement annoncées sont devenues des limites qu’un mécanisme applique (CLI, exploitation). - Fuseaux horaires : le fuseau par défaut d’un tenant est lisible, hérité et surveillé, et un fuseau fourni au provisioning atteint désormais le principal. Un fuseau invalide est refusé avant la première écriture au lieu d’être accepté puis ignoré.
- La fédération, première forme qui fonctionne : la cérémonie d’appairage bilatérale hors bande (empreinte sur le realm et la clé, clé de nœud par organisation), une racine d’identité portable distincte de la clé de travail jetable qui vit sur la machine (la rotation vaut révocation, par époque monotone), et le modèle de grant inter-organisation : borné au realm, écrit par le propriétaire, à expiration automatique, et qui n’élargit que l’axe d’accès. Révoquer un appairage suspend l’accès au lieu de détruire l’enregistrement ; les notices d’effacement sont estampillées sur l’ancre d’identité et échouent fermé à la livraison (ADR-124 à ADR-127).
- Les accusés de lecture, sur les deux surfaces. Le courrier gagne la surface MDN de la RFC 9007 :
MDN/sendcompose un accusé comme geste explicite de l’utilisateur,MDN/parserend enfin lisibles les accusés entrants déjà rattachés à vos messages envoyés. Les accusés de lecture du chat atteignent désormais en direct chaque membre d’un groupe ou d’un canal, et non plus le seul pair d’une conversation directe, avec un interrupteur de visibilité par canal et un plafond de taille de salon sur la diffusion en direct (chat). - L’historique de versions du drive sur le fil :
FileVersion/query,getetrestore, avecmaxVersionsPerNodeannoncé et l’élagage piloté par la même constante (fichiers). - L’honnêteté de la synchronisation : un curseur
Foo/changesplus ancien que la fenêtre de rejeu de 90 jours est maintenant refusé aveccannotCalculateChanges, au lieu de s’entendre dire qu’il est à jour. C’est un seul point de passage au niveau du stockage dont tous les consommateurs héritent,sync-collectionde DAV compris./changesréduit aussi à une seule issue par identifiant, conformément à la RFC 8620 §5.2, et un lot/setvide ne saute plus sa vérification d’ifInState(JMAP Core). - Les identifiants de streaming : les flux SSE s’ouvrent avec un ticket éphémère de 60 secondes au lieu du token de session, pour qu’un identifiant valable 24 heures ne circule plus dans une URL que les proxies journalisent.
- Les formes de fil corrigées là où elles laissaient filtrer le stockage : les aperçus de liens du chat sont des objets typés et non plus un tableau d’octets bruts ; une partie
message/rfc822est annoncée comme la pièce jointe qu’elle est, au lieu de publier au premier niveau les pièces jointes du message encapsulé ; quatre internes de stockage de l’agenda ont quitté le fil. - IMAP :
FETCH RFC822,RFC822.HEADERetRFC822.TEXTne renvoyaient aucune charge utile, etRFC822marquait quand même le message\Seen. Les deux sont corrigés (protocoles historiques). - L’intégrité de la rétention et des sauvegardes : la sauvegarde par organisation n’omet plus en silence les blobs de pièces jointes ni les lignes des tables absentes d’une liste tenue à la main, et
verify-backuppeut voir la différence ; la corbeille vers laquelle balaient les messages qui expirent a enfin une politique de rétention derrière elle ; les blobs de parties de corps sont devenus le cache dérivé qu’ADR-098 décrivait depuis toujours, re-dérivé et vérifié par empreinte lors d’un échec de téléchargement (exploitation). - L’exploitabilité : onze tâches de ménage au démarrage ne se marchent plus dessus en
sqlite busyavec un tick perdu à chaque boot ;doctora cessé de présenter toute la file de remise comme en attente ; un verbespam checken lecture seule demande au filtre son opinion actuelle sur un message stocké ; les DSN et ARF entrants lèvent désormais des événements de rebond et de plainte sur le chemin d’ingestion. - Les portées des mots de passe d’application sont appliquées de bout en bout : la portée voyage avec le token et survit au renouvellement, une seule matrice de capacités décide, et l’accès aux protocoles se déduit de l’ensemble des capacités, appliqué au dispatch JMAP, à la connexion IMAP et à DAV (ADR-129).
- Anti-spam : le greylisting au moment du
RCPTa été retiré comme défense. Les botnets réessaient, les pools d’adresses des gros expéditeurs cassent le triplet, et le mécanisme taxait les expéditeurs légitimes de premier contact. L’exigence d’authentification et le pipeline scoré portent cette charge (ADR-128, anti-spam). - Installation : l’assistant a gagné un profil smarthost comme troisième entrée, consigné comme marqueur d’intention audité et non comme un rôle (premier démarrage).
- Domaines d’enveloppe : une plateforme qui envoie par le MSA peut utiliser un
MAIL FROMtechnique sur un domaine prouvé par DNS, formes VERP comprises, pendant que l’en-têteFrom:reste l’identité humaine. Le domaine accordé doit partager son domaine organisationnel avec une identité du compte : l’alignement SPF sous DMARC relaxed tient donc par construction (envois en nombre).
- Conformité : la journalisation du courrier par organisation (entrant/sortant, boîte ou archiveur externe), et l’effacement de compte reconstruit en machine à phases durable et reprenable, avec tampon de réversibilité, preuve DSAR (
oximail erasure prove) et rétention appliquée du journal d’audit. - Performance : une campagne de test de charge mesurée a environ triplé le débit de lecture (cache d’instructions préparées par connexion) et doublé l’ingestion saturée (index composite de fils) ; l’ingestion d’un message isolé a perdu son plancher de latence fixe (l’index de recherche valide au repos de la file) ; le WAL est borné et observable.
- Justesse de la remise : la visibilité de synchronisation incrémentale de l’ingestion est devenue atomique avec la ligne du message ; les règles du destinataire et l’absence s’exécutent désormais sur la remise locale (ADR-117) ; les sauts sortants font la médiation des extensions ESMTP (SMTPUTF8/8BITMIME/SIZE) au lieu de combler en silence ; DKIM sursigne From/To/Subject.
- Vague d’interopérabilité clients (vérifiée contre Apple Calendar, Thunderbird, eM Client, les invitations Outlook) : amorçage DAV à la racine, XML sûr en CDATA, ETag en empreinte de contenu, vrais filtres
calendar-query, émission des VTIMEZONE, modélisation des VALARM, annonces IMAPEXPUNGEcorrectes, et un point d’accès de configuration eM Client. - Authentification : DPoP v2 : nonce serveur, preuves par requête, et le jeton média mono-blob.
- Relais smarthost sortant (ADR-116) : comptes de relais aux domaines prouvés par DNS, enrôlement à usage unique, quotas de destinataires par jour avec montée en charge, rétention éphémère du relais, auto-surveillance DNSBL (relais sortant).
- Lot sécurité : vérification des mots de passe d’application à travail constant, durcissement SSRF des récupérateurs de push et d’aperçus, dispatch des comptes partagés fermé par défaut, autorisation du
From:d’en-tête à la soumission, hachage au repos des tokens. - Refonte du pipeline anti-spam : époques et reconstruction du corpus Bayes, liste blanche des réponses sur enveloppe authentifiée seulement, colonne vertébrale de disposition (anti-spam).
- Drive et collaboration : drive raciné avec favoris par lecteur et vignettes serveur, comptabilité des liens de partage, chronologie de conversation, plafonds de capacité du chat et saisie limitée aux membres.
- Balayage de conformité du fil : la classe des « ignorés en silence » de
/queryéliminée (filtres, tris et arguments inconnus sont des erreurs), les capacités d’extension annoncées honnêtement dansaccountCapabilities.