Comment configurer un serveur Jabber

Gazette Linux n°112 — Mars 2005

Suramya Tomar

Article paru dans le n°112 de la Gazette Linux de mars 2005.

Traduction française par Joëlle Cornavin .

Relecture de la traduction française par Encolpe Degoute .

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières
1. Introduction
2. Préconfiguration
2.1. Obtenir le serveur Jabber
2.2. Configurer et installer Jabber
2.3. Personnaliser l'installation du serveur jabberd
2.4. Créer une liste de contacts par défaut pour de nouveaux utilisateurs
2.5. Installer le serveur mu-conference
2.6. Lancer le serveur Jabberd
3. Conclusion
4. Informations/historique de ce document
4.1. Copyright
4.2. Remerciements

1. Introduction

À moins de vivre dans une grotte depuis ces dernières années, vous devez avoir entendu parler de la messagerie instantanée et de la manière dont elle a changé le monde des communications sur l'Internet. Selon http://www.webopedia.com, Instant Messaging (IM) est un service qui alerte les utilisateurs quand leurs amis ou collègues sont en ligne et leur permet de communiquer en temps réel via des zones de discussion en ligne privée. Deux parmi les services d'IM sont AOL Instant Messenger (AIM) et MSN Messenger. Malheureusement, la majorité des serveurs publics disponibles utilisent des protocoles propriétaires qui vous permettent uniquement de communiquer avec des utilisateurs du même système. Ces systèmes ne sont pas compatibles entre eux et les autres clients ne peuvent y accéder.

Jabber est une implémentation open source du serveur IM qui a pour but de changer cet état de choses. Il fait appel à des protocoles de flux XML qui sont libres, ouverts et publics. Ces protocoles ont été formalisés par la Internet Engineering Task Force (IETF) comme messagerie instantanée et technologie de présence approuvées sous le nom de XMPP. Les premières technologies Jabber ont été développées en 1998 par Jeremie Miller et sont maintenant en service sur des milliers de serveurs à travers le monde pour permettre à des millions d'utilisateurs de communiquer entre eux.

Le plus gros avantage du serveur Jabber comparé avec des serveurs d'IM est que, étant open source, n'importe qui peut lancer un serveur Jabber et cela peut se restreindre à une communauté donnée comme les ressources humaines d'une entreprise ou un groupe d'amis. Dans cet article, je décrirai les étapes que j'ai suivies pour configurer un serveur Jabber et comment j'ai réussi à surmonter les difficultés auxquelles j'ai été confronté. Si tout se passe bien, mon expérience vous facilitera la tâche pour installer votre propre serveur Jabber.


2. Préconfiguration

Avant de compiler le serveur, nous devons apporter certains changements au système sur lequel nous installerons le serveur, afin de le sécuriser davantage. La première tâche consistant à créer un nouvel utilisateur, ne lancez pas le processus serveur de Jabberd en tant que root. Ceci est vivement recommandé, puisque l'exécution de processus serveur en tant que root est franchement peu judicieux.

Maintenant, vous pourriez vous demander pourquoi est-ce le cas, n'est-ce pas  ? Imaginez ce scénario : une faille par débordement de tampon est découverte dans le code du serveur Jabberd et, avant qu'une correction à ce propos ne soit écrite, n'importe quel débutant en matière de scripts découvrant que vous exécutez une version du serveur vulnérable aux attaques, décide de vous pirater. D'une part, si vous lancez le serveur sous compte root, il vous aurait à sa merci, puisqu'il aurait l'entier contrôle du serveur et il pourrait en faire ce que bon lui semblerait. D'autre part, si vous exécutiez le serveur comme utilisateur normal, il devrait encore franchir quantité d'obstacles pour obtenir l'accès root et avec un peu de chance, il déclencherait un certain type d'alarme avant d'y arriver, ce qui vous permettrait de l'intercepter. Êtes-vous convaincu ?

Pour ajouter un utilisateur au serveur, exécutez la commande suivante en tant que root :



adduser jabber

Choisissez ensuite un mot de passe pour ce compte à l'aide de la commande suivante :



passwd jabber

Après avoir changé le mot de passe, nous devons créer un répertoire dans lequel le processus stockera ses journaux et ses pids. Pour ce faire, exécutez les commandes suivantes :


 
mkdir -p /usr/local/var/jabberd/pid/
mkdir -p /usr/local/var/jabberd/log/

