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).
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
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
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.
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.
ejabberdctl backup mnesiadata
ejabberdctl restore mnesiadata