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.

Openfire: comunicação entre servidores
  • Anonymous

    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.

  • Realmente é uma possibilidade.<BR/><BR/>Bloquear a porta 5269 e liberar somente para IPs específicos. Funcionaria também.

  • Anonymous

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

  • Sim, é totalmente possível.<BR/><BR/>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.<BR/><BR/>Um abraço,

  • Prezado Marcelo,<BR/>Estamos na fase de testes da solução openfire+spark em nossa empresa.<BR/>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@

  • Júlio.<BR/><BR/>Você deve adicionar o usuário como um jid (jabber ID), ou seja, por exemplo mhterres@sp.empresa.com.br.<BR/><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

  • Anonymous

    Prezado Marcelo<BR/>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.<BR/>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.<BR/>Gostaria de

  • É preciso que você consiga acessar externamente a porta 5222 (ou 5223 se estiver usando SSL) de seu servidor.<BR/><BR/>Talvez seja preciso fazer algo no modem ou no firewall pra que isso ocorra, mas aí depende de seu servidor.<BR/><BR/>[]s

  • Bom dia Marcelo,<br /><br />estou tentando fazer servidores integrados ao AD (alocados em unidades diferentes da empresa que trabalho) &quot;conversarem&quot; (server 2 server) e fazer com que os usuários de cada domínio possam se comunicar entre si… segui todos os passos descritos por você mas não tive sucesso. Testei a comunicação na porta 5269 e todos os servidores respondem (não há firewall

  • bom dia quando tento add outro user do outro servidor a seguinte mensagem aparece mas não consigo resolver<br /><br />* Aviso: Usuários remotos ou entidades devem aceitar subscriçõse de presença automaticamente.

    • Rodrigo,

      Na campo de pesquisa de grupo defina o “Modo Posix” como NÃO.

      No meu caso funcionou.

  • É necessário que o usuário aceite que outros usuários o adicionem de forma automática.<br /><br />Isso precisa ser configurado no cliente.<br /><br />[]s

  • Desculpe como faço isso???<br /><br />Estou batendo cabeça nesse ponto pode me ajudar Marcelo?<br /><br />Uso o spark como client

  • Oi Rodrigo.<br /><br />Não saberia te dizer pois não uso Spark.<br /><br />Mas deve ser uma opção que existe nas preferências da conta.<br /><br />[]s

  • Anonymous

    tb nao consegui ..

  • Bom dia pessoal, gostaria de saber se tem como tipo o dominio é http://www.meudominio.com.br o nome do servidor é www eu gostaria que os usuário logasse com usuario@meudominio.com.br é possivel?

  • Olá.<br /><br />Para isso funcionar você precisa configurar o &quot;Nome do Servidor&quot; no Openfire como meudominio.com.br.<br /><br />Também é preciso que meudominio.com.br resolva para o IP externo do teu servidor.<br /><br />[]s

  • Ola Marcelo.<br />Por favor, verifique se pode me ajudar.<br />Estou tentando realizar a integração do openfire entre 2 empresas. Contudo, as empresas só possuem domino local (@empresa1.local e @empresa2.local), é possivel interliga-los?<br />Ambas as empresas possuem IP fixo. Ja fizemos as liberações da porta 5269 e incluimos os endereços dos servidores, mas nao conseguimos conectar.<br />

    • Tal integração não funcionará se você quiser utilizar um link Internet normal para comunicação com os domínios locais, pois um servidor não saberá como chegar no outro.<br /><br />O que você pode fazer é colocar um DNS dinâmico nas pontas (só para ter um nome que resolva para um válido da internet) e mandar ele resolver no IP fixo. Ex: empresa1xmpp.no-ip.org resolve para o IP fixo da empresa 1 e

  • Ola,<br /><br />Já configuramos o open fire e spark para funciona na filiam e matriz da empresa que ficam em cidades diferentes. Temos VELOX nas duas empresas.<br /><br />O que eu posso fazer para que os usuários de uma empresa possam teclar com os da outra?<br /><br />Se minha pergunta estiver redundante, me desculpem. E que não sou tão experiente para posso aprender.<br /><br />

  • Oi Warley.<br /><br />Você deve seguir as indicações deste post. Aqui constam todas as informações necessárias para conseguir integrar os servidores (que precisam ser de domínios diferentes).<br /><br />Se tiver dúvidas, pode me mandar um e-mail (tem ali na barra esquerda).<br /><br />[]s

  • Anonymous

    Olá chará<br /><br />Eu configurei dois servidores openfire 3.7.1 baseado no linux e não obtive sucesso. Pedi ajuda no site da Ignite mas não obtive resposta. <br /><br />http://community.igniterealtime.org/message/225784#225784<br /><br />Você poderia me dar uma luz nessa?<br /><br />Desde já obrigrado Marcelo

  • Olá.<br /><br />Se entendi bem você configurou o domínio jabber (o que vem após o @ no JID) dos Openfires com o nomes servmess e servmess1, correto?<br /><br />Te sugiro também adicionar os registros SRV no teu servidor DNS:<br /><br />http://mundoopensource.blogspot.com.br/2011/05/openfire-e-os-registros-srv-do-dns.html<br /><br />[]s<br />

  • Ola boa tarde eu consegui certinho aqui so que no outro server a pessoa fica aparecendo off line no outro server

    • Olá.<br /><br />Logue no console admin e vá em Sessões -&gt; Sessões do servidor.<br /><br />Verifique então se os servidores estão se comunicando nas duas direções (setas verdes para ambos lados).<br /><br />[]s

  • Ola Marcelo isso ta sim uma seta verde e outra azul<br /><br />

    • Então deve haver algum problema de comunicação entre os servidores.<br /><br />[]s

  • O que poderia ser tem alguma idéia

    • Dá uma olhada nos logs de ambos servidores.<br /><br />Lá deve ter uma pista do problema.<br /><br />[]s

  • deu certo aqui, mais consegui so adicionando o amigo de outro server e pede autotizacao quando add no server mais funfo certinho.

  • Win

    Ola gente, por acaso alguém conseguiu fazer server to server dentro da própria rede (VPN), não quero dar acesso externo para ninguém (acesso internet), mas eu queria que dentro da minha VPN, um servidor encontrasse o outro.

    • mhterres

      Se você usa subdomínios distintos, basta que ambos servidores saibam resolver os nomes e que ambos consigam se comunicar pela porta 5269.

      Com isso resolvido, basta adicionar pelo menos um usuário do domínio do servidor A nos contatos de um usuário do domínio do servidor B e vice-versa, que está resolvido.

      []s

  • Cleiton Johnson

    Eu entendi direitinho e já montei aqui os servidores mas não consegui entender como um servidor vai procurar o outro já que não tem nenhum campo onde colocar o domínio do outro servidor. Como eles vão se enxergar na internet???
    se alguem quiser me ajudar cleitonjcs@live.com

    • Olá.

      Quando você adicionar um contato do servidor A no servidor B, ou vice-versa, ao tentar contatar este usuário ele irá conectar entre os servidores.

      Para isso ele irá usar o domínio do JID (Jabber ID), ou seja, tudo que vier após o @ do contato. Ele irá tentar localizar via registros SRV do DNS, e, por último, pela simples resolução do domínio.

      []s

      • Cleiton Johnson

        Ah, entendi. Então terei que refazer os cadastros dos usuários nos dois servidores já adicionando o domínio? Não quero usar Ad. Eles estão castrados só com o nome mesmo. E também tenho que adicionar todos os usuários do servidor B um por um e repetir isso em todos os usuários do servidor A?

        • Na realidade isso não tem a ver com o cadastro dos usuários em si, e sim com o roster deles (o cadastro de contatos de cada um). Isso pode ser feito por grupo ou então um a um, onde tu loga no cliente XMPP do usuário e adiciona os contatos dele.

          Se tu fizer com grupos, para adicionar os usuários remotos tu vai ter que adicionar no grupo o usuário com o domínio (ex: marcelo@xmpp.dominioB.com.br). Os locais tu adiciona somente com o uid.

          []s

Floating Social Media Icons by Acurax Wordpress Designers
Optimization WordPress Plugins & Solutions by W3 EDGE
%d blogueiros gostam disto: