Está en la página 1de 38

Sistema de Mensajería Instantánea Corporativa con 

Jabber y MySQL.

Rafael Matito

1
Objetivo

Sistema de mensajería instantánea corporativa


basado en Software Libre.

Basado en estándares abiertos.

Libertad de elección de servidor y clientes.

Facilidad de administración de los usuarios del


sistema, de sus grupos y contactos.

Bajo coste.

2
¿Qué necesitamos?

Jabberd1
Servidor Jabber
{ Jabberd2

Sistema Gestor de Bases de Datos (MySQL)

Aplicación de gestión de usuarios del sistema

Equipos clientes (PSI,Gaim,Kopete...)

3
Esquema de funcionamiento

Servidor

Mensajes y
autenticación Mensajes y
Validación autenticación
y almacenamiento datos

Cliente Cliente
Base de datos

4
¿Qué es Jabber?

Jabber es un protocolo libre gestionado por la Jabber


Software Foundation basado en el estándar XML
para mensajería instantánea.

Es una alternativa libre y segura a servicios como


ICQ, AIM, MSN o Yahoo Messenger.

Más conocido como el Linux de la mensajería


instantánea.

5
Características
Protocolo abierto: Con todas las ventajas del
software libre, se puede programar un servidor o un
cliente o ver el código, entre otras cosas.

Estándar: ha sido aprobado bajo el nombre de XMPP por


el Internet Engineering Task Force (IETF). Sus
especificaciones han sido publicadas como RFC 3920 y
RFC 3921.

Descentralizado: Se puede crear un servidor para


Jabber, y se puede interoperar o unirse al resto de la
red Jabber. Similar al email.
Extensible: Se puede ampliar con mejoras sobre el
protocolo original. Las extensiones comunes son
manejadas por la Jabber Software Foundation.
6
Características

Seguro: Cualquier servidor Jabber puede estar aislado del exterior


(intranet). Se permite SSL para comunicaciones servidor-cliente y
algunos clientes aceptan GPG como encriptación de las
comunicaciones usando cifrado asimétrico.

Multiredes: Un transporte o pasarela permite comunicarse con


otros protocolos usados por clientes como MSN Messenger, ICQ,
AOL o Yahoo!.

Flexible: los usos de Jabber más allá de la MI incluyen


monitorización de red, sindicación de contenido, herramientas
de colaboración, compartición de archivos, juegos, supervisión
de sistemas remotos...
Diverso: una amplia gama de compañías y de proyectos de
software libre utilizan los protocolos Jabber para construir y
para desplegar sus productos y y servicios en tiempo real.
Libertad de elección de proveedor.
7
Ejemplo de comunicación

Servidor Jabber Servidor Jabber

cliente Jabber cliente Jabber

Cliente MSN
cliente Jabber
Pasarela Red MSN

Protocolo Jabber
Protocolo MSN

8
Servidores Jabber

9
Implementaciones

Implementación con Jabberd1


Más probado, más tiempo de desarrollo y más estable.

Existen paquetes para la mayoría de distribuciones

No utiliza MySQL de forma nativa.

Implementación con Jabberd2


Tiene más características que Jabberd1

Versión menos probada y por lo tanto menos estable


Es más difícil encontrar paquetes para la mayoría de distribuciones

Utiliza MySQL de forma nativa para autenticación y almacenamiento


de datos

10
Implementación con Jabberd1

Jabberd1 no tiene almacenamiento


de datos ni autenticación contra
bases de datos de forma nativa. Se
necesita descargar la extensión
xdb_sql.

Para más información:


http://libertonia.escomposlinux.org/story/2004/9/28/10813/1365

11
Implementación con Jabberd1

1. Instalar GNU Pth

2. Descargar Jabberd1 en /usr/local y compilar

3. Probamos el servidor

[root@server:/usr/local/jabberd-1.4.3]# ./jabberd/jabberd -h
servidor.dominio

4. Descargamos xdb_sql dentro del directorio donde


tenemos Jabberd1
5. Instalamos las cabeceras y ficheros de desarrollo de
MySQL (mysql-devel)

12
Implementación con Jabberd1

6. Modificamos el fichero Makefile de xdb_sql


# Uncomment the file that corresponds to your DB
xdb_sql_OBJECTS= \
xdb_sql_mysql.o \
xdb_sql.o \
xdb_sql_auth0k.o \
xdb_sql_auth.o \
xdb_sql_offline.o \
xdb_sql_register.o \
xdb_sql_config.o \
xdb_sql_querydef.o \
xdb_sql_roster.o \
xdb_sql_last.o \
xdb_sql_backend.o \
xdb_sql_vcard.o \
xdb_sql_filter.o \
xdb_sql_generic.o \
# xdb_sql_pgsql.o
# xdb_sql_odbc.o
all: xdb_sql.so

13
Implementación con Jabberd1

7. Compilamos xdb_sql
8. Creamos la base de datos
[root@server:/usr/local/jabber-1.4.3/xdb_sql]# mysql -u root -p
< sample_dabase.sql

9. Editamos el fichero xdb_sql.xml (sección


connection)

<!-- Configure information about the SQL connection -->


<connection>
<host>servidor.dominio</host>
<db>jabber</db>
<user>jabber</user>
<pass>tuclave</pass>
</connection>

14
Implementación con Jabberd1
10. Editamos el fichero jabber.xml (sección xdb)
<xdb id="xdb">
<host/>
<ns>jabber:iq:roster</ns>
<ns>jabber:x:offline</ns>
<ns>jabber:iq:filter</ns>
<ns>jabber:iq:last</ns>
<ns>jabber:iq:auth</ns>
<ns>jabber:iq:auth:0k</ns>
<ns>jabber:iq:register</ns>
<ns>vcard-temp</ns>
<load>
<xdb_sql>/usr/local/jabber-1.4.3/xdb_sql/xdb_sql.so</xdb_sql>
</load>
<jabberd:include>/usr/local/jabber-
1.4.3/xdb_sql/xdb_sql.xml</jabberd:include>
<load>
<xdb_file>./xdb_file/xdb_file.so</xdb_file>
</load>
<xdb_file xmlns="jabber:config:xdb_file">
<spool><jabberd:cmdline flag= s >./spool</jabberd:cmdline></spool>
</xdb_file>
</xdb>
15
Implementación con Jabberd2

De ahora en adelante se asumirá que se


ha seguido esta implementación para la
configuración del servidor, emisión de
mensajes del sistema...

16
Requisitos de Jabberd2
OpenSSL (versión 0.96 o superior)
Libidn (versión 0.3 o superior)
BD para almacenar datos
MySQL Oracle
Berkeley DB PostgreSQL

Sistema para autenticar


MySQL Oracle
Berkeley DB PostgreSQL
OpenLDAP PAM

17
Instalar Jabberd2

1. Descargamos el código fuente


2. Configuramos
./configure −−enable−mysql −−enable−ssl
−−enable−idn

3. Compilamos e instalamos

Los ficheros de configuración estarán en


/usr/local/etc/jabberd

18
Configuración del servidor
1. Establecer el hostname en sm.xml y en c2s.xml

sm.xml
<!−− Session manager configuration −−>
<sm>
<id>servidor.dominio</id>

c2s.xml
<!−− Local network configuration −−>
<local>
<id>servidor.dominio</id>

19
Configuración del servidor

2. Crear la base de datos jabberd2 y establecer la


configuración del usuario

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

3. Configurar sm.xml para usar MySQL como sistema de


almacenamiento.

<!−− Storage database configuration −−>


<storage>
<!−− By default, we use the MySQL driver for all
storage −−>
<driver>mysql</driver>

20
Configuración del servidor
3. Configurar sm.xml para usar MySQL como sistema de
almacenamiento.
<!−− MySQL driver configuration −−>
<mysql>
<!−− Database server host and port −−>
<host>localhost</host>
<port>3306</port>
<!−− Database name −−>
<dbname>jabberd2</dbname>
<!−− Database username and password −−>
<user>jabberd2</user>
<pass>secret</pass>
<transactions/>
</mysql>

21
Configuración del servidor

4. Configurar c2s.xml para usar MySQL como sistema de


autenticación
<!−− Authentication/registration database
configuration −−>
<authreg>
<!−− Backend module to use −−>
<module>mysql</module>

22
Configuración del servidor

4. Configurar c2s.xml para usar MySQL como sistema de


autenticación

<!−− MySQL module configuration −−>


<mysql>
<!−− Database server host and port −−>
<host>localhost</host>
<port>3306</port>
<!−− Database name −−>
<dbname>jabberd2</dbname>
<!−− Database username and password −−>
<user>jabberd2</user>
<pass>secret</pass>
</mysql>

23
Configuración del servidor

5. Probar el servidor
/usr/local/bin/jabberd

Existe un script llamado jabberd.rc en el directorio tools


que nos permitirá arrancar y parar el servidor
automáticamente
24
Otras tareas de configuración

Configurar Jabberd2 para conexiones SSL

Crear un usuario administrativo

Deshabilitar el registro público de cuentas

Habilitar que los usuarios puedan cambiar las


claves

25
Base de datos

authreg: almacena los usuarios registrados


queue: almacena los mensajes aún no entregados

roster-groups: almacena los grupos

roster-items: almacena los contactos

vcard: almacena la información personal de los


usuarios

26
Gestión de usuarios y contactos

usuarios jabberd2

Scripts de
sincronización

Aplicación de gestión Servidor Jabberd2


de usuarios

27
Ejemplo de script

28
Gestión de usuarios y contactos

jabberd2

Aplicación sin desarrollar


- Gestión de los usuarios
- Gestión de los contactos
- Gestión de los grupos

Servidor Jabberd2

29
Equipos clientes

Existen muchos clientes de Jabber

Fácil e intuitivo

Multiplataforma

Multiprotocolo

Otras características: grupos de conversación,


envío de mensajes a grupos, grupos anidados...

30
Equipos clientes

31
Emisión de mensajes automáticos

Insertando registros en la tabla queue.

Utilizando jabberd_alert.pl

Programando un script en php que haga uso de la


clase “class.jabber.php” http://cjphp.netflint.net

32
Insertar registros en la tabla queue

La tabla queue mantiene una lista de todos los


mensajes que aún no han sido entregados a sus
destinatarios.
Es una tabla que usa internamente el servidor
jabberd2, no se recomienda su alteración desde el
exterior.
Si el destinatario está conectado en el momento de la
emisión del mensaje no lo recibirá hasta que
desconecte y vuelva a conectar.

Es muy sencillo realizar un script que inserte registros


en esta tabla con el formato de los mensajes.

33
Utilizando jabberd_alert.pl

./jabber_alert.pl −e destinatario@dominio.com −n
emisor@dominio.com −w clave

e = jid del receptor


n = jid del emisor
w = clave del usuario emisor

34
Utilizando la clase class.jabber.php

35
Un caso de éxito, Provivienda

Provivienda tiene sus empleados en muchos centros


de trabajo.

Con el fin de ahorrar costes en teléfono y agilizar las


comunicaciones se venía empleando otro sistema de
mensajería instantánea.

Este sistema no permitía la sincronización con la


aplicación de gestión de los empleados, de tal forma
que todas las modificaciones habían de hacerse a
mano y distribuir los cambios.

36
Un caso de éxito, Provivienda

Los usuarios usan Jabber de forma transparente, no


necesitan conocer la tecnología subyacente.

Todos los empleados tienen todos los contactos en


los grupos (departamentos y centros de trabajo) a
los que pertenecen, sin importar los traslados, altas
ni bajas.

Disponen de información actualizada sobre el resto


de empleados (teléfonos, fax, dirección, email...).

Tienen una forma cómoda y rápida de compartir


ficheros e información.

37
Dudas y preguntas

38

También podría gustarte