XMPP na Prática: Comunicação Instantânea com Openfire e Spark

1. O que é XMPP

Protocolo de mensagens instantâneas aberto, baseado em XML.
Permite comunicação assíncrona em tempo real entre usuários.
Projetado para ser federado, extensível e seguro.


2. Por que usar XMPP em 2025

  • Comunicação interna 100% offline
  • Não depende de serviços externos
  • Funciona bem mesmo em redes lentas ou isoladas
  • Ideal para empresas, escolas, repartições públicas, unidades operacionais
  • Permite integração com bots, sistemas e automações

3. Instalando o Openfire

wget https://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_4.7.5_all.deb -O openfire.deb
sudo apt install ./openfire.deb -y
sudo systemctl enable openfire
sudo systemctl start openfire

Acesse a interface de administração:
http://SEU_IP:9090


4. Configurando o servidor

  • Escolha o modo de armazenamento: banco interno, MySQL, PostgreSQL
  • Defina o domínio: exemplo chat.intranet.local ou IP local
  • Crie o usuário administrador
  • Conclua o setup básico

5. Criando usuários

Acesse o painel:
http://SEU_IP:9090

Menu: Users/Groups > Create New User

Exemplo de usuários:
ana, joao, admin, infra, diretoria


6. Instalando e usando o Spark

Baixe em:
https://igniterealtime.org/downloads/index.jsp#spark

Configuração:

  • Server: IP ou domínio do Openfire
  • Username: usuário criado
  • Password: senha definida
  • Resource: opcional

7. Testando a comunicação

Com dois clientes Spark:

[email protected] envia mensagem para [email protected]
Mensagens são entregues instantaneamente.
Suporte a histórico, status online/offline, envio de arquivos.


8. Plugins essenciais

Instalação pelo painel:
Plugins > Available Plugins

Nome do PluginFunção Principal
Monitoring ServiceRegistro de conversas (mensagens privadas e grupos)
BroadcastEnvia mensagem para todos os usuários conectados
User Import ExportImporta/Exporta usuários via CSV/XML
Client ControlRestringe recursos dos clientes (envio de arquivos, etc)
HTTP File UploadSuporte ao envio de arquivos via XMPP
Packet FilterFiltro de pacotes XMPP (firewall interno)

9. Monitoramento e logging

Com o plugin Monitoring Service:

Painel:
http://SEU_IP:9090/plugins/monitoring/archive-search.jsp

Permite buscar por:

  • Mensagens entre usuários
  • Palavras-chave específicas
  • Participação em salas de grupo
  • Datas e horários

10. Integração com AD/LDAP

Durante o setup ou via painel:
Server Settings > Profile Settings

Parâmetros comuns:

  • Host: IP ou nome do controlador de domínio
  • Base DN: dc=empresa,dc=local
  • Admin DN: cn=Administrador,cn=Users,dc=empresa,dc=local
  • Atributos: sAMAccountName, mail, cn

Resultado:
Login com conta do domínio e sincronização automática de usuários e grupos.


11. Bots com Python (exemplo simples)

pip install slixmpp
import slixmpp

class AlertaBot(slixmpp.ClientXMPP):
    def __init__(self, jid, senha, destino, msg):
        super().__init__(jid, senha)
        self.destino = destino
        self.msg = msg
        self.add_event_handler("session_start", self.enviar)

    async def enviar(self, event):
        self.send_message(mto=self.destino, mbody=self.msg, mtype='chat')
        self.disconnect()

bot = AlertaBot('[email protected]', 'senha123', '[email protected]', 'Servidor caiu!')
bot.connect()
bot.process()

12. MUC: Salas multiusuário (group chat)

Painel:
Group Chat > Create New Room

Configurações:

  • Sala pública ou privada
  • Participação por convite
  • Moderadores e administradores
  • Histórico de mensagens ativado
  • Permissões de envio e leitura

13. Segurança

  • Habilitar SSL/TLS para conexões seguras
  • Liberar apenas portas essenciais no firewall (5222, 9090, 7070)
  • Forçar criptografia nos clientes (Spark suporta)
  • Restringir acesso externo via iptables, se necessário

14. Considerações finais

Openfire continua sendo uma solução sólida para comunicação interna.
Combina simplicidade, desempenho e controle.
Com plugins e integração, pode substituir com vantagem ferramentas como WhatsApp, Slack e Teams em redes privadas.

Ideal para:

  • Ambientes com política de dados restritiva
  • Locais sem acesso constante à internet
  • Redes isoladas
  • Ambientes técnicos ou operacionais
Rolar para cima