O Servidor XMPP prosody
Á hora de instalar un servidor do protocolo XMPP (Jabber) para mensaxería interna nunha rede local, moitos elixen jabber, ejabberd ou openfire, pero aínda que funcionais, estas aplicacións poden chegar a demandar bastantes recursos.
Se un posúe unha rede pequena ou mediana e só desexa un simple servizo de mensaxería instantánea, afortunadamente existe unha alternativa de servidor livián chamada prosody, que aínda que está programado en LUA que é unha linguaxe interpretada, segundo os seus desenvolvedores funciona moi ben grazas a luajit.
Instalación
O primeiro paso é engadir o repositorio oficial de Prosody.
Engadimos a seguinte liña ao ficheiro /etc/apt/sources.list ou a un ficheiro con extensión .list dentro do directorio /etc/apt/sources.list.d/ como pode ser prosody.list
deb http://packages.prosody.im/debian stable main
No caso de que a distribución fose diferente da debian actual (jessie), habería que cambiar a palabra stable polo nome da distribución de (Debian: wheezy. Ubuntu: trusty, utopic, precise ...).
Engadimos tamén a chave do repositorio
wget https://prosody.im/files/prosody-debian-packages.key
apt-key add prosody-debian-packages.key
Actualizamos os repositorios e instalamos o paquete prosody
apt-get update
apt-get install prosody
Configuración básica
A configuración de Prosody é mantida nun só arquivo, prosody.cfg.lua que se atopa dentro /etc/prosody/
A configuración está dividida en dúas partes. A primeira parte é coñecida coma a sección "global". Todos os axustes daquí aplícanse ao servidor completo, e son a configuración por defecto para todos os host virtuais.
A segunda metade do arquivo é unha serie de VirtualHost e definicións de compoñentes. Os axustes baixo cada VirtualHost ou cada Compoñente aplícanse soamente a ese host virtual ou compoñente.
Engadir Host Virtuais
Un host virtual en Prosody é un dominio no cal se poden crear contas de usuario. Por exemplo se vostede quere que os seus usuarios teñen enderezos como john.smith@example.com entón vostede necesita engadir un host virtual chamado "example.com".
Engadir un host virtual ao servidor é tan fácil como engadir unha liña ao arquivo de configuración baixo os axustes globais. Para example.org, un engadiríase:
VirtualHost "example.org"
Todas as opcións baixo este encabezamento aplicaranse soamente a este anfitrión ata o seguinte VirtualHost ou liña coa directiva Component. Hai que ter coidado sempre de engadilo no lugar correcto despois de todas as opcións globais.
Nota: O nome host "virtual" é utilizado en configuración para evitar confusión co host físico real no que se instala Prosody. Unha soa instancia de Prosody pode servir moitos dominios, cada un definido como entrada de VirtualHost á configuración de Prosody. Un servidor que ofrece un só dominio tería unha única entrada de VirtualHost.
Encriptación
Todo host virtual, necesita un certificado e unha chave privada. O FQDN do certificado deberá ser o mesmo que o nome do host virtual. Deberemos introducir as rutas aos ficheiros que teñen a chave privada e o certificado dentro da configuración do host virtual.
ssl = {
key = "/etc/prosody/certs/example.com.key";
certificate = "/etc/prosody/certs/example.com.crt";
}
Administradores do sitio
Hai que indicar tamén quen é o administrador de cada host virtual:
admins = { "admin1@example.com", "admin2@example.com" }
Autenticación
Por defecto a autenticación faise mediante texto plano
authentication = "internal_plain"
Tamén poderiamos indicar:
- internal_plain: Chaves en texto plano almacenadas de xeito privado pola aplicación Prosody.
- internal_hashed: Chaves hash almacenadas de xeito interno por Prosody
- cyrus: Integración con Cyrus SASL (LDAP, PAM, …)
- anonymous: Mecanismo SASL "anónimo" con usuarios aleatorios sen contrasinal.
Creación de contas de usuario
Os usuarios de Prosody, a non ser que empreguemos outro tipo de autenticación non son usuarios do sistema. Prosody ten unha aplicación chamada prosodyctl para crear usuarios
prosodyctl adduser tom@example.com
Pediranos introducir dúas veces o contrasinal. Tamén podemos indicar todo nunha liña
prosodyctl register salvatore example.com mypassword
Grupos de usuarios
O módulo mod_groups permite aos administradores definir grupos de usuarios que farán que lle aparezan aos usuarios na súa lista de contactos sen ter que engadilos manualmente.
Para habilitar o módulo engadimos:
modules_enabled = {
-- Other modules
"groups"; -- Enable mod_groups
}
groups_file = "/etc/prosody/sharedgroups.txt"
Un exemplo do ficheiro de usuarios é o seguinte:
[Support Team]
support@example.com
john.doe@example.com
[Development Team]
hardworkingdeveloper@example.net=Joe Coder
other.dev@example.com=Mel
Os dous últimos, teñen un nome predefinido, que será o que lle apareza a cada un dos usuarios no listado.
Rexistros DNS
O protocolo XMPP protocol xestiona rexistros de tipo SRV, como por exemplo para o dominio example.org, pódense crear os seguintes rexistros:
#srvce.prot.owner-name [ttl] [class] rr pri weight port target
_xmpp-client._tcp.example.org. IN SRV 10 100 5222 im.example.org.
_xmpp-server._tcp.example.org. IN SRV 10 100 5269 im.xample.org.
im.example.org. A 192.0.2.12
sendo 192.0.2.12 o enderezo IP do servidor XMPP.
No caso de que o servidor DNS empregado fose dnsmasq introducimos
srv-host=_xmpp-server._tcp.example.org,im.example.org,5269,10,100
srv-host=_xmpp-client._tcp.example.org,im.example.org,5222,10,100