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 Plugin | Função Principal |
---|---|
Monitoring Service | Registro de conversas (mensagens privadas e grupos) |
Broadcast | Envia mensagem para todos os usuários conectados |
User Import Export | Importa/Exporta usuários via CSV/XML |
Client Control | Restringe recursos dos clientes (envio de arquivos, etc) |
HTTP File Upload | Suporte ao envio de arquivos via XMPP |
Packet Filter | Filtro 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