E-mail- és push-értesítések

Az Antimatter e-mailt küld meghívásokhoz, jelszó-visszaállításokhoz, hitelesítéshez és elmaradt üzenetekhez, valamint push-értesítéseket a mobilalkalmazásba egy push-proxy szerveren keresztül. Mindkettő csak akkor működik, ha beállítja.

Kimenő e-mail (SMTP)

Az Antimatter egy általad megadott SMTP-szerveren keresztül küld e-mailt: a szervezeted levelezőszerverén, vagy egy transzaktionális e-mail szolgáltatáson. Enélkül a felhasználók nem állíthatják vissza elfelejtett jelszavukat, nem érkeznek meg a meghívó- és hitelesítő e-mailek, és senki sem kap e-mail-értesítést az elmaradt üzenetekről.

Állítsa be a Rendszerkonzol › Környezet › SMTP menüpontban, vagy változókkal:

BeállításKulcs és változóAlapérték
SMTP szerverEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
SMTP szerver portEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
SMTP hitelesítés engedélyezéseEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHki, ha nincs kapcsolatbiztonság, be, ha van
SMTP szerver felhasználónévEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEüres
SMTP szerver jelszóEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDüres
Kapcsolat biztonságEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYNincs (üres); vagy TLS, illetve STARTTLS
A szerver tanúsítvány ellenőrzésének kihagyásaEmailSettings.SkipServerCertificateVerificationki. Éles környezetben maradjon kikapcsolva.

Használja a STARTTLS módot 587-es porton, vagy a TLS módot 465-ös porton, ahogy a szolgáltatója előírja. Ezután kattintson a Kapcsolat tesztelése gombra ugyanazon az oldalon: az Antimatter teszt e-mailt küld a saját címedre.

Egy tipikus Docker Compose beállítás, a compose.yaml mellett lévő compose.override.yaml fájlban:

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

A SMTP_PASSWORD értéket tedd a .env fájlba. A webhely compose fájlja a szervert az alapértelmezett hálózatra helyezi, amelynek van internet-hozzáférése, így eléri a külső SMTP-szervereket is.

Feladó- és értesítő e-mail-beállítások

A Rendszerkonzol › Oldal beállítások › Értesítések menüpontban:

BeállításKulcsAlapérték
E-mail értesítések engedélyezéseEmailSettings.SendEmailNotificationsbekapcsolva
Értesítés megjelenítési névEmailSettings.FeedbackNameüres
Értesítés feladó címeEmailSettings.FeedbackEmailtest@example.com: módosítsd
Értesítés válasz (Reply-To) címeEmailSettings.ReplyToAddresstest@example.com: módosítsd
Ügyfélszolgálati e-mail címSupportSettings.SupportEmailüres
Értesítési lábléc levelezési címEmailSettings.FeedbackOrganizationüres
E-mail értesítés tartalmaEmailSettings.EmailNotificationContentsTypeTeljes üzenettartalom küldése (full), vagy általános leírás csak a feladó nevével (generic)
E-mail kötegelt küldés engedélyezéseEmailSettings.EnableEmailBatchingki. Be, ha a felhasználók azt szeretnék, hogy az elmaradt üzenetek 15 percenként vagy óránként egy-egy e-mailben érkezzenek meg, külön-külön küldött e-mailek helyett.
Csatorna név használata az e-mail-értesítésekbenEmailSettings.UseChannelInEmailNotificationski
Előnézet mód banner engedélyezéseEmailSettings.EnablePreviewModeBannerbe: amíg az e-mail-értesítések kikapcsolva vannak, egy sáv tájékoztatja az adminisztrátorokat, hogy az e-mail nem lett beállítva

A Feladó címnek olyan címnévre kell lennie, amellyel az SMTP-szerver jogosult küldeni; állítsa be a SPF- és DKIM-rekordokat a szerver domainjéhez, különben a levelek a spam mappába kerülhetnek.

A bejelentkezéssel kapcsolatos e-mailbeállítások (például, hogy az új fiókoknak ellenőrizniük kell-e a címüket, illetve hogy e-mailben küldhetők-e meghívók) a Bejelentkezés és fiókok oldalon találhatók.

Push-értesítések a mobilalkalmazásba

A push-értesítések működése

