El JID y la dirección email (de nuevo)

Han pasado 5 años desde aquel artículo publicado en el extinto DebianCuba y sigo viendo, alguna que otra vez, JID corporativos tales como pepito@jabber.dominio.cu, juancito@chat.dominio.cu o robertico@im.dominio.cu, que no se corresponden con las direcciones de correos, típicamente del tipo usuario@dominio.cu.

Aunque no creo que la Wayback Machine vaya a dejar de existir, reproduciré el artículo aquí. Los registros necesarios que hay que introducir en el DNS están documentados en:

Jabberd2 en Sarge y porque el JID igual al email

La necesidad de sistemas de mensajería instantánea corporativos, sumada a la fama que ganó Jabber/XMPP luego que Google lo escogiera como base de su servicio de mensajería instantánea, ha propiciado un aumento de servidores Jabber en el país.

La gran mayoría de las personas que usan la red ya tienen una dirección de correo electrónico, por ejemplo: moya@infomed.sld.cu.

Existen otras tecnologías que usan identificadores al estilo de las direcciones de correo electrónico. Pueden enumerarse: Jabber, GPG, Monotone, Arch, SIP, IAX, entre otras.

¿Por qué no continuar la tradición? ¿Por qué no tener un mismo ID para todos los servicios? La ubicuidad que esto propicia beneficiaría en primer lugar a los usuarios. Estos, además, sólo tendrían que memorizar un solo ID para usar los servicios. Tendrían también la posibilidad de dar su contacto a un amigo con sólo decir: soy moya@infomed.sld.cu.

No sería muy confortable, ya que soy moya@infomed.sld.cu por el correo, tener que ser, además, moya@jabber.infomed.sld.cu por el Jabber, moya@arch.infomed.sld.cu por el Arch y moya@sip.infomed.sld.cu por tener VoIP.

A continuación una guía rápida sobre como configurar Jabberd2 en Sarge de forma tal que el JID sea igual al email.

  1. Instalar el paquete jabberd2-ldap-mysql usando los backports para Sarge.

    # echo "deb http://ftp.sld.cu/debian-backports" >>/etc/apt/sources.list
    # apt-get update
    # apt-get install jabberd2-ldap-mysql
    
  2. Adicionar los registros necesarios en el DNS para que nuestro servidor sea encontrado en Internet. Para nuestro ejemplo adicionaríamos:

     _jabber._tcp.infomed.sld.cu. IN SRV 5 0 5269 algun-servidor.infomed.sld.cu.
     _xmpp-server._tcp.infomed.sld.cu. IN SRV 5 0 5269 algun-servidor.infomed.sld.cu.
     _xmpp-client._tcp.infomed.sld.cu. IN SRV 5 0 5222 algun-servidor.infomed.sld.cu.
    
  3. Configurar el servidor para que use infomed.sld.cu como dominio de jabber de los usuarios locales.

    • Editamos /etc/jabberd2/c2s.xml y escribimos infomed.sld.cu en las etiqueta <id> que está dentro de la etiqueta <local>.
    • Editamos /etc/jabberd2/sm.xml y escribimos infomed.sld.cu en la etiqueta <id>.

Sólo faltaría arrancar el servidor con:

# invoke-rc.d jabberd2-ldap-mysql start

El quid del asunto está en el punto 2. Cuando el usuario user@dom1.org envía un mensaje instantáneo a user@dom2.org, el servidor Jabber de user@dom1.org busca un registro SRV para _xmpp-server._tcp.dom1.org en el DNS y trata de envíar el mensaje al servidor referido. De no existir el registro SRV, se busca un registro A para dom1.org directamente. De esta forma, podemos independizar, incluso a nivel de puerto, el dominio del JabberID del nombre del servidor en donde está corriendo el servidor Jabber.

Si planeas el despliegue en una empresa, es probable que desees tener los mismos usuarios del correo electrónico en el Jabber.

Aún sin tener LDAP esto es lograble gracias a la flexibilidad de autenticación que brinda Jabberd2. Se puede usar el script adjuntado para autenticar contra el servidor POP3 de la empresa.

Para usarlo:

  1. Copiamos el script a un directorio, por ejemplo, a /usr/local/sbin/pipe-auth-pop3.pl.

  2. Editamos /etc/jabberd2/c2s.xml

    • Escribimos pipe en la etiqueta <module> que está dentro de la etiqueta <authreg>.
    • Escribimos /usr/local/sbin/pipe-auth-pop3.pl en la etiqueta <exec> que está dentro de la etiqueta <pipe>.
    • Eliminamos la etiqueta <enable /> que está dentro de la etiqueta <register> para deshabilitar el registro automático de usuarios.
  3. Editamos /etc/jabberd2/sm.xml y escribimos dentro de la etiqueta <user> para que se cree automáticamente el espacio de almacenamiento de los datos de sesión.

Finalmente reiniciamos el servidor

Notas: