E-Mail- und Push-Benachrichtigungen
Antimatter sendet E-Mails für Einladungen, Passwort-Resets, Verifizierungen und verpasste Nachrichten sowie Push-Benachrichtigungen an die mobile App über einen Push-Proxy. Beides funktioniert nicht, bis Sie es konfiguriert haben.
Ausgehende E-Mail (SMTP)
Antimatter sendet E-Mails über einen von Ihnen bereitgestellten SMTP-Server: den Mail-Server Ihrer Organisation oder einen transaktionalen E-Mail-Dienst. Ohne ihn können Personen ein vergessenes Passwort nicht zurücksetzen, E-Mail-Einladungen und Verifizierungen treffen nicht ein und niemand erhält E-Mail-Benachrichtigungen über verpasste Nachrichten.
Richten Sie dies in Systemkonsole › Umgebung › SMTP ein oder mit Variablen:
| Einstellung | Schlüssel und Variable | Standard |
|---|---|---|
| SMTP-Server | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| SMTP-Server-Port | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| SMTP-Authentifizierung aktivieren | EmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTH | aus ohne Verbindungssicherheit, an mit ihr |
| SMTP-Server-Benutzername | EmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAME | leer |
| SMTP-Server-Passwort | EmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORD | leer |
| Verbindungssicherheit | EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITY | Keine (leer); oder TLS oder STARTTLS |
| Serverzertifikatsüberprüfung überspringen | EmailSettings.SkipServerCertificateVerification | aus. Lassen Sie es in der Produktion aus. |
Verwenden Sie STARTTLS auf Port 587 oder TLS auf Port 465, wie von Ihrem Anbieter angegeben. Klicken Sie dann auf derselben Seite auf Verbindung testen: Antimatter sendet eine Test-E-Mail an Ihre eigene Adresse.
Eine typische Einrichtung mit Docker Compose, in compose.override.yaml neben 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
Legen Sie SMTP_PASSWORD in .env ab. Die Compose-Datei der Website platziert den Server im Standard-Netzwerk, das Internetzugriff hat, sodass es einen externen SMTP-Server erreichen kann.
Einstellungen für Absender- und Benachrichtigungs-E-Mails
In Systemkonsole › Systemkonfiguration › Benachrichtigungen:
| Einstellung | Schlüssel | Standard |
|---|---|---|
| Aktiviere E-Mail-Benachrichtigungen | EmailSettings.SendEmailNotifications | an |
| Benachrichtigungs-Anzeigename | EmailSettings.FeedbackName | leer |
| Benachrichtigungs-Absenderadresse | EmailSettings.FeedbackEmail | test@example.com: ändern |
| Antworten-an-Adresse für Benachrichtigungen | EmailSettings.ReplyToAddress | test@example.com: ändern |
| Support Emailadresse | SupportSettings.SupportEmail | leer |
| Adresse in der Fußzeile von Benachrichtigungen | EmailSettings.FeedbackOrganization | leer |
| Inhalt der E-Mail-Benachrichtigungen | EmailSettings.EmailNotificationContentsType | Vollständigen Nachrichteninhalt senden (full) oder eine allgemeine Beschreibung mit nur dem Namen des Absenders (generic) |
| E-Mail-Stapelverarbeitung aktivieren | EmailSettings.EnableEmailBatching | aus. An, können sich Personen dafür entscheiden, verpasste Nachrichten alle 15 Minuten oder stündlich in einer E-Mail zusammengefasst zu erhalten, anstatt eine E-Mail pro Nachricht. |
| Kanalnamen in E-Mail-Benachrichtigungen verwenden | EmailSettings.UseChannelInEmailNotifications | aus |
| Vorschaumodus-Banner aktivieren | EmailSettings.EnablePreviewModeBanner | an: Während E-Mail-Benachrichtigungen deaktiviert sind, informiert ein Banner Administratoren, dass E-Mail nicht konfiguriert ist |
Die Absenderadresse muss eine sein, für die Ihr SMTP-Server das Senden erlaubt. Richten Sie SPF und DKIM für die zugehörige Domain ein, da die E-Mails sonst in den Spam-Ordner landen könnten.
E-Mail-bezogene Einstellungen zur Anmeldung (z. B. ob neue Konten ihre Adresse verifizieren müssen oder ob Einladungen per E-Mail versendet werden können) finden Sie unter Anmeldung und Konten.
Push-Benachrichtigungen an die mobile App
Funktionsweise der Push-Benachrichtigungen
Antimatter kommuniziert nie direkt mit Apple oder Google. Für jede Benachrichtigung ruft es einen Push-Proxy auf, der die Zugangsdaten der mobilen App verwaltet und die Benachrichtigung an Apple (APNs) für iPhones und an Google (Firebase Cloud Messaging) für Android-Geräte weiterleitet. Apple und Google liefern eine Benachrichtigung nur aus, wenn sie mit den Zugangsdaten der jeweiligen App gesendet wird. Ein Push-Proxy funktioniert daher nur mit einer einzigen Version der mobilen App: derjenigen, deren Zugangsdaten er verwaltet.
- Antimatter betreibt keinen öffentlichen Push-Proxy. Sie betreiben den Antimatter-Push-Proxy selbst, mit den Zugangsdaten der mobilen App-Version, die Ihre Nutzer installieren.
- Antimatter sendet keine Benachrichtigungen an die Push-Dienste von Mattermost, weder an Test- noch an gehostete Instanzen: Diese liefern nur an die eigenen mobilen Apps von Mattermost aus. Ist der Server auf eine dieser Adressen (z. B.
https://push-test.mattermost.com, wie in älteren Mattermost-Konfigurationen üblich) eingestellt, wird nichts gesendet und beim Start eine Warnung protokolliert.
Ein neuer Server hat keinen Push-Benachrichtigungsserver, sodass keine Push-Benachrichtigungen gesendet werden, bis Sie die Adresse Ihres Push-Proxy festgelegt haben. Bis dahin funktioniert die mobile App, erhält aber keine Benachrichtigungen.
Den Push-Proxy betreiben
Der Push-Proxy befindet sich im push-proxy-Repository. Die README erklärt, wie Sie die beiden Zugangsdaten beschaffen, die aus den Konten stammen, die Ihre Version der mobilen App veröffentlichen:
- Android: eine Service-Account-Datei des Firebase-Projekts, das Ihre Android-Version verwendet.
- iOS: ein APNs-Authentifizierungsschlüssel (
AuthKey_<KEY ID>.p8) des Apple-Entwicklerkontos, das Ihre iOS-Version veröffentlicht, einschließlich der Schlüssel-ID und Team-ID.
Legen Sie sie neben compose.yaml ab, zusammen mit der Konfigurationsdatei des Proxys:
push-proxy/
config/antimatter-push-proxy.json
certs/AuthKey_ABCDE12345.p8
certs/firebase-service-account.json
push-proxy/config/antimatter-push-proxy.json, mit Ihrer Bundle-Kennung, Schlüssel-ID und Team-ID:
{
"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 ist die iOS-Bundle-Kennung Ihrer Version. ApplePushUseDevelopment ist nur für Versionen, die aus Xcode installiert wurden, auf true gesetzt. Anrufe werden auf iPhones über VoIP-Pushes ausgelöst, die denselben Schlüssel verwenden und hier keine weiteren Einstellungen erfordern.
Die Website bietet eine fertige Ergänzung für die Compose-Datei, compose.push.example.yaml. Sie führt das veröffentlichte Image ghcr.io/antimatterchat/push-proxy:latest aus.
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
Beim Start benennt das Protokoll des Proxys jedes Push-Ziel, das eingerichtet wurde, und protokolliert einen Fehler für jedes Ziel, dessen Zugangsdaten nicht geladen werden können. Der Proxy veröffentlicht keinen Port: Nur Antimatter erreicht ihn, über das Compose-Netzwerk.
Ohne Docker installieren Sie stattdessen das .deb- oder .rpm-Paket des Push-Proxy: siehe Pakete für den GIF-Dienst und den Push-Proxy.
Antimatter auf den Proxy ausrichten
In Systemkonsole › Umgebung › Push-Benachrichtigungs-Server Aktiviere Push-Benachrichtigungen auf Push-Benachrichtigungen über einen eigenen Push-Proxy senden und Push-Benachrichtigungs-Server auf http://push-proxy:8066 (oder die HTTPS-Adresse des Proxys, wenn er woanders läuft) setzen. Die Seite kann mit dieser Option und ohne Adresse nicht gespeichert werden. Um das Senden von Push-Benachrichtigungen zu stoppen, Keine Benachrichtigungen senden wählen. Oder mit Variablen auf dem antimatter-Dienst:
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
Zum Prüfen: Melden Sie sich mit der mobilen App an, legen Sie sie in den Hintergrund und lassen Sie sich von einem anderen Konto erwähnen. Wenn nichts ankommt, suchen Sie nach push im Protokoll von Antimatter und im Protokoll des Proxys: Dort wird angegeben, ob der Gerätetyp unbekannt ist, ein Schlüssel abgelehnt wurde oder das Gerät zu einem anderen App-Build gehört.
Inhalt der Benachrichtigungen
Systemkonsole › Systemkonfiguration › Benachrichtigungen › Push-Benachrichtigungs-Inhalt (EmailSettings.PushNotificationContents):
| Option | Wert |
|---|---|
| Allgemeine Beschreibung mit nur dem Namen des Absenders | generic_no_channel |
| Allgemeine Beschreibung mit Namen des Absenders und des Kanals | generic |
| Vollständiger Nachrichteninhalt, der im Benachrichtigungspayload gesendet wird (Standard) | full |
| Vollständiger Nachrichteninhalt, der beim Empfang vom Server abgerufen wird | id_loaded |
Bei id_loaded enthält die Benachrichtigung, die über den Proxy, Apple und Google geht, nur eine ID, und die App ruft die Nachricht von Ihrem Server ab: Der Nachrichtentext geht nie über deren Dienste. Dies ist die beste Wahl, wenn Nachrichten vertraulich sind.
Schwellenwert für Benachrichtigungen in großen Kanälen auf der Seite Push-Benachrichtigungs-Server (TeamSettings.MaxNotificationsPerChannel, Standardwert 1000) ist die größte Anzahl von Mitgliedern, die ein Kanal haben darf, damit @here, @all und @channel funktionieren. In größeren Kanälen sind diese Erwähnungen und die Eingabeindikatoren deaktiviert.