Prosody est un serveur jabber très simple, il est idéal pour monter un petit serveur perso qui n'hébergera que quelques adresses voir qu'une seule, la notre.
Il est très simple à configurer et ne nécessite pas de base de données.

Installation

Prosody peut éventuellement être installé depuis les dépôts (A partir de Lucid Lynx pour Ubuntu), sinon vous devrez télécharger les paquets deb pour l'installer manuellement.

Il est nécessaire également d'installer le paquet liblua-sec pour le support ssl/tls (dont le paquet deb est
également disponible sur le site de Prosody).
Si vous installez prosody via les paquets deb, vous aurez également besoin des dépendances suivante:
lua5.1 liblua5.1-0 liblua5.1-expat0 liblua5.1-socket2 liblua5.1-filesystem0

Configuration

Prosody installé, on peut maintenant le configurer.
Pour ce faire, nous allons éditer le fichier /etc/prosody/prosody.cfg.lua avec notre éditeur de texte préféré.

sudo nano /etc/prosody/prosody.cfg.lua

allow_registration = false/true;
Ce paramètre autorise (true) ou interdit (false) l'enregistrement d'un nouveau compte via un client jabber. Passer ce paramètre à 'true' implique que quiconque peut se créer un compte sur votre serveur.
Dans notre cas, nous laisserons ce paramètre à 'false' puisque le serveur est dédié à un usage personnel.

c2s_require_encryption = true
s2s_require_encryption = false

Pour plus de sécurité, on impose une connexion chiffré via ssl pour le client.
Pour la communication entre serveurs, imposer une connexion chiffrée peut poser des problèmes. En effet, certains serveurs ne chiffrent pas leur communications. Les serveurs de google en particulier...
On peut toutefois imposer le chiffrage des communications entre serveurs et ainsi bannir les serveurs ne sécurisant pas leurs échanges.

c2s_timeout = 120
On fixe un timeout pour les clients non authentifié afin d'éviter une éventuelle surcharge de connexions fantômes résiduelles.

VirtualHost "mondomaine.tld"
La ligne la plus importante, nous allons définir ici le nom de domaine qui sera utilisé pour les adresses jabber.
Si vous possédez plusieurs domaines pointant sur la machine, il est possible de mettre autant de ligne que de domaines.
Les options mises à la suite d'une ligne concernant un nom de domaine seront spécifiques à ce nom de domaine, ainsi il est possible d'autoriser ou interdire des modules pour certains domaines ou autoriser un domaine sans connexions chiffrées, etc.

Le site de Prosody donne d'avantage de détails sur la configuration et les options disponibles.

 

Afin de pouvoir profiter d'une connexion chiffrée via ssl, nous allons devoir créer un certificat ssl, si vous n'en possédez pas déjà un. Il est possible de créer un certificat ssl privé, cela étant vous recevrez un avertissement car le certificat est autosigné.
Maintenant que vous avez votre certificat ssl, il faut indiquer à prosody où le trouver.
Dans /etc/prosody/prosody.cfg.lua, nous allons modifier les lignes suivante:
ssl = {
key = "certs/localhost.key";
certificate = "certs/localhost.cert";
}

En remplaçant les chemins par défaut par l'emplacement de votre certificat.

Vous pouvez maintenant redémarrer prosody pour qu'il prenne en compte les modifications et vérifier qu'il n'y ai pas d'erreur.

sudo /etc/init.d/prosody restart

Ajouter des comptes de messagerie

Prosody est prêt, il reste à ajouter un premier utilisateur au serveur.
Puisque nous avons interdit auparavant l'inscription distante via le client, nous allons ajouter manuellement notre utilisateur.

prosodyctl adduser user@mondomaine.tld

mondomaine.tld doit bien sûr être un de ceux qui ont été renseigné préalablement dans le fichier de config.
prosodyctl nous demande ensuite le mot de passe du compte, et le tour est joué. L'adresse jabber est opérationnelle.

En cas d'erreur on peut supprimer un utilisateur avec la commande suivante:
prosodyctl deluser user@mondomaine.tld
Ou changer son mot de passe:
prosodyctl passwd user@mondomaine.tld

Toutes les données utilisateurs sont stockées dans le dossier /var/lib/prosody/, ce dossier n'est accessible qu'à l'utilisateur prosody. Ne changez pas les droits sur ce dossier, le profil de chaque utilisateur contient son mot de passe, affiché en clair. Seul prosody doit donc y avoir accès.

Ports et DNS

Avant d'essayer de se connecter avec un client xmpp, nous allons devoir ouvrir les ports sur le parefeu pour autoriser prosody à dialoguer avec l'extérieur.
Le port 5222 sert à la connexion des clients au serveur.
Et le port 5269 à la communication entre les serveurs.

A ce stade, selon votre serveur dns, vous risquez d'être confronté à un méchant "Hôte inconnu" ou "Unknown host".
Ce sont les enregistrement dns qui sont en cause, pour achever la configuration de notre serveur jabber, rendons nous sur notre serveur dns (pour moi ce sera celui d'OVH).
Nous allons créer les 3 champs SRV suivant:
_xmpp-client._tcp.mondomaine.tld IN SRV 5 0 5222 mondomaine.tld
_xmpp-server._tcp.mondomaine.tld IN SRV 5 0 5269 mondomaine.tld
_jabber._tcp.mondomaine.tld IN SRV 5 0 5269 mondomaine.tld

En détail cela donne:
sous domaine: _xmpp-client._tcp
Priorité: 5
Poids: 0
Port: 5222
Cible: mondomaine.tld

La priorité et le poids ne nous sont d'aucune utilité ici, il servent à gérer la priorité des serveurs si nous en possédions plusieurs.

 

Enfin, nous pouvons nous connecter avec notre client xmpp préféré et profiter de notre propre serveur jabber.

Comments

  1. Elessar on 02.13.2011

    Intéressant. Petite note au passage, les réglages DNS, ça ne se fait pas chez son bureau d'enregistrement (ou registrar), mais chez son fournisseur de service de nom, qui peut être soi-même ou un prestataire, souvent confondu avec le bureau d'enregistrement lorsqu'on n'a pas cherché à prendre en charge ce service.

    Ainsi par exemple, vu que je suis auto-hébergé également pour le DNS, ce genre de réglage, je les fais chez moi en éditant mon fichier de zone DNS, pas chez mon bureau d'enregistrement.

  2. Maniack Crudelis on 02.15.2011

    Donc les réglages DNS doivent se faire sur le serveur de nom hébergeant le nom de domaine correspondant?
    En effet, je n'ai pas cherché à héberger le serveur DNS.

Leave a Reply