Installation d'un serveur Jabber (ejabberd)

De La Mouche VII
Révision datée du 19 janvier 2010 à 00:35 par Xiloynaha (discussion | contributions) (création incomplète (sauvegarde))
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche


J'ai récemment installé ejabberd sous Debian GNU/Linux lenny, et je vais décrire rapidement la procédure.

Toutes les manipulations sont à réaliser sous l'utilisateur root.

Installation

Tout bête, il suffit d'installer le paquet ejabberd :

aptitude install ejabberd

Configuration

La configuration de ejabberd se trouve dans le répertoire /etc/ejabberd. On y trouve le fichier de configuration principal (ejabberd.cfg), un certificat SSL généré automatiquement pendant l'installation (ejabberd.pem), ainsi qu'un fichier nommé inetrc auquel je ne me suis pas intéressé.

# ls -lh /etc/ejabberd
total 24K
-rw------- 1 ejabberd ejabberd  14K jan 16 15:29 ejabberd.cfg
-rw-r----- 1 root     ejabberd 2,0K jan 14 23:23 ejabberd.pem
-rw-r--r-- 1 root     root       37 avr 16  2009 inetrc

À propos de ejabberd.cfg

Vous l'aurez compris, le fichier qui nous concerne le plus dans un premier temps est ejabberd.cfg. C'est en fait un morceau de code Erlang (le langage dans lequel est codé ejabberd), ce qui fait une syntaxe particulière, mais assez claire toutefois. Une notice explicative concernant cette syntaxe est incluse en commentaire dans le fichier. La principale chose à savoir est que les commentaires commencent par le caractère %.

Les sections suivantes expliquent les modifications à apporter pour bien démarrer.

Les ACL, ou droits des utilisateurs

Le premier élément à configurer est la liste des utilisateurs possédant les droits d'administration sur le serveur. Ils pourront, depuis leur compte Jabber (si leur client le supporte), effectuer des opérations telles que l'ajout et la suppression d'utilisateurs, le paramétrage des messages et annonces du serveur, ou même redémarrer à distance ejabberd.

Une ACL est de la forme :

{acl, nom_groupe, {user, "nom_utiliateur", "domaine_utilisateur"}}.

Par exemple, pour ajouter l'utilisateur moi@mondomaine.org au groupe des administrateurs (nommé « admin ») :

{acl, admin, {user, "moi", "mondomaine.org"}}.

Il existe d'autres groupes, comme nous le verrons un peu plus loin.

Noms de domaines

Il faut ensuite indiquer le ou les noms de domaines qui seront gérés par ejabberd. Si vous n'avez qu'un domaine, il suffit d'écrire :

{hosts, ["mondomaine.org"]}.

Si vous en avez plusieurs :

{hosts, ["mondomaine.org", "monautredomaine.net", "mondomainepro.com"]}.

Ports d'écoute du serveur

Une section importante est la structure listen, qui spécifie les ports d'écoute du serveur (et donc les services qu'il propose). Voici ma configuration :

{listen,
 [
  %% Client à serveur :
  {5222, ejabberd_c2s, [
                        {access, c2s},
                        {shaper, c2s_shaper},
                        {max_stanza_size, 65536},
                        starttls_required, {certfile, "/etc/ejabberd/ejabberd.pem"}
                       ]},

  %% Ancienne méthode de connexion SSL (obsolète) sur le port 5223 :
  {5223, ejabberd_c2s, [
                        {access, c2s},
                        {shaper, c2s_shaper},
                        {max_stanza_size, 65536},
                        tls, {certfile, "/etc/ejabberd/ejabberd.pem"}
                       ]},

  %% Serveur à serveur :
  {5269, ejabberd_s2s_in, [
                           {shaper, s2s_shaper},
                           {max_stanza_size, 131072}
                          ]},

  %% Interface web :
  {5280, ejabberd_http, [
                         http_poll,
                         web_admin,
                         tls,
                         {certfile, "/etc/ejabberd/ejabberd.pem"}
                        ]}
 ]}.
  • La partie « client à serveur » (port 5222) est indispensable. J'ai changé la directive starttls en starttls_required, afin d'empêcher que des mots de passe en clair ne transitent.
  • La deuxième partie, relative à l'ancienne méthode de connexion SSL, est facultative, et désactivée par défaut. Je l'ai activée parce que STARTTLS n'est pas encore supportée par tous les clients Jabber (par exemple mon client préféré mcabber).
  • La partie « serveur à serveur » est indispensable si vous voulez que votre serveur communique avec les autres serveurs Jabber. Pour un serveur interne, vous pouvez commenter cette section.
  • Enfin, la partie concernant l'interface web est facultative, mais il faut savoir que certaines opérations ne peuvent être effectuées qu'à travers cette interface. Par rapport au fichier de configuration par défaut, j'ai ajouté les directives tls et {{{certfile, "/etc/ejabberd/ejabberd.pem"}}}, qui permettent d'accéder à l'interface web de manière sécurisée (en https).

Si vous désirez configurer des passerelles vers d'autres réseaux de messagerie instantanée, il vous faudra configurer des nouveaux ports d'écoute dans cette section. Je ne peux pas vous aider sur ce point car j'utilise Jabber « pur » : lisez les exemples en commentaire et la documentation.

Création des comptes administrateurs

Même si nous avons spécifié des ACL dans le fichier de configuration, les utilisateurs ne sont pas créés pour autant. Pour les créer, il faut utiliser l'utilitaire ejabberdctl (le serveur doit être lancé) :

ejabberdctl register moi mondomaine.org mon_mot_de_passe

Vous pouvez contrôler que l'utilisateur a bien été créé avec la commande suivante, qui affiche le nombre d'utilisateurs enregistrés :

ejabberdctl stats registeredusers

L'interface web

L'accès à l'interface web se fait sur le port spécifié dans le fichier de configuration, à savoir 5280 par défaut, et le répertoire à charger est /admin/. Dans notre exemple, l'adresse à charger est donc : https://mondomaine.org:5280/admin/ (http:// ne marchera pas si vous avez activé le chiffrement comme je l'ai fait).

Règles iptables

Un mot sur le certificat SSL

Il est conseillé de générer votre propre certificat SSL « aux petits oignons ». Cela sort du cadre de cet article, mais sachez que comme on ne peut spécifier qu'un certificat et non une signature dans la configuration de ejabberd, il faudra concaténer le fichier de signature et le fichier de certificat :

cat key.pem cert.pem >keycert.pem

C'est ce fichier (ici keycert.pem) qu'il faudra indiquer dans ejabberd.cfg.