Notifiche via email e push

Antimatter invia email per inviti, reimpostazioni della password, verifiche e messaggi persi, e notifiche push all'app mobile tramite un proxy push. Nessuno dei due funziona finché non viene configurato.

Invio email (SMTP)

Antimatter invia le email tramite un server SMTP fornito da te: il server di posta della tua organizzazione o un servizio di email transazionale. Senza di esso, le persone non possono reimpostare una password dimenticata, gli inviti e le verifiche via email non arrivano e nessuno riceve notifiche email dei messaggi persi.

Configuralo in Console di Sistema › Ambiente › SMTP o con le variabili:

ImpostazioneChiave e variabilePredefinito
Server SMTPEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
Porta server SMTPEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Attiva autenticazione SMTPEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHdisattivato senza sicurezza della connessione, attivato con essa
Nome utente server SMTPEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEvuoto
Password server SMTPEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDvuoto
Sicurezza connessioneEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYNessuna (vuoto); oppure TLS o STARTTLS
Salta verifica certificato serverEmailSettings.SkipServerCertificateVerificationdisattivato. Lascialo disattivato in produzione.

Usa STARTTLS sulla porta 587 o TLS sulla porta 465, come indicato dal tuo provider. Poi clicca Test connessione nella stessa pagina: Antimatter invia un'email di prova al tuo indirizzo.

Una configurazione tipica con Docker Compose, in compose.override.yaml accanto a 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

Metti SMTP_PASSWORD in .env. Il file compose del sito mette il server sulla rete predefinita, che ha accesso a Internet, quindi può raggiungere un server SMTP esterno.

Impostazioni del mittente e delle email di notifica

In Console di Sistema › Configurazione sito › Notifiche:

ImpostazioneChiavePredefinito
Attiva notifiche emailEmailSettings.SendEmailNotificationson
Nome visualizzato per le notificheEmailSettings.FeedbackNamevuoto
Indirizzo mittente per le notificheEmailSettings.FeedbackEmailtest@example.com: modificalo
Indirizzo reply-to notificheEmailSettings.ReplyToAddresstest@example.com: modificalo
Indirizzo email di supportoSupportSettings.SupportEmailvuoto
Indirizzo a pié di pagine nelle notifiche emailEmailSettings.FeedbackOrganizationvuoto
Contenuto notifiche emailEmailSettings.EmailNotificationContentsTypeInvia il contenuto completo del messaggio (full) o una descrizione generica con solo il nome del mittente (generic)
Attiva raggruppamento emailEmailSettings.EnableEmailBatchingdisattivato. Se attivato, le persone possono scegliere di ricevere i messaggi persi raggruppati in un'unica email ogni 15 minuti o ogni ora, invece di un'email per ciascuno.
Usa nome canale nelle notifiche emailEmailSettings.UseChannelInEmailNotificationsdisattivato
Attiva banner modalità anteprimaEmailSettings.EnablePreviewModeBannerattivo: mentre le notifiche via email sono disattivate, un banner avvisa gli amministratori che le email non sono configurate

L'indirizzo mittente deve essere uno per cui il server SMTP è autorizzato a inviare; configura SPF e DKIM per il relativo dominio, altrimenti le email potrebbero finire nelle cartelle spam.

Le impostazioni di accesso relative alle email (se i nuovi account devono verificare il proprio indirizzo, se è possibile inviare inviti via email) si trovano in Accesso e account.

Notifiche push all'app mobile

Come funzionano le notifiche push