Az Antimatter soha nem kommunikál közvetlenül az Apple vagy a Google szervereivel. Minden értesítésnél egy push proxyt (push-közvetítőt) hív meg, amely a mobilalkalmazás hitelesítő adatait tárolja, és továbbítja az értesítést az Apple APNs szervereihez iPhone-ok számára, illetve a Google Firebase Cloud Messaging szervereihez Android-ok számára. Az Apple és a Google csak akkor szállítanak le értesítést, ha az az adott alkalmazáshoz tartozó hitelesítő adatokkal küldték. Ezért egy push proxy egyetlen mobilalkalmazás-verzióval működik: azzal, amelyik hitelesítő adatait tárolja.

  • Az Antimatter nem üzemeltet nyilvános push proxyt. Önnek kell üzemeltetnie az Antimatter push proxyt, a felhasználók által telepített mobilalkalmazás-verzió hitelesítő adataival.
  • Az Antimatter soha nem küld értesítéseket a Mattermost push-szolgáltatásaihoz, sem teszt-, sem hostolt verzióhoz: ezek kizárólag a Mattermost saját mobilalkalmazásaihoz szállítanak. Ha a szerver egyik ilyen címre van beállítva (például a https://push-test.mattermost.com, amelyet a régebbi Mattermost-konfigurációk használnak), nem küld semmit, és indításkor figyelmeztetést ír a naplóba.

Egy új szerveren nincs push-értesítési szerver, ezért nem küld push-értesítéseket, amíg be nem állítja a push proxy címét. Addig a mobilalkalmazás működik, de nem kap értesítéseket.

A push proxy futtatása

A push proxy a push-proxy repozitóriumban található. A README fájl elmagyarázza, hogyan kell beszerezni a két hitelesítő adatot, amelyek onnan származnak, ahol a mobilalkalmazás-verzió publikálva van:

  • Android: a Firebase-projekt szolgálati fiók fájlja, amelyet az Android-verzió használ.
  • iOS: egy APNs hitelesítő kulcs (AuthKey_<KEY ID>.p8) az Apple fejlesztői fiókban, amely az iOS-verziót publikálja, a kulcs azonosítójával és a csapat azonosítójával.

Helyezze őket a compose.yaml mellé, a proxy konfigurationsfájljával együtt:

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

push-proxy/config/antimatter-push-proxy.json, a bundle azonosítóval, a kulcs azonosítóval és a csapat azonosítóval:

{
    "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"
}

Az ApplePushTopic az iOS-verzió bundle azonosítója. Az ApplePushUseDevelopment csak akkor true, ha a verziót Xcode-ból telepítették. A hívások iPhone-okon VoIP push-ökön keresztül csengenek, amelyek ugyanazt a kulcsot használják, és itt nem igényelnek további beállítást.

A webhelyen kész kiegészítő áll rendelkezésre a compose-fájlhoz: compose.push.example.yaml. Ez a publikált ghcr.io/antimatterchat/push-proxy:latest képet futtatja.

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

Indításkor a proxy naplója felsorolja a beállított push célpontokat, és hibát jelez minden olyan célpont számára, amelynek hitelesítő adatait nem tudja betölteni. A proxy nem publikál portot: csak az Antimatter érheti el, a compose hálózaton keresztül.

Docker nélkül a push proxy .deb vagy .rpm csomagját telepítse: lásd A GIF-szolgáltatás és a push proxy csomagjai.

A push proxy nem ellenőrzi, ki hívja meg. Ne tegye ki az internetre. Ha másik gazdagépen fut, helyezze HTTPS mögé, és korlátozza, ki érheti el: az értesítések üzenetszöveget is tartalmazhatnak.

Az Antimatter beállítása a proxyra

A Rendszerkonzol › Környezet › Push értesítés szerver menüpontban állítsa be az Push értesítések engedélyezése opciót az Értesítések küldése saját push proxy szerveren keresztül értékre, a Push értesítés szerver mezőt pedig a http://push-proxy:8066 címre (vagy a proxy HTTPS-címére, ha más helyen fut). Az oldal nem menthető, ha ez az opció be van kapcsolva, de nincs megadva cím. A push értesítések küldésének leállításához válassza a Ne küldjön push értesítéseket lehetőséget. Vagy változókkal az antimatter szolgáltatáson:

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

Ellenőrzéshez: jelentkezzen be a mobilappal, helyezze a háttérbe, és kérje meg egy másik fiókot, hogy emelje meg. Ha nem érkezik semmi, keresse a push kulcsszót az Antimatter naplójában és a proxy naplójában: ezek jelzik, ha ismeretlen az eszköz típusa, ha elutasítottak egy kulcsot, vagy ha az eszköz másik app verzióhoz tartozik.

Az értesítések tartalma

Rendszerkonzol › Oldal beállítások › Értesítések › Push értesítés tartalma (EmailSettings.PushNotificationContents):

OpcióÉrték
Általános leírás, csak a küldő nevévelgeneric_no_channel
Általános leírás a küldő és a csatorna nevévelgeneric
Teljes üzenettartalom a push értesítés terhelésében (alapérték)full
Teljes üzenettartalom, amelyet a szerverről letöltenek érkezéskorid_loaded

Az id_loaded beállítással a proxy-n, Apple- és Google-szolgáltatáson áthaladó értesítés csak egy azonosítót tartalmaz, és az app a szerverről tölti le az üzenetet: az üzenetszöveg soha nem halad át a szolgáltatásaikon. Ez a legjobb választás, ha az üzenetek bizalmasak.

A Max értesítések csatornánként beállítás a Push értesítés szerver oldalon (TeamSettings.MaxNotificationsPerChannel, alapértelmezés szerint 1000) a csatorna maximális taglétszámát határozza meg, amelynél az @here, @all és @channel említések még működnek. Nagyobb csatornákban ezek az említések és a gépelési jelzők kikapcsolásra kerülnek.