Une fois les répertoires créés, changeons l'appartenance des répertoires de façon à ce que l'utilisateur jabber puissent écrire dedans. Exécutez les commandes suivantes :


 
chown -R jabber:jabber /usr/local/var/jabberd/pid/
chown -R jabber:jabber /usr/local/var/jabberd/log


2.1. Obtenir le serveur Jabber

Jabber étant un projet Open Source, il existe plusieurs implémentations du serveur Jabber. Une liste de quelques-uns de ces serveurs est disponible sur http://www.jabber.org/software/servers.shtml. J'ai décidé d'utiliser l'implémentation de Jabberd 2.x du serveur, car j'avais déjà le source du serveur sur mon ordinateur. De plus, il n'était pas possible de télécharger un autre source du serveur en raison du récent piratage des serveurs de Jabber Studio® et de l'arrêt subséquent de la section téléchargement du site pendant que ses responsables tentaient de savoir ce qui s'était passé.

Il faut espérer que, avant que vous ne lisiez cet article, leurs machines soient revenues à la normale et vous pourrez télécharger la dernière version de Jabberd sur leur site.


2.2. Configurer et installer Jabber

Après avoir téléchargé le source, la première chose à faire est de le décompresser à l'aide de la commande suivante :



tar -zxf jabberd-2.0s2.tar.gz

Passons ensuite de notre répertoire de travail actuel à celui du source de jabberd à l'aide de la commande suivante :



cd jabberd-2.0s2

Le serveur jabberd est doté de nombreuses options de configuration que l'on peut définir pendant la configuration initiale. Pour voir une liste de toutes les options disponibles, exécutez la commande suivante :



./configure --help

Ayant décidé de poursuivre avec les réglages par défaut, j'ai employé la commande suivante pour configurer le processus d'installation :



./configure

Dès que le script configure a terminé sans donner d'erreurs, nous pouvons continuer et compiler le programme en exécutant la commande suivante :


 
make

Installons ensuite le serveur en exécutant la commande suivante en tant que root  :



make install

Du fait que par défaut, jabberd utilise MySQL pour stocker les données utilisateur, nous devons configurer une nouvelle base de données MySQL à laquelle jabberd peut accéder. Voici un script situé dans le sous-répertoire tools du source de jabberd pour vous faciliter la tâche. Pour lancer le script, exécutez la commande suivante :



mysql -u root -p  < tools/db-setup.mysql

Saisissez le mot de passe root de MySQL à l'invite. Ce script crée une nouvelle base de données et la peuple avec les tables nécessaires au serveur jabberd. Une fois que le script se termine, nous devons créer un utilisateur appelé jabberd2 dans MySQL pour permettre à jabberd de manipuler la base de données. Pour ce faire, exécutez la commande suivante :

 

mysql -u root -p

Saisissez à présent le mot de passe root à l'invite, et vous obtenez l'invite de commande de MySQL. À cette invite, saisissez la commande suivante :



GRANT select,insert,delete,update ON jabberd2.* to jabberd2 at localhost IDENTIFIED by 'examplepassword';

en remplaçant examplepassword par un mot de passe de votre choix. Lorsque vous exécutez cette commande, saisissez exit pour quitter le programme. Ainsi se termine l'installation du serveur jabberd. Nous devons maintenant personnaliser le serveur pour nos besoins.


2.3. Personnaliser l'installation du serveur jabberd

Pour personnaliser le serveur, nous devons d'abord passer dans le répertoire de jabberd en exécutant la commande suivante :


 
cd /usr/local/etc/jabberd/

Modifions ensuite le fichier sm.xml comme suit en tant que root :

  1. Ouvrez sm.xml dans votre éditeur de texte favori.

  2. Changez l'ID sur le réseau depuis localhost en jabber.votre_site.com (vérifiez la résolution de jabber.votre_site.com).

  3. Allez jusqu'aux User Options et décochez l'option <auto-create/>. Ce comportement permet aux utilisateurs non enregistrés sur le serveur de s'inscrire eux-mêmes.

  4. Si vous préférez qu'une liste d'utilisateurs prédéfinie renseigne tous les nouveaux utilisateurs, allez jusqu'à la fin du fichier et décochez l'option <roster>/usr/local/etc/jabberd/templates/roster.xml</roster>. Nous aborderons le contenu de roster.xml dans un instant.

Une fois les modifications effectuées, enregistrez sm.xml et quittez l'éditeur. Comme nous devons maintenant personnaliser c2s.xml, suivons ces étapes en tant que root :

  1. Ouvrez c2s.xml dans votre éditeur de texte favori.

  2. Allez jusqu'à la section Local network configuration et changez l'<IDd> localhost en jabber.votre_site.com.

  3. Enregistrez et quittez.

