E-post- och pushaviseringar

Antimatter skickar e-post för inbjudningar, lösenordsåterställningar, verifiering och missade meddelanden, samt pushaviseringar till mobilappen via en push-proxy. Ingen av delarna fungerar förrän du har konfigurerat den.

Utgående e-post (SMTP)

Antimatter skickar e-post via en SMTP-server som du tillhandahåller: din organisations mailserver eller en tjänst för transaktionell e-post. Utan den kan inte personer återställa ett glömt lösenord, e-postinbjudningar och verifiering når inte fram, och ingen får e-postaviseringar om missade meddelanden.

Ställ in det i Systemkonsol › Miljö › SMTP, eller med variabler:

InställningNyckel och variabelStandard
SMTP ServerEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
SMTP serverportEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Aktivera SMTP-autentiseringEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHav utan anslutningssäkerhet, på med den
Användarnamn på SMTP-serverEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEtom
Lösenord SMTP-serverEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDtom
AnslutningssäkerhetEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYIngen (tom); eller TLS eller STARTTLS
Ignorera verifiering av server-certifikatEmailSettings.SkipServerCertificateVerificationav. Låt den vara av i produktionsmiljö.

Använd STARTTLS på port 587 eller TLS på port 465, enligt vad din leverantör anger. Klicka sedan på Testa anslutningen på samma sida: Antimatter skickar ett testmejl till din egen adress.

En typisk uppsättning med Docker Compose, i compose.override.yaml bredvid 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

Placera SMTP_PASSWORD i .env. Webbplatsens compose-fil placerar servern på det standardnätverket, som har internetåtkomst, så den kan nå en extern SMTP-server.

Inställningar för avsändare och aviseringse-post

I Systemkonsol › Site-konfiguration › Aviseringar:

InställningNyckelStandard
Aktivera meddelande via e-postEmailSettings.SendEmailNotificationspå
Visningsnamn i meddelandeEmailSettings.FeedbackNametom
Meddelande från adressEmailSettings.FeedbackEmailtest@example.com: ändra den
Svara-till adress för meddelandenEmailSettings.ReplyToAddresstest@example.com: ändra den
Mejladress för supportmejlSupportSettings.SupportEmailtom
E-postadress i sidfotEmailSettings.FeedbackOrganizationtom
Innehåll e-postmeddelandeEmailSettings.EmailNotificationContentsTypeSkicka fullständiga meddelandeinnehåll (full) eller en generell beskrivning med endast avsändarens namn (generic)
Aktivera massbearbetning av e-postEmailSettings.EnableEmailBatchingav. På, så kan personer välja att få missade meddelanden grupperade i ett e-postmeddelande var 15:e minut eller var timme, istället för ett e-postmeddelande per meddelande.
Använd kanalnamn i e-postaviseringarEmailSettings.UseChannelInEmailNotificationsAv
Aktivera läget Förhandsgranskning av bannerEmailSettings.EnablePreviewModeBannerpå: medan e-postaviseringar är av, visar en banner för administratörer att e-post inte är konfigurerad

Avsändaradressen måste vara en adress som din SMTP-server är tillåten att skicka som. Ställ in SPF och DKIM för dess domän, annars kan e-postmeddelanden hamna i skräpposten.

E-postrelaterade inloggningsinställningar (till exempel om nya konton måste verifiera sin adress och om inbjudningar kan skickas per e-post) finns under Inloggning och konton.

Pushaviseringar till mobilappen

Så fungerar push

