sábado, 27 de outubro de 2007

Openfire - uma análise mais completa

Tenho percebido uma grande movimentação em meu blog que vem de pessoas que a cada dia que passam buscam mais e mais informações sobre Jabber (XMPP - leia mais aqui e aqui), mais especificamente sobre o servidor Jabber Openfire.

O Openfire é um servidor Jabber desenvolvido em Java pela Ignite Realtime. Acompanho o mesmo desde os tempos em que se chamava Wildfire e ainda estava na versão 2.x. Desde lá ele passou por inúmeras melhorias, recebendo mais recursos e aprimorando os que já existiam (como a autenticação LDAP, por exemplo).

O Openfire tem uma gama imensa de recursos, sendo que do meu ponto de vista um dos mais interessantes é o uso de plugins, que permitem extender as funcionalidades do servidor.
Existe quase uma dezena de plugins disponíveis (e outros que já estão em desenvolvimento), dos quais dois eu acho que merecem um destaque especial:
  • Asterisk-IM que "integra" o Openfire com seu servidor Asterisk
  • Gateway IM que integra sua rede Jabber com outros protocolos como MSN, ICQ, AIM, etc... Este em particular eu já havia usado em sua versão Beta, época em que cada transporte (gateway) era um plugin diferente e bastante instável. Nessa última versão (que já não é mais beta) o plugin está muito melhor e mais prático.
Poderia também citar os demais, que são: Broadcast (para mandar mensagens de broadcast para os usuários), Content Filter (para implementar filtro de conteúdo) entre outros.

E a instalação ?

Requisitos básicos para instalação: Java JRE (recomendo a versão 6 update 3), MySQL (dê preferência para a versão 5, que tem suporte a replicação) e um servidor LDAP (opcional, que pode ser usado para autenticação).

Como meu negócio é software livre, eu vou falar da versão pra Linux, é claro.
A instalação é toda via Browser. Antes é claro você precisará abrir o .tar.gz que você baixou (ou instalar o .rpm), instalar o MySQL, criar o DB, o usuário do DB e dar as permissões de acesso ao mesmo. Depois disso basta apontar o browser para o domínio, na porta 9090 e seguir os passos (ex: http://localhost:9090). Claro que isso irá instalar um servidor básico. O resto das configurações são depois feitas pela interface web de administração, ou editando o arquivo openfire.xml que fica na pasta conf, dentro da pasta Openfire.

Já instalei o servidor, e agora ?

Depois do servidor instalado se você estiver usando LDAP para autenticar os usuários e se tiver feito tudo corretamente, basta começar a configurar e conectar os clientes.
Se você não usar LDAP será necessário logar na interface administrativa e criar os usuários e grupos manualmente. Nesse aspecto o Openfire é super bacana. Você pode criar grupos de usuários que se enxergam automaticamente entre si, fazendo com que não seja necessário que os usuários se adicionem uns aos outros na suas listas. Você pode criar vários grupos e fazer com que eles se vejam ou não. Você pode inclusive colocar nos grupos usuários de outros domínios jabber, já que você pode interconectar as redes usando o protocolos s2s.
Essa é outra feature muito legal do Openfire. Você pode permitir que seu servidor se conecte a qualquer outro servidor Jabber, ou você pode fazer uma black list de servidores que não podem ser conectar ao seu servidor, ou ainda uma whitelist só com os servidores que podem ser conectar. No caso da empresa onde trabalho, nosso servidor se conecta somente aos servidores jabber de nossos clientes e com isso podemos incluir contatos dos nossos clientes sem precisar ter um usuário jabber na rede deles. Muito prático.
Outro recurso disponível é a criação de salas de conferência. Você pode configurar os membros que podem acessar a sala, uma senha para acesso e uma série de opções que possibilitam e/ou limitam o que os membros podem fazer na sala.
As mensagens offline também tem uma configuração específica. Você pode armazenar as mesmas (e configurar o que fazer quando o limite de espaço de armazenamento for excedido), pular (não armazenar e informar o remetente) ou liberar (não armazenar e nem avisar o remetente que a mensagem não será entregue).
Com relação a auditoria (que é recurso pelo qual tenho percebido grande interesse por parte dos visitantes do blog), é possível configurar o Openfire para armazenar as mensagens em arquivos de logs (separados por usuário) em uma pasta a ser espeficada, até um limite de espaço a ser determinado (por usuário e total). Você pode configurar por quantos dias os logs serão armazenados (pode ser indefinidamente) e os pacotes a serem auditados. Também é possível informar uma lista de usuários que não deverão ser auditados. Quanto a auditoria, 2 questões devem ser esclarecidas: primeiro, o Openfire não tem um visualizador de logs de auditoria, cabendo a você desenvolver um próprio e segundo, se você utilizar gateways para outros protocolos (MSN, ICQ, etc...) essas mensagens também serão auditadas, o que parece ser algo pelo qual os administradores tem tido muito interesse ultimamente.
Outro recurso que pode ser importante, dependendo da situação é possibilidade de ativar compressão entre o cliente e o servidor. Isso pode ajudar a diminuir o uso de banda em conexões de pouca largura.
Acho que por último e não menos importante também é a capacidade do Openfire de transferir arquivos (ou desabilitar essa feature) entre os clientes. É um padrão do protocolo XMPP, mas merece certamente ser citado, pois muitas pessoas tem dúvidas se isso é possível com Jabber.
Obviamente existem outros recursos que poderiam ser citados mas acho que os principais já foram elencados acima.

E o que vem pela frente ?

A última versão estável é a 3.3.3 sendo que a 3.4 está em desenvolvimento (o programa de beta testing vai até o dia 31 de outubro - próxima quarta) e sua principal novidade será o suporte a clustering permitindo distribuir a carga entre vários servidores que servem o mesmo domínio, além é claro de diminuir o downtime, pois caso uma máquina falhe outra irá continuar atendendo.

Concluindo...

Do meu ponto de vista o Openfire é o servidor que oferece os melhores recursos entre todos os servidores Jabber que conheço e eu com certeza o recomendo para pequenas e médias instalações.
Como já disse num post anterior, não sei informar se ele seria capaz de atender um domínio como o jabber.org, por exemplo, ou que hardware seria necessário para suportar a média de 8000 conexões simultâneas deste.
Se você quiser testar, por favor depois me relate como foi sua experiência.

UPDATE (28/10 - 15:39): Informações adicionais sobre os bancos de dados suportados foram adicionados nos comentários.

UPDATE (25/01): Criada a lista de e-mail Openfire-BR. Saiba mais.