Notificări prin e-mail și push

Antimatter trimite e-mailuri pentru invitații, resetarea parolei, verificare și mesaje ratate, precum și notificări push către aplicația mobilă printr-un proxy push. Niciuna dintre ele nu funcționează până nu o configurați.

E-mail în externe (SMTP)

Antimatter trimite e-mailuri printr-un server SMTP pe care îl furnizați: serverul de e-mail al organizației dumneavoastră sau un serviciu de e-mail tranzacțional. Fără acesta, utilizatorii nu își pot reseta parola uitată, invitațiile și verificările prin e-mail nu ajung și nimeni nu primește notificări prin e-mail pentru mesaje ratate.

Configurați-l în Consola de sistem › Mediu › SMTP sau cu variabile:

SetareCheie și variabilăImplicit
Server SMTPEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
Portul Serverului SMTPEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Activați autentificarea SMTPEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHdezactivat fără securitate de conexiune, activat cu ea
Utilizator Server SMTPEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEgol
Parola Serverului SMTPEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDgol
Siguranța conexiuniiEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYNiciunul (gol); sau TLS sau STARTTLS
Ocolește verificarea certificatului de serverEmailSettings.SkipServerCertificateVerificationdezactivat. Păstrați-l dezactivat în producție.

Folosiți STARTTLS pe portul 587 sau TLS pe portul 465, așa cum vă indică furnizorul. Apoi faceți clic pe Testează conexiunea pe aceeași pagină: Antimatter trimite un e-mail de testare la propria dumneavoastră adresă.

O configurare tipică cu Docker Compose, în compose.override.yaml lângă 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

Puneți SMTP_PASSWORD în .env. Fișierul de compunere al site-ului plasează serverul pe rețeaua implicită, care are acces la Internet, astfel încât poate ajunge la un server SMTP extern.

Setări pentru expeditor și e-mailuri de notificare

În Consola de sistem › Configurarea site-ului › Notificări:

SetareCheieImplicit
Activați notificările prin e-mailEmailSettings.SendEmailNotificationsactivat
Nume afișat al notificăriiEmailSettings.FeedbackNamegol
Notificare de la adresaEmailSettings.FeedbackEmailtest@example.com: modificați-l
Adresa de răspuns la adresa de notificareEmailSettings.ReplyToAddresstest@example.com: modificați-l
Adresă de e-mail pentru suportSupportSettings.SupportEmailgol
Footer Adresa de notificareEmailSettings.FeedbackOrganizationgol
Conținutul anunțului de e-mailEmailSettings.EmailNotificationContentsTypeTrimiteți conținutul complet al mesajului (full) sau o descriere generică cu doar numele expeditorului (generic)
Activați etichetarea prin e-mailEmailSettings.EnableEmailBatchingdezactivat. Activat, utilizatorii pot alege să primească mesaje ratate grupate într-un singur e-mail la fiecare 15 minute sau la fiecare oră, în loc de un e-mail pentru fiecare.
Folosește numele canalului în notificările prin e-mailEmailSettings.UseChannelInEmailNotificationsdezactivat
Activați bannerul Modul de previzualizareEmailSettings.EnablePreviewModeBanneractivat: în timp ce notificările prin e-mail sunt dezactivate, un banner le spune administratorilor că e-mailul nu este configurat

Adresa From trebuie să fie una de care serverul SMTP este autorizat să trimită; configurați SPF și DKIM pentru domeniul acestuia, altfel e-mailurile pot ajunge în folderele de spam.

Setările de autentificare legate de e-mail (de exemplu, dacă conturile noi trebuie să-și verifice adresa sau dacă invitațiile pot fi trimise prin e-mail) se află în Autentificare și conturi.

Notificări push către aplicația mobilă

Cum funcționează notificările push