Cette procédure termine la configuration du serveur jabberd. Vous avez ainsi un serveur jabber basique qui permet aux utilisateurs de s'inscrire eux-mêmes et de discuter ensemble. Cependant, si nous voulons pouvoir créer des salons de conversation, nous devons installer un paquetage additionnel appelé mu-conference. Nous étudierons l'installation de mu-conference ci-après.


2.4. Créer une liste de contacts par défaut pour de nouveaux utilisateurs

jabberd vous donne la capacité de créer un modèle de liste de contacts, de façon à ce que chaque nouvel utilisateur ait une liste de contacts par défaut. C'est très utile dans les environnements où l'administrateur veut s'assurer que chaque utilisateur dispose de tous les interlocuteurs importants dans leur liste sans passer beaucoup de temps à ajouter chaque utilisateur manuellement.

Le modèle de fichier, appelé roster.xml, se trouve dans le sous-répertoire templates. Le fichier a le format suivant :


<query xmlns='jabber:iq:roster'>
 <!--
  <item name='Buddy Name' jid='JID@Hote.domaine' subscription='both'>
   <group>BuddyGroup</group>
  </item>
 -->
 </query>

Pour ajouter de nouveaux utilisateurs, nous devons décommenter la balise <item name> et ajouter une nouvelle ligne pour chaque utilisateur. Par exemple, si vous vouliez m'ajouter à votre roster par défaut et que mon JID (identifiant Jabber) soit , la ligne ressemblerait à ceci :


<item name='Suramya' jid='suramya@jabber.suramya.com' subscription='both'<
 <group>Support</group>
</item>

Le champ group indique au client le groupe sous lequel l'élément est censé être stocké. Dans ce cas, Suramya effectue le stockage sous le groupe Support. Comme tous les éléments doivent être entourés de la balise <query>, voici à quoi devrait ressembler le fichier complet avec un seul utilisateur  :


<query xmlns='jabber:iq:roster'>
 <item name='Suramya' jid='suramya@jabber.suramya.com' subscription='both'>
  <group>Support</group>
 </item>
</query>

2.5. Installer le serveur mu-conference

Avant de pouvoir installer mu-server, nous devons installer le Jabber Component Runtime (JCR), disponible en téléchargement sur ici. Pour télécharger et installer JCR, voici les étapes à suivre :

  1. Téléchargez le source à l'aide de wget http://jabber.terrapin.com/JCR/jcr-0.2.4.tar.gz. [1]

  2. Décompressez l'archive à l'aide de la commande :
    
tar -zxf jcr-0.1.2.tar.gz
    
    

  3. Passez dans le répertoire source jcr à l'aide de la commande :
    

cd jcr-0.1.2
    
    

  4. Compilez jcr à l'aide de la commande :
    

make 
    
    

Une fois que jcr a fini de compiler, nous pouvons poursuivre l'installation de mu-conference en suivant ces étapes :

  1. Téléchargez le source de mu-conference dans le répertoire jcr ici.

  2. Décompressez l'archive à l'aide de la commande :
    

tar -zxf mu-conference-0.6.0.tar.gz
    
    

  3. Copiez main.c dans le répertoire src à l'aide de la commande :
    
 
    cp src/main.c mu-conference-0.6.0/src
    
    

  4. Copiez jcomp.mk dans le répertoire src à l'aide de la commande :
    

cp src/jcomp.mk mu-conference-0.6.0/src
    
    

  5. Passez dans le répertoire du source de mu-conference à l'aide de la commande :
    
 
    cd mu-conference-0.6.0/src
    
    

  6. Compilez mu-conference à l'aide de la commande :
    

make -f jcomp.m
    
    

  7. Copiez l'exécutable mu-conference créé dans le dossier jabberd à l'aide de la commande :
    

cp mu-conference /usr/local/bin
    
    

  8. Copiez le fichier de configuration dans le dossier de configuration jabberd à l'aide de la commande :
    

cp ../muc-jcr.xml /usr/local/etc/jabberd/
    
    

Nous devons à présent personnaliser mu-conference en modifiant muc-jcr.xml. Pour personnaliser la conférence, suivez ces étapes :

  1. Ouvrez le fichier muc-jcr.xml dans votre éditeur de texte favori.

  2. Changez les champs name et host en conference.votre_site.com.

  3. Ajoutez <user>jabberd</user> avant la ligne secret.

  4. Changez les lignes spool, logdir et pidfile en :

    1. /usr/local/var/jabberd/spool

    2. /usr/local/var/jabberd/log

    3. usr/local/var/jabberd/pid

  5. Créez le répertoire de spoule à l'aide de la commande :
    

