Courriels et notifications push
Antimatter envoie des courriels pour les invitations, les réinitialisations de mot de passe, la vérification et les messages manqués, ainsi que des notifications push vers l'application mobile via un proxy push. Aucun de ces deux éléments ne fonctionne tant que vous ne l'avez pas configuré.
Courrier sortant (SMTP)
Antimatter envoie des courriels via un serveur SMTP que vous fournissez : le serveur de messagerie de votre organisation ou un service de courriels transactionnels. Sans cela, les personnes ne peuvent pas réinitialiser un mot de passe oublié, les invitations et vérifications par courriel n'arrivent pas, et personne ne reçoit de notifications par courriel des messages manqués.
Configurez-le dans Console système › Environnement › SMTP, ou avec des variables :
| Paramètre | Clé et variable | Valeur par défaut |
|---|---|---|
| Serveur SMTP | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| Port du serveur SMTP | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| Activer l'authentification SMTP | EmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTH | désactivé sans sécurité de connexion, activé avec |
| Nom d'utilisateur du serveur SMTP | EmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAME | vide |
| Mot de passe du serveur SMTP | EmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORD | vide |
| Connexion sécurisée | EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITY | Aucun (vide) ; ou TLS ou STARTTLS |
| Ignorer la vérification du certificat du serveur | EmailSettings.SkipServerCertificateVerification | désactivé. Laissez-le désactivé en production. |
Utilisez STARTTLS sur le port 587 ou TLS sur le port 465, comme l'indique votre fournisseur. Cliquez ensuite sur Tester la connexion sur la même page : Antimatter envoie un e-mail de test à votre propre adresse.
Une configuration typique avec Docker Compose, dans compose.override.yaml à côté 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
Placez SMTP_PASSWORD dans .env. Le fichier compose du site place le serveur sur le réseau par défaut, qui a accès à Internet, ce qui lui permet d'atteindre un serveur SMTP externe.
Paramètres de l'expéditeur et des courriels de notification
Dans Console système › Configuration du site › Notifications :
| Paramètre | Paramètre | Valeur par défaut |
|---|---|---|
| Activer les notifications par e-mail | EmailSettings.SendEmailNotifications | activé |
| Nom affiché dans les notifications | EmailSettings.FeedbackName | vide |
| Adresse e-mail d'expéditeur des notifications par e-mail | EmailSettings.FeedbackEmail | test@example.com : modifiez-le |
| Adresse utilisée dans le champ Reply-To des notifications par e-mail | EmailSettings.ReplyToAddress | test@example.com : modifiez-le |
| Adresse e-mail de support | SupportSettings.SupportEmail | vide |
| Adresse affichée en bas de page des notifications par e-mail | EmailSettings.FeedbackOrganization | vide |
| Contenu des notifications par e-mail | EmailSettings.EmailNotificationContentsType | Envoyer le contenu complet des messages (full) ou une description générique avec uniquement le nom de l'expéditeur (generic) |
| Activer l'envoi d'e-mails par lot | EmailSettings.EnableEmailBatching | désactivé. Activé, les personnes peuvent choisir de recevoir les messages manqués regroupés dans un seul courriel toutes les 15 minutes ou chaque heure, au lieu d'un courriel pour chacun. |
| Utiliser le nom du canal dans les notifications par e-mail | EmailSettings.UseChannelInEmailNotifications | Désactivé |
| Activer la bannière de mode de démo | EmailSettings.EnablePreviewModeBanner | activé : tant que les notifications par courriel sont désactivées, une bannière informe les administrateurs que le courriel n'est pas configuré |
L'adresse d'expéditeur doit être une adresse autorisée par votre serveur SMTP. Configurez SPF et DKIM pour son domaine, sinon les e-mails risquent d'aboutir dans les dossiers de courriers indésirables.
Les paramètres de connexion liés aux e-mails (vérification de l'adresse pour les nouveaux comptes, envoi d'invitations par e-mail) se trouvent dans Connexion et comptes.
Notifications push vers l'application mobile
Fonctionnement des notifications push
Antimatter ne communique jamais directement avec Apple ou Google. Pour chaque notification, il appelle un proxy push, qui détient les identifiants de l'application mobile et transmet la notification à Apple (APNs) pour les iPhone et à Google (Firebase Cloud Messaging) pour les téléphones Android. Apple et Google ne livrent une notification que si elle est envoyée avec les identifiants de l'application destinataire. Un proxy push fonctionne donc avec une seule version de l'application mobile : celle dont il détient les identifiants.
- Antimatter n'exploite pas de proxy push public. Vous exploitez vous-même le proxy push d'Antimatter, avec les identifiants de la version de l'application mobile installée par vos utilisateurs.
- Antimatter n'envoie jamais de notifications aux services push de Mattermost, qu'ils soient de test ou hébergés : ils ne livrent que pour les applications mobiles de Mattermost. Si le serveur est configuré avec l'une de leurs adresses (comme
https://push-test.mattermost.com, utilisée par les anciennes configurations de Mattermost), il n'envoie rien et enregistre un avertissement au démarrage.
Un nouveau serveur n'a pas de serveur de notifications push, il n'envoie donc aucune notification push jusqu'à ce que vous définissiez l'adresse de votre proxy push. En attendant, l'application mobile fonctionne mais ne reçoit aucune notification.
Exécuter le proxy push
Le proxy push se trouve dans le dépôt push-proxy. Son README explique comment obtenir les deux identifiants, qui proviennent des comptes qui publient votre version de l'application mobile :
- Android : un fichier de compte de service du projet Firebase utilisé par votre version Android.
- iOS : une clé d'authentification APNs (
AuthKey_<KEY ID>.p8) du compte développeur Apple qui publie votre version iOS, avec son identifiant de clé et son identifiant d'équipe.
Placez-les à côté de compose.yaml, avec le fichier de configuration du proxy :
push-proxy/
config/antimatter-push-proxy.json
certs/AuthKey_ABCDE12345.p8
certs/firebase-service-account.json
push-proxy/config/antimatter-push-proxy.json, avec votre identifiant de bundle, votre identifiant de clé et votre identifiant d'équipe :
{
"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 est l'identifiant de bundle iOS de votre version. ApplePushUseDevelopment est true uniquement pour les versions installées depuis Xcode. Les appels sonnent sur les iPhone via des pushes VoIP, qui utilisent la même clé et ne nécessitent rien d'autre ici.
Le site propose un ajout prêt à l’emploi pour le fichier de composition, compose.push.example.yaml. Il exécute l’image publiée, 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
Au démarrage, le journal du proxy indique chaque cible de notification push configurée et consigne une erreur pour celles dont il ne parvient pas à charger les identifiants. Le proxy ne publie aucun port : seul Antimatter peut y accéder, via le réseau de composition.
Sans Docker, installez plutôt le paquet .deb ou .rpm du proxy de notifications push : voir Les paquets du service GIF et du proxy de notifications push.
Pointer Antimatter vers le proxy
Dans Console système › Environnement › Serveur de notifications push, définissez Envoyer des notifications push sur Envoyer les notifications push via votre propre proxy push, et Serveur de notifications push sur http://push-proxy:8066 (ou l'adresse HTTPS du proxy s'il est hébergé ailleurs). La page ne peut pas être enregistrée avec cette option sans adresse. Pour cesser d'envoyer des notifications push, choisissez Ne pas envoyer de notifications push. Ou avec des variables sur le service antimatter :
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
Pour vérifier : connectez-vous avec l’application mobile, placez-la en arrière-plan et faites-vous mentionner par un autre compte. Si rien n’arrive, cherchez push dans le journal d’Antimatter et dans celui du proxy : ils indiquent si le type d’appareil est inconnu, si une clé a été rejetée, ou si l’appareil appartient à une autre version de l’application.
Contenu des notifications
Console système › Configuration du site › Notifications › Contenu des notifications push (EmailSettings.PushNotificationContents) :
| Option | Valeur |
|---|---|
| Description générique avec uniquement le nom de l’expéditeur | generic_no_channel |
| Description générique avec les noms de l’expéditeur et du canal | generic |
| Contenu complet du message envoyé dans la charge utile de la notification (par défaut) | full |
| Contenu complet du message récupéré depuis le serveur à la réception | id_loaded |
Avec id_loaded, la notification transmise par le proxy ne contient qu’un identifiant chez Apple et Google, et l’application récupère le message depuis votre serveur : le texte du message ne transite jamais par leurs services. C’est le meilleur choix lorsque les messages sont confidentiels.
Nombre maximum de notifications par canal , sur la page Serveur de notifications push, (TeamSettings.MaxNotificationsPerChannel, 1000 par défaut) est le nombre maximal de membres qu'un canal peut avoir pour que @here, @all et @channel fonctionnent. Dans les canaux plus volumineux, ces mentions et les indicateurs de frappe sont désactivés.