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:
| Impostazione | Chiave e variabile | Predefinito |
|---|---|---|
| Server SMTP | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| Porta server SMTP | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| Attiva autenticazione SMTP | EmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTH | disattivato senza sicurezza della connessione, attivato con essa |
| Nome utente server SMTP | EmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAME | vuoto |
| Password server SMTP | EmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORD | vuoto |
| Sicurezza connessione | EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITY | Nessuna (vuoto); oppure TLS o STARTTLS |
| Salta verifica certificato server | EmailSettings.SkipServerCertificateVerification | disattivato. 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:
| Impostazione | Chiave | Predefinito |
|---|---|---|
| Attiva notifiche email | EmailSettings.SendEmailNotifications | on |
| Nome visualizzato per le notifiche | EmailSettings.FeedbackName | vuoto |
| Indirizzo mittente per le notifiche | EmailSettings.FeedbackEmail | test@example.com: modificalo |
| Indirizzo reply-to notifiche | EmailSettings.ReplyToAddress | test@example.com: modificalo |
| Indirizzo email di supporto | SupportSettings.SupportEmail | vuoto |
| Indirizzo a pié di pagine nelle notifiche email | EmailSettings.FeedbackOrganization | vuoto |
| Contenuto notifiche email | EmailSettings.EmailNotificationContentsType | Invia il contenuto completo del messaggio (full) o una descrizione generica con solo il nome del mittente (generic) |
| Attiva raggruppamento email | EmailSettings.EnableEmailBatching | disattivato. 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 email | EmailSettings.UseChannelInEmailNotifications | disattivato |
| Attiva banner modalità anteprima | EmailSettings.EnablePreviewModeBanner | attivo: 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.
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):
| Opzione | Valore |
|---|---|
| Descrizione generica con solo il nome del mittente | generic_no_channel |
| Descrizione generica con nome del mittente e del canale | generic |
| Contenuto completo del messaggio inviato nel payload della notifica (predefinito) | full |
| Contenuto completo del messaggio recuperato dal server alla ricezione | id_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.