Ejabberd

1 Instalacion y configuracion inicial de ejabberd

  1. Instalar ejabberd Ejabberd se encuentra en los repositorios oficiales, asi que lo instalaremos via apt-get:

    apt-get update
    apt-get install ejabberd
  2. Crear registros en el dns Por supuesto se necesitan los registro de host.my.domain directos e inversos en el DNS, ademas de los propios del Jabber. No olvideis substituir host.my.domain por vuestro dominio.

    _xmpp-server._tcp.jabber.my.domain.       21600    IN      SRV    5       0       5269    host.my.domain. _xmpp-client._tcp.jabber.my.domain.       1600     IN      SRV    5       0       5222    host.my.domain. _jabber._tcp.jabber.my.domain.            21600    IN      SRV    5       0       5222    host.my.domain.
  3. Editar el fichero de configuracion /etc/ejabberd/ejabberd.cfg

    1. Primero añadiremos un dominio

      {hosts, ["jabber.my.domain"]}.

      O varios, usando dominios virtuales:

      {hosts, ["jabber.my.domain","jabber1.my.domain"]}.

      Nota: Los nombres de los servidores tienen que ser resultos por el DNS

    2. Para permitir el inicio de sesion añadiremos la siguiente linea por cada dominio:

      {host_config, "jabber.my.domain", [{auth_method, [internal]}]}.
    3. El acceso web viene habilitado por defecto con la siguiente linea:

      {5280, ejabberd_http,    [
                                http_poll, 
                                web_admin]
      }
  4. Para habilitar el acceso mediante ssl (https://host:5280/admin) agregaremos las siguientes lineas, por supuesto ya tenemos que tener el cerificado creado:

    • {5280, ejabberd_http,    [
                                http_poll, 
                                web_admin,
                                tls, {certfile, "/etc/ejabberd/ejabberd.pem"}
      ]}
    • En Debian Lenny, cuando habilitamos tls en la configuracion de los puertos (5222, 5223) por defecto se genera el archivo /etc/ejabberd/ejabberd.pem, de todas maneras si necesitamos generar el certificado a mano tenemos los siguientes comandos para ello:

      openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out ejabberd.pem
      openssl rsa -in privkey.pem -out privkey.pem
      cat privkey.pem >> ejabberd.pem
      rm privkey.pem

2. Reiniciar el ejabberd

  1. Reiniciamos ejabberd
    # /etc/init.d/ejabberd restart
    ó
    # invoke-rc.d ejabberd restart
    ó 
    # ejabberdctl restart

    Para saber si el ejabberd funciona podemos ejecutar:

    ejabberdctl status

3 Gestion de usuarios

  1. Para añadir un usuario se ha de ejecutar:
    # ejabberdctl register <username> <server> <password>
  2. Si quiere añadir una cuenta para otro dominio virtual:
    # ejabberdctl register pepe jabber1.my.domain 123
  3. Para quitar un usuario:
    # ejabberdctl unregister <username> <server>
    • Funcionando de esta manera se pueden crear salas automáticamente y los usuarios se pueden autoregistrar.

      Nota: Podemos acceder a la interfaz web a traves de http://host.my.domain:5280/admin/

4 Establecimiento de políticas:

Estableceremos una lista de control de acceso.

  1. Si queremos evitar el registro automatico de usuarios editamos el fichero /etc/ejabberd/ejabberd.cfg y añadimos la siguiente linea:
    {access, register, [{deny, all}]}.
    Ahora comentamos el modulo mod_register, dejandolo asi:
    %  {mod_register,   [{access, register}]},
  2. Para darle permisos a un usuario como administrador:
    {acl, admin, {user, "username"}}.
    • En caso de dominios virtuales quedaria algo parecido a esto:
      {acl, admin, {user, "eaf","jabber.my.domain"}}.
      {acl, admin, {user, "eaf","jabber1.my.domain"}}.

5 Sobre la estructura de las listas de control de acceso

Estructura de una acl:

6 Ejemplos útiles sobre listas de control de acceso

Para la cuestión de las salas o conferencias es lo referido al módulo muc:

Otro ejemplo más restricctivo:

Con este ejemplo: a)-Sólo los usuarios de la regla "autorizados" pueden acceder a las salas b)-Sólo el administrador puede crear salas c)-Sólo los administradores tienen privilegios administrativos(admins).

Una opcion muy util es guardar las conversaciones (en html)

Para el módulo irc:'

Para transferencia de ficheros a través de http:

Anexo 1 - Funcionalidades del ejabberdctl

He aqui una breve descripción de las principales opciones de ejabberd:

  • status -> obtiene el estado del servidor ejabberd.

  • stop -> detiene el servidor ejabberd.

  • restart -> reinicia el servidor ejabberd.

  • reopen-log -> reabre el fichero de log.

  • register user server password -> registra a un usuario en un servidor.

  • unregister user server -> elimina a un usuario de un servidor.

  • backup file -> almacena la base de datos en un fichero.

  • restore file -> restaura la base de datos desde un fichero.

  • install-fallback file -> instala una base de datos desde un fichero.

  • dump file -> vuelca el contenido de la base de datos a un fichero de texto.

  • load file -> restaura la base de datos de un fichero de texto.

  • import-file file -> importa la base de datos de usuario de un fichero spool.

  • import-dir dir -> importa la base de datos de usuario de un directorio de spool.

  • registered-users -> lista todos los usuarios registrados.

  • delete-expired-messages -> elimina todos los mensajes de “fuera de linea”, que han expirado, del servidor.


Recursos consultados:

Sobre conexión con mysql:

* http://samueladam.net/2008/03/19/install-ejabberd-xmpp-server-mysql (Esto es una utilización extra)