Antimatter non comunica mai direttamente con Apple o Google. Per ogni notifica, chiama un proxy push, che detiene le credenziali dell'app mobile e inoltra la notifica ad Apple (APNs) per gli iPhone e a Google (Firebase Cloud Messaging) per i telefoni Android. Apple e Google consegnano una notifica solo se viene inviata con le credenziali dell'app a cui è destinata. Pertanto, un proxy push funziona con una sola versione dell'app mobile: quella le cui credenziali detiene.

  • Antimatter non gestisce un proxy push pubblico. È necessario eseguire in proprio il proxy push di Antimatter, utilizzando le credenziali della versione dell'app mobile installata dagli utenti.
  • Antimatter non invia mai notifiche ai servizi push di Mattermost, di test o gestiti: questi consegnano le notifiche solo alle app mobili di Mattermost. Se il server è configurato con uno dei loro indirizzi (ad esempio https://push-test.mattermost.com, utilizzato da configurazioni di Mattermost più vecchie), non invia nulla e registra un avviso all'avvio.

Un nuovo server non ha un server di notifiche push, quindi non invia notifiche push finché non si imposta l'indirizzo del proprio proxy push. Fino a quel momento, l'app mobile funziona ma non riceve notifiche.

Eseguire il proxy push

Il proxy push si trova nel repository push-proxy. Il relativo README spiega come ottenere le due credenziali, che provengono dagli account che pubblicano la versione dell'app mobile:

  • Android: un file di account di servizio del progetto Firebase utilizzato dalla versione Android.
  • iOS: una chiave di autenticazione APNs (AuthKey_<KEY ID>.p8) dell'account sviluppatore Apple che pubblica la versione iOS, con il relativo ID chiave e ID team.

Colloca questi file accanto a compose.yaml, insieme al file di configurazione 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, con il tuo identificativo bundle, l'ID chiave e l'ID team:

{
    "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 è l'identificativo bundle iOS della tua versione. ApplePushUseDevelopment è true solo per le versioni installate da Xcode. Le chiamate su iPhone vengono effettuate tramite push VoIP, che utilizzano la stessa chiave e non richiedono ulteriori configurazioni qui.

Il sito dispone di un'aggiunta pronta per il file di composizione, compose.push.example.yaml. Esegue l'immagine pubblicata, 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

All'avvio, il log del proxy elenca ogni destinazione di push configurata e registra un errore per quelle le cui credenziali non riesce a caricare. Il proxy non pubblica alcuna porta: solo Antimatter può raggiungerlo, sulla rete di compose.

Senza Docker, installa invece il pacchetto .deb o .rpm del push proxy: consulta I pacchetti del servizio GIF e del push proxy.

Il proxy di push non verifica chi lo chiama. Non esporlo a Internet. Se viene eseguito su un altro host, proteggerlo con HTTPS e limitare chi può accedervi: le notifiche possono contenere il testo dei messaggi.

Indirizzare Antimatter verso il proxy

In Console di Sistema › Ambiente › Server notifiche push, imposta Abilita notifiche push su Invia notifiche push tramite il tuo proxy push e Server notifiche push su http://push-proxy:8066 (oppure sull'indirizzo HTTPS del proxy, se è ospitato altrove). La pagina non può essere salvata con questa opzione e nessun indirizzo. Per smettere di inviare notifiche push, scegli Non inviare notifiche push. Oppure con variabili sul servizio antimatter:

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

Per verificare: accedi con l'app mobile, mettila in background e fai sì che un altro account ti invii una menzione. Se non ricevi nulla, cerca push nei log di Antimatter e del proxy: indicano se il tipo di dispositivo è sconosciuto, se una chiave è stata rifiutata o se il dispositivo appartiene a un'altra versione dell'app.

Contenuto delle notifiche

Console di Sistema › Configurazione sito › Notifiche › Contenuto notifiche push (EmailSettings.PushNotificationContents):

OpzioneValore
Descrizione generica con solo il nome del mittentegeneric_no_channel
Descrizione generica con nome del mittente e del canalegeneric
Contenuto completo del messaggio inviato nel payload della notifica (predefinito)full
Contenuto completo del messaggio recuperato dal server alla ricezioneid_loaded

Con id_loaded, la notifica che passa attraverso il proxy, Apple e Google trasmettono solo un id e l'app recupera il messaggio dal tuo server: il testo del messaggio non passa mai attraverso i loro servizi. È la scelta migliore quando i messaggi sono confidenziali.

Numero massimo di notifiche per canale, nella pagina Server notifiche push, (TeamSettings.MaxNotificationsPerChannel, 1000 di default) è il numero massimo di membri che un canale può avere per far funzionare @here, @all e @channel. Nei canali più grandi, queste menzioni e gli indicatori di digitazione vengono disattivati.