segunda-feira, 18 de agosto de 2008

Openfire: comunicação entre servidores

Um ótimo recurso do protocolo XMPP é a possibilidade dos servidores conversarem entre si, permitindo assim a integração de diferentes domínios Jabber.

Exemplificando

Vamos supor que tenhamos dois servidores Jabber de domínios diferentes. Vamos dizer que o domínio jabber de um deles é jabber.dominio.com.br e o do outro é jabber.outrodominio.com.br. Imagine que em um dos servidores exista uma conta (JID) marcelo@jabber.dominio.com.br e no outro servidor exista a conta renata@jabber.outrodominio.com.br. Com a comunicação entre servidores, é possível que o usuário marcelo fale com a usuária renata sem que tenha de possuir uma conta no domínio jabber.outrodominio.com.br e vice-versa. Isso é extremamente prático e eficiente principalmente em empresas que possuam vários servidores/domínios XMPP (sejam eles locais ou remotos), como também para empresas que tenham clientes com servidores Jabber próprios (que é o caso da Propus). Explicando: com a minha conta jabber da Propus eu adiciono os usuários de nossos clientes, sem a necessidade de ter uma conta em cada um dos servidores. Isso é realmente muito útil.

Como configurar o Openfire para isso ?

A configuração é extremamente simples. Em primeiro lugar é necessário que os servidores consigam se comunicar entre si pela porta 5269 (jabber s2s - server to server). Além disso, é preciso que ambos consigam resolver o DNS dos domínios jabber configurados no Openfire (tanto do domínio local quanto do remoto), caso contrário não conseguirão se conectar.

Logue então no console admin do Openfire e vá em Servidor -> Configurações do Servidor - > Servidor para Servidor. Lá você irá se deparar com várias opções. Veja:
  • Serviço ativado: ativa ou desativa a comunicação servidor para servidor.


  • Configurações de Conexões ociosas: nessa opção você pode forçar que a conexão entre os servidores seja desativada após um período de inatividade (configurável).


  • Permitido conectar: essa opção é muito importante. Nela você irá determinar que servidores podem ou não conectar no seu servidor. Existem aqui duas opções:
  1. Qualquer um: com essa opção, qualquer servidor poderá se conectar ao seu servidor.
  2. Lista Branca: com essa opção, você irá definir uma lista de domínios jabber que tem permissão de conexão ao seu servidor. O domínio jabber é a porção que vem depois do @ no JID do usuário. Ex: marcelo@xmpp.empresa.com.br. O domínio jabber é xmpp.empresa.com.br.


  • Não permitir conexão: aqui você deve informar os servidores que não podem se conectar ao seu servidor. Essa lista só faz sentido se você escolher a opção Qualquer um no item Permitido Conectar.


Do meu ponto de vista, a lista branca é um recurso muito importante pelo fato de poder garantir o uso correto do comunicador (principalmente em ambiente empresarial), negando a integração com outros servidores (como Google Talk, por exemplo).
Essa é uma feature antiga do Openfire (existe desde os tempos do Wildfire), que foi um dos primeiros (senão o primeiro) servidores XMPP a possuir tal recurso. Mais recentemente, o servidor XMPP ejabberd incorporou o recurso em sua versão 2.0, enquanto que outros servidores como jabberd 1.4 e jabberd 2, até onde eu conheço (pois não os uso há muito tempo) , não possuem tal recurso, permitindo a conexão com qualquer outro servidor.

Fica aí então a dica para quem quer integrar vários servidores Openfire distintos, que apesar de ser um recurso simples e de fácil configuração, acaba dando trabalho para muitos administradores da ferramenta.

PS: o post foi atualizado em 30/05/2010, com algumas novas explicações.