Traduction(s) : Francais - English


Cette page présente l'installation et la configuration du serveur xmpp prosody (serveur jabber) sur Debian.

Le service XMPP sera proposé sur l'hôte nommée im.example.org avec chiffrement TLS.

Avant de commencer assurez vous que im.example.org pointe effectivement sur l'IP publique de l'hôte (cf. Enregistrements DNS)

De plus les port 5222 et 5269 sont ouverts sur l'IP publique.

Squeeze

Installer le paquet

aptitude ou apt feront l'affaire, par exemple :

aptitude install prosody

La configuration

Les fichiers

Le répertoire /etc/prosody

/etc/prosody/prosody.cfg.lua
/etc/prosody/README
/etc/prosody/certs/
/etc/prosody/conf.avail/
/etc/prosody/conf.d/

La configuration se fait dans « /etc/prosody », sur le modèle de apache on y trouve un fichier de configuration globale « prosody.cfg.lua » et différents fichiers pour chaque VirtualHosts dans « conf.avail/ ».

Par défaut deux exemples d'hôtes sont installés par le paquet « localhost.cfg.lua » et « example.com.cfg.lua », cependant seul localhost est activé lors de l'installation.

Un fichier de configuration doit avoir l'extension lua.

Conservez l'extension si vous renommez/créez les fichiers.

Les configurations effectivement lues par prosody sont dans « /etc/prosody/conf.d/ ».

Typiquement les fichiers présents dans « conf.d » sont des liens symboliques vers un fichier dans « conf.avail ».

Chiffrement SSL

Le couple clef/certificat permettant le chiffrement entre serveur/client et serveur/serveur se trouve dans « /etc/prosody/certs/ ». À l'installation sont crée les fichiers localhost.cert et localhost.key valable pour localhost par défaut si vous n'avez pas de configuration spécifique pour openssl ("/etc/ssl/openssl.cnf").

Si vous possédez déjà ses fichiers pour im.example.org il suffira de pointer la configuration dessus. Dans le cas contraire il faut les créer.

La création d'un couple clef/certificat n'est pas l'objet de cette page, référez vous à la documentation de openssl pour ça (TODO ajouter le lien).

Par exemple pour un certificat auto signé :

openssl genrsa -out /etc/prosody/certs/im.example.org.key 2048
openssl req -new -x509 -key /etc/prosody/certs/im.example.org.key -out /etc/prosody/certs/im.example.org.cert -days 1095

L'empreinte md5/sha1 (à distribuer à vos utilisateurs pour contrôler l'identité du serveur lors de la première connexion)

openssl x509 -fingerprint -md5 -in /etc/prosody/certs/im.example.org.cert
openssl x509 -fingerprint -sha1 -in /etc/prosody/certs/im.example.org.cert

Déclarer l'hôte

La configuration de l'hôte im.example.org se fera dans le fichier « /etc/prosody/conf.avail/im.example.org.cfg.lua », le fichier example.com.cfg.lua pourra servir de modèle :

cp -a /etc/prosody/conf.avail/example.com.cfg.lua /etc/prosody/conf.avail/.cfg.lua

Avec votre éditeur favori changez les paramètres VirtualHost et enabled de façon à avoir :

VirtualHost "im.example.org"
          --enabled = false -- Remove this line to enable this host

La ligne "--enabled =[…]" peut aussi bien être retirée, au lieu de la commenter comme ci dessus.

Déclarez aussi la clef et le certificat SSL :

          ssl = {
                  key = "/etc/prosody/certs/im.example.org.key";
                  certificate = "/etc/prosody/certs/im.example.org.cert";
                  }

Si vous avez déjà un couple key/cert sur le même nom de domaine (Common Name), pour apache par exemple, pointé dessus à la place des fichiers indiqués ci-dessus.

Maintenant créez le lien symbolique dans « /etc/prosody/conf.d/ »

ln -sf /etc/prosody/conf.avail/im.example.org.cfg.lua /etc/prosody/conf.d/im.example.org.cfg.lua

Plusieurs hôte pour une même configuration

Voici un exemple permettant de déclarer une même configuration pour plusieurs hôtes (merci à MattJ) :

for _, host in ipairs { "example.net", "example.org" } do
   VirtualHost (host)
      option1 = "foo"
      option2 = "bar"
end

Création des utilisateurs (simple)

La création des comptes utilisateurs se fait grâce à la commande « prosodyctl »

prosodyctl adduser romeo@im.example.org

Autres méthodes d'authentification (avancé)

Cyrus SASL avec LDAP

L'avantage de cette méthode est de permettre l'utilisation de comptes utilisateurs déclarés/gérés indépendamment de prosody, à savoir via LDAP. La documentation officielle est disponible sur le site de prosody.

Au préalable, complétez l'installation avec les paquets nécessaire pour l'authentification sasl avec prosody.

aptitude install sasl2-bin liblua5.1-cyrussasl0 libsasl2-modules-ldap

Déclarez l'utilisation de cyrus SASL comme méthode d'authentification dans « /etc/prosody/prosody.cfg.lua »:

sasl_backend = "cyrus" -- 0.7 (different in 0.8)
cyrus_application_name = "xmpp"

Dans « /etd/default/saslautd » changez START=no en START=yes et contrôlez que MECHANISMS="ldap". De plus MECH_OPTIONS doit pointer vers un fichier, probablement « /etd/default/saslautd ».

Ensuite il est nécessaire de configurer les options associées au mécanismes d'authentification. Cela se fait dans le fichier indiqué par MECH_OPTIONS (généralement « /etd/default/saslautd »). Pour cela éditer le fichier et renseigner les champs suivants :

ldap_servers: ldap://ldap.example.org/
ldap_search_base: ou=user,dc=example,dc=org

Redémarrez le service :

invoke-rc.d saslauthd restart

Tester que cela fonctionne :

$ testsaslauthd -u utilisateur -p mot_de_passe
0: OK "Success."

Déclarez ensuite un service sasl xmpp utilisé par prosody dans « /usr/lib/sasl2/xmpp.conf ». Le nom du fichier correspond à ce que vous avez donné pour "cyrus_application_name" dans la configuration de prosody.

pwcheck_method: saslauthd
mech_list: PLAIN

Tester

invoke-rc.d prosody restart

Contrôler les journaux « /var/log/prosody/prosody.err » et « /var/log/prosody/prosody.log ».

Autres

Munin

Une extension munin est disponible sur dépôt git des extensions non-officielles.

L'utilisation de cette extension nécessite le module console de prosody. Pour cela, dé-commentez console de la liste des modules_enabled dans le fichier « /etc/prosody/prosody.cfg.lua » .

Enregistrements DNS

Le protocole xmpp gère les enregistrements de type SRV, par exemple pour le domaine im.example.org, veuillez réaliser les enregistrements suivants :

_xmpp-client._tcp.example.org. SRV  10 100 5222 im.example.org.
_xmpp-server._tcp.example.org. SRV  10 100 5269 im.example.org.
im.example.org.            A    192.0.2.12

192.0.2.12 est dans cet exemple l'IP publique du serveur.