Table des matières

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.

 ejabberdctl backup mnesiadata 
 ejabberdctl restore mnesiadata