Sistema de Mensajería Instantánea Corporativa con Jabber y...

Post on 03-Aug-2020

17 views 0 download

Transcript of Sistema de Mensajería Instantánea Corporativa con Jabber y...

1

Rafael Matito

Sistema de Mensajería Instantánea Corporativa con Jabber y MySQL.

2

Objetivo

Sistema de mensajería instantánea corporativa basado en Software Libre.

Basado en estándares abiertos.

Facilidad de administración de los usuarios del sistema, de sus grupos y contactos.

Libertad de elección de servidor y clientes.

Bajo coste.

3

¿Qué necesitamos?

{Servidor JabberJabberd1

Jabberd2

Sistema Gestor de Bases de Datos (MySQL)

Aplicación de gestión de usuarios del sistema

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

4

Validacióny almacenamiento datos

Servidor

Cliente Cliente

Esquema de funcionamiento

Base de datos

Mensajes y autenticación Mensajes y

autenticación

5

¿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.

6

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.

7

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.

8

cliente Jabber

Servidor Jabber

Pasarela Red MSN

Cliente MSN

Protocolo Jabber

Protocolo MSN

Ejemplo de comunicación

Servidor Jabber

cliente Jabber

cliente Jabber

9

Servidores Jabber

10

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 almacenamientode datos

11

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

12

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)

13

Implementación con Jabberd1

6. Modificamos el fichero Makefile de xdb_sql

# Uncomment the file that corresponds to your DBxdb_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.oall: xdb_sql.so

14

7. Compilamos xdb_sql

Implementación con Jabberd1

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>

15

Implementación con Jabberd110. 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>

16

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...

17

Requisitos de Jabberd2

OpenSSL (versión 0.96 o superior)

Libidn (versión 0.3 o superior)

BD para almacenar datos

MySQL

Berkeley DB PostgreSQL

Sistema para autenticar

MySQL

Berkeley DBOpenLDAP PAM

Oracle

PostgreSQL

Oracle

18

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

19

Configuración del servidor

1. Establecer el hostname en sm.xml y en c2s.xml

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

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

sm.xml

c2s.xml

20

Configuración del servidor

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

2. Crear la base de datos jabberd2 y establecer la configuración del usuario

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

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

21

Configuración del servidor

<!−− 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>

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

22

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>

23

Configuración del servidor

<!−− 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>

4. Configurar c2s.xml para usar MySQL como sistema de autenticación

24

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

25

Otras tareas de configuración

Crear un usuario administrativo

Deshabilitar el registro público de cuentas

Habilitar que los usuarios puedan cambiar las claves

Configurar Jabberd2 para conexiones SSL

26

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

27

Gestión de usuarios y contactos

Aplicación de gestión de usuarios

Servidor Jabberd2

Scripts de sincronización

usuarios jabberd2

28

Ejemplo de script

29

Gestión de usuarios y contactos

jabberd2

Servidor Jabberd2

Aplicación sin desarrollar

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

30

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...

31

Equipos clientes

32

Emisión de mensajes automáticos

Insertando registros en la tabla queue.

Programando un script en php que haga uso de la clase “class.jabber.php” http://cjphp.netflint.net

Utilizando jabberd_alert.pl

33

Insertar registros en la tabla queue

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.

La tabla queue mantiene una lista de todos los mensajes que aún no han sido entregados a sus destinatarios.

34

Utilizando jabberd_alert.pl

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

e = jid del receptorn = jid del emisorw = clave del usuario emisor

35

Utilizando la clase class.jabber.php

36

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.

37

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.

38

Dudas y preguntas