E-mails e notificações push
O Antimatter envia e-mails para convites, redefinições de senha, verificação e mensagens não lidas, e notificações push para o aplicativo móvel por meio de um proxy de push. Nenhum deles funciona até que você o configure.
E-mail de saída (SMTP)
O Antimatter envia e-mails por meio de um servidor SMTP fornecido por você: o servidor de e-mail da sua organização ou um serviço de e-mail transacional. Sem ele, as pessoas não podem redefinir uma senha esquecida, os convites e verificações por e-mail não chegam e ninguém recebe notificações por e-mail de mensagens não lidas.
Configure em Console do Sistema › Ambiente › SMTP ou com variáveis:
| Configuração | Chave e variável | Padrão |
|---|---|---|
| Servidor SMTP | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| Porta do Servidor de SMTP | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| Ativar Autenticação SMTP | EmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTH | desativado sem segurança de conexão, ativado com ela |
| Usuário do Servidor de SMTP | EmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAME | vazio |
| Senha do Servidor de SMTP | EmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORD | vazio |
| Segurança da Conexão | EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITY | Nenhum (vazio); ou TLS ou STARTTLS |
| Pular a Verificação do Certificado de Servidor | EmailSettings.SkipServerCertificateVerification | desativado. Mantenha-o desativado em produção. |
Use STARTTLS na porta 587 ou TLS na porta 465, conforme indicado pelo seu provedor. Em seguida, clique em Testar Conexão na mesma página: o Antimatter envia um e-mail de teste para o seu próprio endereço.
Uma configuração típica com Docker Compose, em compose.override.yaml ao lado de compose.yaml:
services:
antimatter:
environment:
AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
AM_EMAILSETTINGS_SMTPPORT: "587"
AM_EMAILSETTINGS_CONNECTIONSECURITY: STARTTLS
AM_EMAILSETTINGS_ENABLESMTPAUTH: "true"
AM_EMAILSETTINGS_SMTPUSERNAME: chat@example.com
AM_EMAILSETTINGS_SMTPPASSWORD: ${SMTP_PASSWORD}
AM_EMAILSETTINGS_FEEDBACKNAME: Antimatter
AM_EMAILSETTINGS_FEEDBACKEMAIL: chat@example.com
AM_EMAILSETTINGS_REPLYTOADDRESS: chat@example.com
Coloque SMTP_PASSWORD em .env. O arquivo compose do site coloca o servidor na rede padrão, que tem acesso à Internet, permitindo que ele alcance um servidor SMTP externo.
Configurações de e-mail do remetente e de notificações
Em Console do Sistema › Configuração do Site › Notificações:
| Configuração | Chave | Padrão |
|---|---|---|
| Ativar Notificações por E-mail | EmailSettings.SendEmailNotifications | ligado |
| Notificação Nome de Exibição | EmailSettings.FeedbackName | vazio |
| Notificação a Partir do Endereço | EmailSettings.FeedbackEmail | test@example.com: altere-o |
| Notificação Endereço Reply-To | EmailSettings.ReplyToAddress | test@example.com: altere-o |
| Endereço de e-mail de suporte | SupportSettings.SupportEmail | vazio |
| Endereço de E-mail no Rodapé da Notificação | EmailSettings.FeedbackOrganization | vazio |
| Conteúdo da notificação por e-mail | EmailSettings.EmailNotificationContentsType | Enviar o conteúdo completo da mensagem (full) ou uma descrição genérica com apenas o nome do remetente (generic) |
| Ativar E-mail em Lote | EmailSettings.EnableEmailBatching | desativado. Quando ativado, as pessoas podem escolher receber as mensagens não lidas agrupadas em um único e-mail a cada 15 minutos ou a cada hora, em vez de um e-mail para cada mensagem. |
| Usar nome do canal nas notificações por e-mail | EmailSettings.UseChannelInEmailNotifications | desativado |
| Ativar o Aviso de Modo de Pré-visualização | EmailSettings.EnablePreviewModeBanner | ativado: enquanto as notificações por e-mail estiverem desativadas, um aviso informa aos administradores que o e-mail não está configurado |
O endereço de remetente deve ser um endereço como o qual seu servidor SMTP tem permissão para enviar; configure SPF e DKIM para o domínio, ou os e-mails podem acabar em pastas de spam.
As configurações de login relacionadas a e-mails (se novas contas devem verificar seu endereço, se convites podem ser enviados por e-mail) estão em Login e contas.
Notificações push para o aplicativo móvel
Como o push funciona
O Antimatter nunca se comunica diretamente com a Apple ou o Google. Para cada notificação, ele chama um proxy de push, que mantém as credenciais do aplicativo móvel e encaminha a notificação para a Apple (APNs) para iPhones e para o Google (Firebase Cloud Messaging) para celulares Android. A Apple e o Google só entregam uma notificação quando ela é enviada com as credenciais do aplicativo para o qual ela é destinada. Portanto, um proxy de push funciona com uma única versão do aplicativo móvel: aquela cujas credenciais ele mantém.
- O Antimatter não executa um proxy de push público. Você executa o proxy de push do Antimatter por conta própria, com as credenciais da versão do aplicativo móvel que seus usuários instalam.
- O Antimatter nunca envia notificações para os serviços de push do Mattermost, seja de teste ou hospedado: eles só entregam para os aplicativos móveis próprios do Mattermost. Se o servidor estiver configurado para um de seus endereços (como
https://push-test.mattermost.com, usado por configurações antigas do Mattermost), ele não envia nada e registra um aviso na inicialização.
Um novo servidor não tem um servidor de notificações push, portanto não envia notificações push até que você configure o endereço do seu proxy de push. Até lá, o aplicativo móvel funciona, mas não recebe notificações.
Executar o proxy de push
O proxy de push está no repositório push-proxy. Seu README explica como obter as duas credenciais, que vêm das contas que publicam sua versão do aplicativo móvel:
- Android: um arquivo de conta de serviço do projeto Firebase usado pela sua versão Android.
- iOS: uma chave de autenticação APNs (
AuthKey_<KEY ID>.p8) da conta de desenvolvedor da Apple que publica sua versão iOS, com seu ID de chave e ID de equipe.
Coloque-os ao lado do compose.yaml, com o arquivo de configuração do proxy:
push-proxy/
config/antimatter-push-proxy.json
certs/AuthKey_ABCDE12345.p8
certs/firebase-service-account.json
push-proxy/config/antimatter-push-proxy.json, com seu identificador de pacote, ID de chave e ID de equipe:
{
"ListenAddress": ":8066",
"ThrottlePerSec": 300,
"ThrottleMemoryStoreSize": 50000,
"ThrottleVaryByHeader": "X-Forwarded-For",
"EnableMetrics": false,
"SendTimeoutSec": 30,
"RetryTimeoutSec": 8,
"ApplePushSettings": [
{
"Type": "apple_rn",
"ApplePushUseDevelopment": false,
"ApplePushTopic": "chat.antimatter.app",
"AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8",
"AppleAuthKeyID": "ABCDE12345",
"AppleTeamID": "FGHIJ67890"
}
],
"AndroidPushSettings": [
{
"Type": "android_rn",
"ServiceFileLocation": "./certs/firebase-service-account.json"
}
],
"EnableConsoleLog": true,
"EnableFileLog": false,
"LogFormat": "plain",
"LogLevel": "info"
}
ApplePushTopic é o identificador de pacote iOS da sua versão. ApplePushUseDevelopment é true apenas para versões instaladas a partir do Xcode. As chamadas tocam nos iPhones por meio de pushes VoIP, que usam a mesma chave e não exigem mais nada aqui.
O site possui uma adição pronta para o arquivo de composição, compose.push.example.yaml. Ele executa a imagem publicada, ghcr.io/antimatterchat/push-proxy:latest.
curl -fsSLO https://antimatter.chat/compose.push.example.yaml
docker compose -f compose.yaml -f compose.push.example.yaml --profile push up -d
docker compose -f compose.yaml -f compose.push.example.yaml logs push-proxy
Na inicialização, o log do proxy lista cada destino de push configurado e registra um erro para aqueles cujas credenciais não puderam ser carregadas. O proxy não publica nenhuma porta: apenas o Antimatter o alcança, na rede de composição.
Sem Docker, instale o pacote .deb ou .rpm do proxy de push: veja Os pacotes do serviço de GIF e do proxy de push.
Aponte o Antimatter para o proxy
Em Console do Sistema › Ambiente › Servidor de Notificação Push, defina Ativar Notificações por Push como Enviar notificações push por meio do seu próprio proxy de push, e Servidor de Notificação Push como http://push-proxy:8066 (ou o endereço HTTPS do proxy, se ele for executado em outro local). A página não pode ser salva com esta opção e sem um endereço. Para parar de enviar notificações push, escolha Não enviar notificações push. Ou com variáveis no serviço antimatter:
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
Para verificar: faça login com o aplicativo móvel, coloque-o em segundo plano e tenha outra conta mencionando você. Se nada chegar, procure por push no log do Antimatter e no log do proxy: eles indicam se o tipo de dispositivo é desconhecido, se uma chave foi rejeitada ou se o dispositivo pertence a outra compilação do aplicativo.
O que as notificações contêm
Console do Sistema › Configuração do Site › Notificações › Conteúdo Notificação Push (EmailSettings.PushNotificationContents):
| Opção | Valor |
|---|---|
| Descrição genérica com apenas o nome do remetente | generic_no_channel |
| Descrição genérica com os nomes do remetente e do canal | generic |
| Conteúdo completo da mensagem enviado no payload da notificação (padrão) | full |
| Conteúdo completo da mensagem obtido do servidor no recebimento | id_loaded |
Com id_loaded, a notificação que passa pelo proxy, Apple e Google carrega apenas um id, e o aplicativo busca a mensagem do seu servidor: o texto da mensagem nunca passa pelos serviços deles. É a melhor escolha quando as mensagens são confidenciais.
Máximo de Notificações por Canal, na página do Servidor de Notificações Push, (TeamSettings.MaxNotificationsPerChannel, 1000 por padrão) é o número máximo de membros que um canal pode ter para que @here, @all e @channel funcionem. Em canais maiores, essas menções e os indicadores de digitação são desativados.