Antimatter kommunicerar aldrig direkt med Apple eller Google. För varje avisering anropar det en push-proxy som har mobilappens autentiseringsuppgifter och vidarebefordrar aviseringen till Apple (APNs) för iPhones och till Google (Firebase Cloud Messaging) för Android-telefoner. Apple och Google levererar bara en avisering när den skickas med de autentiseringsuppgifter som tillhör den app den avser. En push-proxy fungerar alltså med en bygg av mobilappen: den vars autentiseringsuppgifter den har.

  • Antimatter driver ingen offentlig push-proxy. Du driver själv Antimatters push-proxy med de autentiseringsuppgifter som tillhör den bygg av mobilappen som dina användare installerar.
  • Antimatter skickar aldrig aviseringar till Mattermosts push-tjänster, vare sig test- eller hostade: de levererar bara till Mattermosts egna mobilappar. Om servern är inställd på en av deras adresser (till exempel https://push-test.mattermost.com, som äldre Mattermost-konfigurationer använder), skickas inget och en varning loggas vid start.

En ny server har ingen push-aviseringsserver, så den skickar inga pushaviseringar förrän du har ställt in adressen till din push-proxy. Förrän dess fungerar mobilappen men får inga aviseringar.

Kör push-proxyn

Push-proxyn finns i push-proxy-repositoryn. Dess README förklarar hur man får de två autentiseringsuppgifterna, som kommer från de konton som publicerar din bygg av mobilappen:

  • Android: en tjänstekontosfil för det Firebase-projekt som din Android-bygg använder.
  • iOS: en APNs-autentiseringsnyckel (AuthKey_<KEY ID>.p8) för det Apple-utvecklaraccount som publicerar din iOS-bygg, med dess nyckel-ID och team-ID.

Placera dem bredvid compose.yaml, tillsammans med proxyns konfigurationsfil:

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

push-proxy/config/antimatter-push-proxy.json, med din bundle identifier, nyckel-ID och 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 är din byggs iOS-bundle identifier. ApplePushUseDevelopment är true endast för bygg som installerats från Xcode. Samtal ringer på iPhones via VoIP-push, som använder samma nyckel och inte kräver något mer här.

Sajten har en färdig tillägg för compose-filen, compose.push.example.yaml. Den kör den publicerade bilden, 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

Vid start anger proxyns logg varje pushmål den har konfigurerat och loggar ett fel för sådana vars autentiseringsuppgifter den inte kan läsa. Proxyn publicerar ingen port: endast Antimatter når den, på compose-nätverket.

Utan Docker installerar du i stället push-proxyns .deb- eller .rpm-paket: se GIF-tjänsten och push-proxyns paket.

Pushproxyn kontrollerar inte vem som anropar den. Exponera den inte mot internet. Om den körs på en annan värd, placera den bakom HTTPS och begränsa vem som kan nå den: aviseringar kan innehålla meddelandetext.

Peaka Antimatter mot proxyn

I Systemkonsol › Miljö › Push Notification Server, sätt Aktivera push-avisering till Skicka pushaviseringar genom din egen pushproxy, och Push Notification Server till http://push-proxy:8066 (eller proxyens HTTPS-adress om den körs någon annanstans). Sidan kan inte sparas med detta alternativ och ingen adress. För att sluta skicka pushaviseringar, välj Skicka inte push-aviseringar. Eller med variabler på tjänsten antimatter:

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

För att kontrollera: logga in med mobilappen, placera den i bakgrunden och låt ett annat konto nämna dig. Om inget kommer, leta efter push i Antimatters logg och i proxyns logg: de anger om enhetstypen är okänd, om en nyckel avvisades, eller om enheten tillhör en annan appversion.

Vad aviseringar innehåller

Systemkonsol › Site-konfiguration › Aviseringar › Innehåll push-meddelande (EmailSettings.PushNotificationContents):

AlternativVärde
Generisk beskrivning med endast avsändarnamngeneric_no_channel
Generisk beskrivning med avsändar- och kanalnamngeneric
Full meddelandehalt skickad i aviseringens last (standard)full
Full meddelandehalt hämtad från servern vid mottagandeid_loaded

Med id_loaded bär den avisering som går genom proxyn, Apple och Google, endast ett id, och appen hämtar meddelandet från din server: meddelandetext passerar aldrig deras tjänster. Det är det bästa valet när meddelanden är konfidentiella.

Aviseringsgräns i kanal med många användare, på sidan Push Notification Server, (TeamSettings.MaxNotificationsPerChannel, 1000 som standard) är det största antalet medlemmar en kanal kan ha för att @here, @all och @channel ska fungera. I större kanaler stängs dessa omnämnanden och skrivindikatorer av.