Antimatter nu comunică direct cu Apple sau Google. Pentru fiecare notificare, apelează un proxy push, care deține credentialele aplicației mobile și transmite notificarea către Apple (APNs) pentru iPhone-uri și către Google (Firebase Cloud Messaging) pentru telefoanele Android. Apple și Google livrează o notificare doar dacă este trimisă cu credentialele aplicației pentru care este destinată. Astfel, un proxy push funcționează cu o singură versiune a aplicației mobile: cea ale cărei credentiale le deține.

  • Antimatter nu rulează un proxy push public. Rulați singur proxy-ul push al Antimatter, folosind credentialele versiunii aplicației mobile pe care o instalează utilizatorii.
  • Antimatter nu trimite niciodată notificări către serviciile push ale Mattermost, fie de test, fie găzduite: acestea livrează doar către aplicațiile mobile proprii ale Mattermost. Dacă serverul este configurat cu una dintre adresele lor (de exemplu, https://push-test.mattermost.com, folosită de configurațiile mai vechi ale Mattermost), nu trimite nimic și înregistrează un avertisment la pornire.

Un server nou nu are un server de notificări push, deci nu trimite notificări push până când nu configurați adresa proxy-ului push. Până atunci, aplicația mobile funcționează, dar nu primește notificări.

Rulați proxy-ul push

Proxy-ul push se află în depozitul push-proxy. README-ul acestuia explică cum obțineți cele două credentiale, care provin din conturile care publică versiunea aplicației mobile:

  • Android: un fișier de cont de serviciu al proiectului Firebase folosit de versiunea Android.
  • iOS: o cheie de autentificare APNs (AuthKey_<KEY ID>.p8) a contului de dezvoltator Apple care publică versiunea iOS, împreună cu ID-ul cheii și ID-ul echipei.

Plasați-le lângă compose.yaml, împreună cu fișierul de configurare al proxy-ului:

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

push-proxy/config/antimatter-push-proxy.json, cu identificatorul de pachet, ID-ul cheii și ID-ul echipei:

{
    "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 este identificatorul de pachet iOS al versiunii dumneavoastră. ApplePushUseDevelopment este true doar pentru versiunile instalate din Xcode. Apelurile sună pe iPhone-uri prin notificări push VoIP, care folosesc aceeași cheie și nu necesită nimic în plus aici.

Site-ul include un adăugare pregătită pentru fișierul de compozare, compose.push.example.yaml. Rulează imaginea publicată, 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

La pornire, jurnalul proxy-ului numește fiecare destinație de notificări push configurată și înregistrează o eroare pentru orice destinație a cărei credențiale nu le poate încărca. Proxy-ul nu publică nicio port: doar Antimatter îl poate atinge, pe rețeaua de compoziție.

Fără Docker, instalați în schimb pachetul .deb sau .rpm al proxy-ului de push: consultați Pachetele serviciului GIF și ale proxy-ului de push.

Proxy-ul de notificări push nu verifică cine îl apelează. Nu îl expune la Internet. Dacă rulează pe un alt gazdă, pune-l în spatele HTTPS și restricționează cine îl poate atinge: notificările pot conține textul mesajelor.

Indică Antimatter către proxy

În Consola de sistem › Mediu › Server Push de notificare, setează Activează Notificările la Trimite notificări push prin propriul proxy de notificări, și Server Push de notificare la http://push-proxy:8066 (sau adresa HTTPS a proxy-ului, dacă rulează în alt loc). Pagina nu poate fi salvată cu această opțiune și fără adresă. Pentru a înceta trimiterea notificărilor push, alege Nu trimiteți notificări push. Sau cu variabile pe serviciul antimatter:

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

Pentru a verifica: autentifică-te cu aplicația mobilă, pune-o în fundal și lasă un alt cont să te menționeze. Dacă nu primești nimic, caută push în jurnalul Antimatter și în jurnalul proxy-ului: ele spun dacă tipul de dispozit este necunoscut, dacă o cheie a fost respinsă, sau dacă dispozitul aparține unei alte versiuni a aplicației.

Ce conțin notificările

Consola de sistem › Configurația site-ului › Notificări › Notificari Push Conținut (EmailSettings.PushNotificationContents):

OpțiuneValoare
Descriere generică doar cu numele expeditoruluigeneric_no_channel
Descriere generică cu numele expeditorului și al canaluluigeneric
Conținutul complet al mesajului trimis în sarcina notificării (implicit)full
Conținutul complet al mesajului preluat de la server la primireid_loaded

Cu id_loaded, notificarea care trece prin proxy, Apple și Google poartă doar un id, iar aplicația preia mesajul de la serverul tău: textul mesajului nu trece niciodată prin serviciile lor. Este cea mai bună alegere când mesajele sunt confidențiale.

Notificări maxime pe canal, pe pagina Server Push de notificare, (TeamSettings.MaxNotificationsPerChannel, 1000 implicit) este cel mai mare număr de membri pe care un canal îl poate avea pentru ca @here, @all și @channel să funcționeze. În canalele mai mari, aceste mențiuni și indicatorii de tastare sunt dezactivate.