Correu electrònic i notificacions push

Antimatter envia correu per a invitacions, restabliment de contrasenyes, verificació i missatges perduts, i notificacions push a l'aplicació mòbil mitjançant un proxy push. Cap d'aquests funciona fins que no el configures.

Correu sortant (SMTP)

Antimatter envia correu mitjançant un servidor SMTP que proveixis: el servidor de correu de la teva organització o un servei de correu transaccional. Sense això, la gent no pot restablir una contrasenya oblidada, les invitacions i verificacions per correu no arriben i ningú rep notificacions per correu dels missatges perduts.

Configura-ho a Consola del sistema › Entorn › SMTP, o amb variables:

ParàmetreClau i variableValor per defecte
Servidor SMTPEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
Port del servidor SMTPEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Habilita l'autenticació SMTPEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHdesactivat sense seguretat de connexió, activat amb seguretat
Nom d'usuari del servidor SMTPEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEbuit
Contrasenya del servidor SMTPEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDbuit
Seguretat de la connexióEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYCap (buit); o bé TLS o STARTTLS
Omet la verificació del certificat del servidorEmailSettings.SkipServerCertificateVerificationdesactivat. Deixa-ho desactivat en producció.

Utilitza STARTTLS al port 587 o TLS al port 465, segons indiqui el teu proveïdor. Després, fes clic a Provar connexió a la mateixa pàgina: Antimatter enviarà un correu de prova a la teva pròpia adreça.

Una configuració típica amb Docker Compose, a compose.override.yaml al costat 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

Posa SMTP_PASSWORD a .env. El fitxer compose del lloc posa el servidor a la xarxa per defecte, que té accés a Internet, de manera que pot arribar a un servidor SMTP extern.

Configuració del remitent i del correu de notificacions

A Consola del sistema › Configuració del lloc › Notificacions:

ParàmetreClauValor per defecte
Activa les notificacions per correu electrònicEmailSettings.SendEmailNotificationsactivat
Nom per mostrar de les notificacionsEmailSettings.FeedbackNamebuit
Adreça d’origen de les notificacionsEmailSettings.FeedbackEmailtest@example.com: canvia-la
Adreça de resposta de les notificacionsEmailSettings.ReplyToAddresstest@example.com: canvia-la
Adreça de correu de suportSupportSettings.SupportEmailbuit
Adreça postal del peu de les notificacionsEmailSettings.FeedbackOrganizationbuit
Contingut de les notificacions per correu electrònicEmailSettings.EmailNotificationContentsTypeEnvia el contingut complet del missatge (full), o bé una descripció genèrica amb només el nom del remitent (generic)
Activa el lot de correus electrònicsEmailSettings.EnableEmailBatchingdesactivat. Si l'actives, la gent pot triar rebre els missatges perduts agrupats en un sol correu cada 15 minuts o cada hora, en lloc d'un correu per missatge.
Utilitza el nom del canal a les notificacions per correuEmailSettings.UseChannelInEmailNotificationsdesactivat
Activa la barra de mode de previsualitzacióEmailSettings.EnablePreviewModeBanneractivat: mentre les notificacions per correu estiguin desactivades, una banda informa els administradors que el correu no està configurat

La direcció «De» ha de ser una adreça des de la qual el servidor SMTP tingui permís d'enviar; configura SPF i DKIM per al seu domini, o els correus poden acabar a les carpetes de correu brossa.

Les configuracions d'inici de sessió relacionades amb el correu electrònic (si els comptes nous han de verificar la seva adreça, si es poden enviar invitacions per correu) es troben a Inici de sessió i comptes.

Notificacions push a l'aplicació mòbil

Com funciona el push

