=====installation du serveur jabber (ejabberd) =====
ejabberd est un serveur **Jabber/XMPP** libre de messagerie instantanée à haute performance.
**Qu'est-ce que veut dire ejabberd ?**
Le nom ejabberd vient de Erlang JABBER Daemon. Jabber est l'ancien nom du protocole XMPP (extensible Messaging and Presence Protocol).
===== Configuration du DNS =====
Pour que notre serveur fonctionne correctement, il est important de bien configurer
le serveur dns (bind).
jabber IN A 92.xxx.xxx.xxx # ip publique
_jabber._tcp.mdl29.net. IN SRV 0 0 5269 jabber
_jabber._tcp IN SRV 5 0 5269 jabber
_xmpp-server IN SRV 5 0 5269 jabber
_xmpp-client._tcp IN SRV 5 0 5222 jabber
===== Installation =====
Pour l'installation du serveur jabber avec **ejabberd**, je vous conseille 2 sites :
[[http://blog.pastoutafait.org/billets/installation-serveur-jabber-avec-ejabberd]]
[[http://www.vogelweith.com/debian_server/13_jabber.php#x1-40001]]
aptitude install ejabberd
paramétrage du serveur (avec connexion sur le ldap bien sûr) :
ça se passe dans le fichier /etc/ejabberd/ejabberd.cfg :
{loglevel, 5}.
{hosts, ["mdl29.net"]}.
{host_config, "mdl29.net", [{auth_method, [ldap, anonymous]}]}.
{listen,
[
{5222, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536},
starttls_required, {certfile, "/etc/ejabberd/server.pem"}
]},
%%Ancienne méthode de connexion SSL (obsolète)
{5223, ejabberd_c2s, [
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536},
tls, {certfile, "/etc/ejabberd/server.pem"}
]},
{5269, ejabberd_s2s_in, [
{shaper, s2s_shaper},
{max_stanza_size, 131072}
]},
%%Passerelle XMPP
{{5200, "127.0.0.1"}, ejabberd_service, [
{access, all},
{host, "xmpp.mdl29.net", [{password, "secret"}]}
]},
%%Passerelle identica
{{5201, "127.0.0.1"}, ejabberd_service, [
{access, all},
{host, "identica.mdl29.net", [{password, "secret"}]}
]},
%%Passerelle twitter
{{5202, "127.0.0.1"}, ejabberd_service, [
{access, all},
{host, "twitter.mdl29.net", [{password, "secret"}]}
]},
%%Passerelle msn
{{5203, "127.0.0.1"}, ejabberd_service, [
{access, all},
{host, "msn.mdl29.net", [{password, "secret"}]}
]},
{5280, ejabberd_http, [
http_bind,
http_poll,
web_admin
]}
]}.
{s2s_use_starttls, true}.
{s2s_certfile, "/etc/ejabberd/server.pem"}.
%{auth_method, ldap}.
{ldap_servers, ["ldap.mdl29"]}.
{ldap_encrypt, none}.
{ldap_port, 389}.
{ldap_rootdn, "cn=admin,dc=mdl29,dc=net"}.
{ldap_password, "secret"}.
{ldap_base, "dc=mdl29,dc=net"}.
{ldap_uids, [{"mail", "%u@mdl29.net"}]}.
{ldap_filter, "(objectClass=qmailuser)"}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, admin, {user, "jabbermdl", "mdl29.net"}}.
{acl, local, {user_regexp, ""}}.
{access, max_user_sessions, [{10, all}]}.
{access, c2s, [{deny, blocked},
{allow, all}]}.
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{deny, all}]}.
{access, pubsub_createnode, [{allow, all}]}.
{language, "fr"}.
{modules,
[
{mod_http_bind,[
{max_inactivity, 60}
]},
{mod_adhoc, []},
{mod_announce, [{access, announce}]}, % requires mod_adhoc
{mod_caps, []},
{mod_configure,[]}, % requires mod_adhoc
{mod_ctlextra, []},
{mod_disco, []},
%%{mod_echo, [{host, "echo.localhost"}]},
{mod_irc, [{access, all}, {default_encoding, "utf-8"}]},
%%{mod_irc, []},
{mod_last, []},
{mod_muc, [
%%{host, "conference.@HOST@"},
{access, muc},
{access_create, muc},
{access_persistent, muc},
{access_admin, muc_admin},
{anonymous, true},
{max_users, 100}
]},
{mod_muc_log, []},
{mod_offline, []},
{mod_privacy, []},
{mod_private, []},
{mod_proxy65, [
{access, local},
{shaper, c2s_shaper}
]},
{mod_pubsub, [ % requires mod_caps
{access_createnode, pubsub_createnode},
{ignore_pep_from_offline, false},
{last_item_cache, false},
{max_items_node, 1000000},
{plugins, ["flat", "pep"]}
]},
{mod_register, [
{welcome_message, {"Bienvenue!",
"Bienvenue sur le service jabber. "
"Pour des informations "
"http://www.jabber.org"}},
{registration_watchers, ["jabbermdl@mdl29.net"]},
{access, register}
]},
{mod_roster, []},
%%{mod_service_log,[]},
%%{mod_shared_roster,[]},
{mod_stats, []},
{mod_time, []},
{mod_vcard, []},
{mod_version, []}
]}.
Voilà, seule une personne inscrite dans le ldap peut se connecter sur le serveur jabber.
Activer SSL / TLS ( méthode auto-certification ) \\
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
openssl rsa -in privkey.pem -out privkey.pem
cat privkey.pem >> server.pem
A la question "Common Name" il est impératif de rentrer votre nom de domaine
Common Name (eg, YOUR name) : mdl29.net
Création d'un utilisateur de base pour l'administration
ejabberdctl register nom_user mdl29.net mot_de_passe
Suppression d'un utilisateur du roster
ejabberdctl unregister nomducompte mdl29.net
Interface web
http://votreserveur:5280/admin
L'interface web est très pratique et permet d'administrer les utilisateurs et le serveur. indiquez le nom d'un compte administrateur, de la forme "nom_user@votredomaine.net", ainsi que le mot de passe associé.
Il ne reste plus qu'à lancer le serveur jabber :
/etc/init.d/ejabberd start
et se connecter dessus.
=====La base de données =====
Ejabberd supporte un nombre intéressant de base de données. Mais **Mnesia** est la base de données native de ejabberd fournit par le langage Erlang.
Il est fortement conseillé de faire des sauvegarde régulière de celle-ci.
* Sauvegarder la base de données
ejabberdctl backup mnesiadata
* Restaurer la base de données
ejabberdctl restore mnesiadata