Sugestões ? Dúvidas ? Envie-me um e-mail

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

Por exemplo: temos dois servidores Jabber de domínios diferentes. Vamos usar jabber.dominio.com.br e jabber.outrodominio.com.br. Imagine que em um dos servidores exista uma conta 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 usá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 para empresas com vários servidores/domínios (sejam eles locais ou remotos), como também para o uso de empresas que tem clientes com servidores Jabber próprios (que é o caso da Propus). Explicando: com a minha conta jabber da Propus eu adiciono todos os usuários de nossos clientes, sem a necessidade de ter uma conta em cada um deles. 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, é interessante que os mesmos consigam resolver o DNS dos domínios.

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 servidores que tem permissão de conexão ao seu servidor.


  • 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 (desde os tempos do Wildfire), que foi um dos primeiros (senão o primeiro servidor XMPP) a possuir tal recurso. Mais recentemente, o servidor XMPP ejabberd incorporou o recurso em sua versão 2.0, enquanto outros servidores como jabberd 1.4 e jabberd 2, até onde eu conheço (pois não os uso há muito tempo) não tinham 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.

8 comentários:

Anônimo disse...

Se os outros servidores Jabber não têm a opção para barrar indesejáveis (ou melhor liberar só os que são aceitáveis) sempre há a possibilidade de usar o iptables para barrá-los. De qq forma é sempre bom ter o conhecimento das possibilidades e limitações de cada serviço.

Marcelo Terres disse...

Realmente é uma possibilidade.

Bloquear a porta 5269 e liberar somente para IPs específicos. Funcionaria também.

Anônimo disse...

Um servidor Openfire ver 3.5.2 pode conectar sem problemas em outro servidor com ver 3.6.0

Marcelo Terres disse...

Sim, é totalmente possível.

Você pode conectar qualquer servidor Jabber (ejabberd, jabberd, gmail, openfire, wildfire, etc..) a qualquer outro usando o s2s. E não importa a versão.

Um abraço,

Julio disse...

Prezado Marcelo,
Estamos na fase de testes da solução openfire+spark em nossa empresa.
Temos uma floresta microsoft em 3 cidades: BH, RJ e SP. Já configuramos os servidores openfire de BH e de SP conforme as intruções deste tutorial. Porém não estamos conseguindo adicionar contatos de usuários de outro dominio. Como seria para adicionar o contato quando ele for de outro dominio? login@sp.empresa.com.br ou login@ip do server openfire? Quando é usuário do meu proprio dominio está ok. Basta colocar o login que ele mesmo já puxa o nome completo.
Poderia nos dar uma dica?
Agradecemos pela atenção.
Julio.

Marcelo Terres disse...

Júlio.

Você deve adicionar o usuário como um jid (jabber ID), ou seja, por exemplo mhterres@sp.empresa.com.br.

Com isso suponho que teu openfire tenha sido configurado com o nome sp.empresa.com.br e que esse nome consiga ser resolvido corretamente pelo DNS. Além disso, também é preciso que os servidores se conectem diretamente na porta 5269 e que o openfire esteja configurado com permissão para esse domínio no server 2 server.

Aguardo teu retorno para saber se funcionou :-)

[]s

Anônimo disse...

Prezado Marcelo
Tenho instalado o open-fire 3.6.2 e spark nas estações de minha rede. Dentro do escritório funciona perfeitament. Contudo surgiu a necessidade de contactar com mensagem instantanea em outro endereço externo.
Criei um Host pelo no-ip( tenho serviço velox com ip dinamico) e tentei usálo para que o computador externo achasse meu servidor mas não funcionou.
Gostaria de saber se é possível esta comunicação sem ter que instalar um outro servidor openfire em local externo?

Desd ejá muito grato

Marcelo Terres disse...

É preciso que você consiga acessar externamente a porta 5222 (ou 5223 se estiver usando SSL) de seu servidor.

Talvez seja preciso fazer algo no modem ou no firewall pra que isso ocorra, mas aí depende de seu servidor.

[]s

Postar um comentário