Antimatter mai no parla directament amb Apple o Google. Per a cada notificació, crida un proxy de push, que guarda les credencials de l'aplicació mòbil i reenvia la notificació a Apple (APNs) per als iPhones i a Google (Firebase Cloud Messaging) per als telèfons Android. Apple i Google només lliuren una notificació quan s'envia amb les credencials de l'aplicació a la qual va dirigida. Per tant, un proxy de push funciona amb una sola versió de l'aplicació mòbil: la que té les credencials que ell guarda.

  • Antimatter no executa un proxy de push públic. Tu mateix has d'executar el proxy de push d'Antimatter, amb les credencials de la versió de l'aplicació mòbil que instal·len els teus usuaris.
  • Antimatter mai no envia notificacions als serveis de push de Mattermost, ja siguin de proves o allotjats: només lliuren notificacions a les pròpies aplicacions mòbils de Mattermost. Si el servidor està configurat amb una de les seves adreces (com ara https://push-test.mattermost.com, que utilitzen les configuracions antigues de Mattermost), no envia res i registra un avís en arrencar.

Un servidor nou no té cap servidor de notificacions push, per la qual cosa no envia cap notificació push fins que no configures l'adreça del teu proxy de push. Fins llavors, l'aplicació mòbil funciona però no rep notificacions.

Executa el proxy de push

El proxy de push es troba al repositori push-proxy. El seu README explica com obtenir les dues credencials, que provenen dels comptes que publiquen la teva versió de l'aplicació mòbil:

  • Android: un fitxer de compte de servei del projecte Firebase que utilitza la teva versió per a Android.
  • iOS: una clau d'autenticació d'APNs (AuthKey_<KEY ID>.p8) del compte de desenvolupador d'Apple que publica la teva versió per a iOS, amb el seu identificador de clau i l'identificador d'equip.

Col·loca-los al costat de compose.yaml, juntament amb el fitxer de configuració del proxy:

push-proxy/
  config/antimatter-push-proxy.json
  certs/AuthKey_ABCDE12345.p8
  certs/firebase-service-account.json

push-proxy/config/antimatter-push-proxy.json, amb el teu identificador de paquet, l'identificador de clau i l'identificador d'equip:

{
    "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 és l'identificador de paquet iOS de la teva versió. ApplePushUseDevelopment és true només per a les versions instal·lades des de Xcode. Les trucades sonen als iPhones mitjançant pushs VoIP, que utilitzen la mateixa clau i no requereixen res més aquí.

El lloc web inclou una addició preparada al fitxer de composició, compose.push.example.yaml. Aquesta executa la imatge 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

En arrencar, el registre del proxy nomena cada objectiu d'enviament que ha configurat i registra un error per a qualsevol de les credencials que no pot carregar. El proxy no publica cap port: només Antimatter hi accedeix, a través de la xarxa de composició.

Si no utilitzeu Docker, instal·leu el paquet .deb o .rpm del proxy de notificacions automàtiques: consulteu Els paquets del servei de GIF i del proxy de notificacions automàtiques.

El proxy d'enviament no comprova qui l'invoca. No l'exposis a Internet. Si s'executa en un altre host, col·loca'l darrere d'HTTPS i restringeix qui hi pot accedir: les notificacions poden contenir el text del missatge.

Apunta Antimatter al proxy

A Consola del sistema › Entorn › Servidor de notificacions push, establix Activa les notificacions push com a Envia notificacions push a través del teu propi proxy de notificacions push i Servidor de notificacions push com a http://push-proxy:8066 (o l'adreça HTTPS del proxy si s'executa en un altre lloc). No es pot desar la pàgina amb aquesta opció i sense cap adreça. Per deixar d'enviar notificacions push, tria No enviar notificacions push. O bé, mitjançant variables al servei antimatter:

AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066

Per comprovar-ho: inicia sessió amb l'aplicació mòbil, posa-la en segon pla i fes que un altre compte et mencioni. Si no arriba res, busca push al registre d'Antimatter i al registre del proxy: indiquen si el tipus de dispositiu és desconegut, si s'ha rebutjat una clau o si el dispositiu pertany a una altra compilació de l'aplicació.

Què contenen les notificacions

Consola del sistema › Configuració del lloc › Notificacions › Contingut de les notificacions push (EmailSettings.PushNotificationContents):

OpcióValor
Descripció genèrica amb només el nom de l'enviadógeneric_no_channel
Descripció genèrica amb el nom de l'enviadó i del canalgeneric
Contingut complet del missatge enviat a la càrrega de la notificació (per defecte)full
Contingut complet del missatge obtingut del servidor en rebre la notificacióid_loaded

Amb id_loaded, la notificació que passa pel proxy, Apple i Google només transporten un id, i l'aplicació obté el missatge del teu servidor: el text del missatge mai no passa pels seus serveis. És la millor opció quan els missatges són confidencials.

Llindar de notificacions per a canals grans, a la pàgina del Servidor de notificacions push (TeamSettings.MaxNotificationsPerChannel, 1000 per defecte), és el nombre màxim de membres que pot tenir un canal perquè les mencions @here, @all i @channel funcionin. En canals més grans, aquestes mencions i els indicadors d'escriptura es desactiven.