mkdir -p /usr/local/var/jabberd/spool/
    
    

Celle-ci termine la configuration du serveur mu-conference et nous voilà prêts à le lancer.


2.6. Lancer le serveur Jabberd

Pour lancer le serveur, exécutez les commandes suivantes :

  1. Passez dans le répertoire de jabber à l'aide de la commande :
    

su jabber
    
    

  2. Démarrez le processus du serveur jabberd à l'aide de la commande :
    

/usr/local/bin/jabberd &
    
    

  3. Démarrez le serveur mu-conference à l'aide de la commande :
    
 
    /usr/local/bin/mu-conference -c /etc/jabberd/muc-jcr.xml &
    
    


3. Conclusion

Maintenant, j'espère vous avoir épargné beaucoup de soucis en vous indiquant comment configurer un serveur jabber rapidement et facilement. Si vous pensez que ce document vous a aidé ou si vous avez des commentaires ou des questions le concernant, contactez-moi pour me le faire savoir. Je dois néanmoins vous avertir que je suis assez paresseux et donc, je risque de mettre un peu de temps à répondre à vos messages électroniques.


4. Informations/historique de ce document

Créé par : Suramya Tomar Dernière mise à jour : 14 février 2005


4.1. Copyright

Ce document est protégé par Copyright © 14th July 2005, Suramya Tomar. Il est diffusé au public sous l'égide de la Creative Commons Attribution-ShareAlike 1.0 License.


4.2. Remerciements

Dans cet article, j'ai eu le plaisir de remercier les personnes suivantes, sans l'implication desquelles ces lignes n'auraient pu être écrites :

  • Les créateurs et les mainteneurs de http://www.jabber.com d'où j'ai compilé la plus grande partie de ces informations

  • Alf Eaton pour avoir écrit le processus qu'il a utilisé pour que les fonctionnalités de conférences de Jabber fonctionnent

  • Renny Koshy pour m'avoir laisser configurer un serveur Jabber sur sa machine

  • Matt Hoskins et Kevin Walsh, pour être les premiers à m'avoir intéressé à Linux

  • Mes amis et ma famille pour m'avoir supporté lorsque j'écrivait ce document

Je suis né en 1980 dans un petit hôpital de l'Air Force à Hashimara, en Inde. J'ai ensuite passé les 18 premières années de ma vie un peu partout en Inde, durant lesquelles j'ai eu le plaisir de mener à bonne fin 12 ans d'études dans 7 écoles.

J'ai commencé à utiliser Linux fin 1999 lorsqu'un ami m'a prété un cédérom d'installation de RedHat 7.1 et qu'un autre ami m'a fait « don » d'un disque dur de 6 Go. C'était juste après le nième plantage de mon Win98, et j'ai donc décidé de donner une chance à Linux. Je l'ai essayé et adopté presque immédiatement. Dans les deux années qui suivirent, j'ai mis à niveau vers RedHat 7.3 mais lorsque RedHat a décidé d'arrêter l'assistance pour RedHat 7.3, je suis passé à Debian et je m'en félicite depuis lors.

J'aime beaucoup programmer et j'ai récemment compris comment déchiffrer la suite de caractères que certaines personnes aiment appeler Perl et j'ai constaté que j'aimais finalement bien cela. Pour les sites web, j'aime utiliser PHP avec une base de données MySQL et je sais programmer en C, C++, VB et .Net. Je m'intéresse également beaucoup à la sécurité informatique et à l'Intelligence Artificielle, et j'essaie de me documenter le plus possible sur ces sujets.

En dehors de mon travail sur l'ordinateur, j'aime lire (principalement du fantastique et de la science-fiction, mais je lis n'importe quoi à l'exception des romans à l'eau de rose), écouter de la musique (mes chanteurs favoris sont Shania Twain, In-Grid, Crystal Waters) et démonter diverses choses pour en connaître le fonctionnement.

Si vous vous ennuyez vraiment et que vous voulez en savoir plus à mon sujet, n'hésitez pas à visiter mon site web http://www.suramya.com, où vous trouverez plus d'informations sur moi que vous n'avez jamais voulu en avoir.

Notes

[1]

Toutes les commandes des diverses procédures d'installation ci-dessous doivent être saisies sur la ligne de commande de votre terminal (N. d. T.).