3
GuideXMPP
Antoine Van Elstraete edited this page 2026-09-08 19:51:25 +02:00

Guide-XMPP

Introduction

XMPP (eXtensible Messaging and Presence Protocol) est utilisé dans ce projet pour envoyer des notifications de synthèse via le protocole Jabber. Cette fonctionnalité est optionnelle et désactivée par défaut (XMPP_ENABLED=false). Pour activer et configurer XMPP, reportez-vous au tableau complet des variables dans la page Configuration.


Comprendre le JID (Jabber ID)

Le JID (Jabber ID) est l'identifiant unique d'un compte XMPP. Il suit le format : utilisateur@domaine.tld

  • Exemple : alice@example.com
  • Avec ressource : alice@example.com/ressource (pour identifier un client spécifique).

Dans ce projet :

  • XMPP_JID : Compte expéditeur des notifications (ex: pronote-sync@example.com).
  • XMPP_TO : JID du destinataire (ex: parent@example.com).
  • XMPP_RESOURCE : Ressource associée à la connexion du pipeline (par défaut : pronote-sync).

Créer un compte XMPP

Auto-hébergement

Si vous gérez votre propre serveur XMPP (Prosody, ejabberd, OpenFire), créez un compte via les outils d'administration :

  • Prosody :
    prosodyctl adduser utilisateur@domaine.tld
    
  • ejabberd :
    ejabberdctl register utilisateur domaine mot_de_passe
    
  • OpenFire : Utilisez la console web d'administration.

Service public

De nombreux fournisseurs XMPP proposent des comptes gratuits :

Sécurité : Le mot de passe (XMPP_PASSWORD) est stocké en SecretStr et masqué dans les logs.


Hôte et port

XMPP_HOST

  • Par défaut, XMPP_HOST est vide : le pipeline se connecte au serveur indiqué par le domaine du JID (ex: example.com pour user@example.com).
  • Si le serveur XMPP est sur un hôte différent (ex: JID user@example.com mais serveur sur xmpp.example.com), renseignez XMPP_HOST manuellement.
  • En l'absence de XMPP_HOST, la résolution se fait via les enregistrements DNS SRV (_xmpp-client._tcp.domaine.tld).

XMPP_PORT

Ports standards pour les connexions client-serveur :

  • 5222 (par défaut) : Port standard pour les connexions client-serveur XMPP.
  • 5223 : Port historique pour les connexions avec TLS direct (legacy SSL).
  • 5269 : Connexion serveur-serveur (fédération) — non pertinent pour ce projet.

TLS et XMPP_USE_TLS

La variable XMPP_USE_TLS contrôle le mode de chiffrement de la connexion XMPP :

  • XMPP_USE_TLS=true (par défaut) : Active le TLS direct (connexion chiffrée dès l'établissement). Le client se connecte en TLS directement, sans négociation STARTTLS préalable.
  • XMPP_USE_TLS=false : Active le STARTTLS (TLS opportuniste). La connexion commence en clair, puis est chiffrée après négociation STARTTLS. Ce mode est adapté aux serveurs utilisant STARTTLS.

Contrainte de sécurité

  • Désactiver le TLS direct (XMPP_USE_TLS=false) n'est autorisé uniquement pour les hôtes de boucle locale :
    • localhost
    • 127.0.0.1
    • ::1
  • Pour toute autre destination, XMPP_USE_TLS doit rester à true. Une tentative de connexion sans TLS direct échouera avec une erreur de validation.

Note pratique : En cas d'échec de connexion avec XMPP_USE_TLS=true, vérifiez si votre serveur XMPP supporte le TLS direct. Si votre serveur n'accepte que STARTTLS, vous devrez peut-être adapter la configuration.


Destinataire (XMPP_TO)

  • XMPP_TO est le JID du destinataire des notifications (ex: le compte XMPP du parent).
  • Format : utilisateur@domaine.tld (sans ressource).
  • Prérequis : Le destinataire doit accepter les messages de l'expéditeur (XMPP_JID), selon la configuration du serveur ou du client XMPP.

Exemple de configuration

XMPP activé

# Activation et configuration complète
XMPP_ENABLED=true
XMPP_JID=pronote-sync@example.com
XMPP_PASSWORD=mot_de_passe_xmpp
XMPP_HOST=xmpp.example.com
XMPP_PORT=5222
XMPP_TO=parent@example.com
XMPP_RESOURCE=pronote-sync
XMPP_USE_TLS=true
XMPP_TIMEOUT=30

XMPP désactivé (par défaut)

# Désactivation (comportement par défaut)
XMPP_ENABLED=false
# Les autres variables XMPP sont ignorées

Configuration — tableau des variables → Sécurité — gestion des secrets