Présentation
Livreur Lonewolf atteint la version 0.3.0, une mise à jour majeure pour ce serveur XMPP autonome écrit en Rust. Le projet reste en phase pré‑1.0 et ne supporte qu’une instance unique ; la conformité totale au standard XMPP et la mise en cluster sont toujours planifiées. Le changement le plus visible est l’ajout de la fédération basée sur des certificats, ainsi que le support du Direct TLS, deux évolutions qui modifient la façon dont les serveurs s’échangent des stanzas entre eux.
Fonctionnalités de fédération et sécurité
La fédération utilise les certificats X.509 et le mécanisme SASL EXTERNAL, ce qui élimine la dépendance au Server Dialback traditionnel. Les serveurs doivent disposer d’un nom DNS public et d’un certificat de confiance pour être reconnus. La spécification XEP‑0288 (Bidirectional connections) permet à deux serveurs compatibles de partager une seule connexion TCP, réduisant la latence et le nombre de sockets ouverts. En parallèle, XEP‑0478 (Stream Limits Advertisement) échange les limites de taille de stanzas et les paramètres d’inactivité, assurant une négociation explicite des contraintes de charge.
Le Direct TLS (XEP‑0368) introduit deux nouveaux écouteurs, un pour les clients et un pour les serveurs, ainsi qu’un mécanisme de découverte combinant STARTTLS et Direct‑TLS. Cette approche simplifie le processus de chiffrement initial, car le client peut directement établir une session TLS sans échange préalable de texte en clair.
Parmi les extensions activées par défaut, on trouve le stockage XML privé (XEP‑0049) pour les paramètres client et les signets, ainsi que la réponse aux requêtes de version logicielle (XEP‑0092), avec la divulgation du système d’exploitation désactivée par défaut. Le serveur propose également les mécanismes d’authentification SCRAM‑SHA‑512 et SCRAM‑SHA‑512‑PLUS, issus d’un Internet‑Draft expiré, mais non encore normalisés par l’IANA. Cette implémentation crée une incompatibilité ascendante : les comptes créés ou les mots de passe modifiés ne sont plus lisibles par les binaires antérieurs, même si l’authentification SHA‑512 est désactivée.
Gestion des limites et performances
Le paramètre de taille maximale de stanza client passe de 512 KiB à 256 KiB, une réduction qui limite la charge mémoire des messages entrants. De plus, le compteur d’octets trafic inclut désormais l’en‑tête TLS et le handshake, offrant une mesure plus précise de la bande passante consommée.
Le serveur vérifie les listes de révocation (CRL) publiées par les autorités de certification via HTTP non chiffré. Cette vérification est activée par défaut (s2s.tls.fetch_crls = true) ; elle peut être désactivée ou remplacée par un chemin local (s2s.tls.crls_path) pour les environnements isolés. Le profil de certificat LetsEncrypt sélectionné (letsEncrypt.certificate_profile) suit les profils annoncés par la CA, incluant les certificats à courte durée de vie, et tout changement de profil déclenche un renouvellement anticipé.
Le binaire de benchmark a été renommé lonewolfbench, remplaçant l’ancien lonewolf-bench, ce qui simplifie l’appel depuis la ligne de commande et s’aligne sur la convention de nommage du crate Rust.
Déploiement et outils
cargo build --release --locked -p lonewolf -p lonewolfctl -p lonewolfbenchLa compilation nécessite un outil Rust stable et un linker système, compatible Linux ou macOS. Le code source est disponible sous licence Apache‑2.0, avec des archives tar.gz et zip. La documentation indique que la configuration par défaut active la plupart des extensions, mais que chaque paramètre (par ex. s2s.tls.fetch_crls ou letsEncrypt.certificate_profile) doit être ajusté en fonction du contexte de déploiement, notamment pour les environnements où la connectivité HTTP externe est restreinte.