E-post- og pushvarsler

Antimatter sender e-post for invitasjoner, nullstilling av passord, verifisering og uleste meldinger, samt pushvarsler til mobilappen via en push-proxy. Ingen av delene fungerer før du har konfigurert dem.

Utgående e-post (SMTP)

Antimatter sender e-post via en SMTP-tjener du stiller til rådighet: organisasjonens e-posttjener eller en transaksjonell e-posttjeneste. Uten dette kan ikke brukere stille om et glemt passord, e-postinvitasjoner og verifisering ikke kommer frem, og ingen får e-postvarsler om uleste meldinger.

Stil dette i Systemkonsoll › Miljø › SMTP, eller med variabler:

InnstillingNøkkel og variabelStandard
SMTP-tjenerEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
SMTP-tjenerportEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Aktiver SMTP-autentiseringEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHav uten forbindelsessikkerhet, på med den
SMTP-tjenerbrukernavnEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEtom
SMTP-serverpassordEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDtom
ForbindelsessikkerhetEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYIngen (tom); eller TLS eller STARTTLS
Hopp over verifisering av serversertifikatEmailSettings.SkipServerCertificateVerificationav. La den stå av i produksjon.

Bruk STARTTLS på port 587 eller TLS på port 465, slik leverandoren din oppgir. Klikk deretter på Test forbindelse på samme side: Antimatter sender en test-e-post til din egen adresse.

En typisk oppsett med Docker Compose, i compose.override.yaml ved siden av 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

Legg SMTP_PASSWORD i .env. Nettstedets compose-fil plasserer tjeneren på standardnettverket, som har tilgang til internett, slik at den kan nå en ekstern SMTP-tjener.

Avsender- og varslingse-postinnstillinger

I Systemkonsoll › Nettstedsoppsett › Varsler:

InnstillingNøkkelStandard
Aktiver e-postvarslerEmailSettings.SendEmailNotificationspå
Visningsnavn for varslerEmailSettings.FeedbackNametom
Avsenderadresse for varslerEmailSettings.FeedbackEmailtest@example.com: endre den
Svaradresse for varslerEmailSettings.ReplyToAddresstest@example.com: endre den
E-postadresse for supportSupportSettings.SupportEmailtom
Postadresse i bunntekst for varslerEmailSettings.FeedbackOrganizationtom
Innhold i e-postvarslerEmailSettings.EmailNotificationContentsTypeSend fullt meldingsinnhold (full), eller en generell beskrivelse med kun avsenders navn (generic)
Aktiver e-postsamlingEmailSettings.EnableEmailBatchingav. På, kan brukere velge å få uleste meldinger samlet i én e-post hver 15. minutt eller hver time, i stedet for én e-post for hver melding.
Bruk kanalnavn i e-postvarslerEmailSettings.UseChannelInEmailNotificationsav
Aktiver banner for forhåndsvisningsmodusEmailSettings.EnablePreviewModeBannerpå: mens e-postvarsler er av, forteller et banner administratorer at e-post ikke er konfigurert

Avsenderadressen må være en adresse SMTP-tjeneren din har tillatelse til å sende fra. Konfigurer SPF og DKIM for domenet, ellers kan e-postene havne i søppelposten.

Innstillinger for innlogging knyttet til e-post (om nye kontoer må verifisere adressen sin, om invitasjoner kan sendes via e-post) finnes under Innlogging og kontoer.

Skjermvarsler til mobilappen

Slik fungerer push

Antimatter kommuniserer aldri direkte med Apple eller Google. For hvert varsel kaller det en push-proxy, som har mobilappens legitimasjon og videresender varselet til Apple (APNs) for iPhone og til Google (Firebase Cloud Messaging) for Android-telefoner. Apple og Google leverer kun varsler som er sendt med legitimasjonen til den spesifikke appen. En push-proxy fungerer derfor med én byggetype av mobilappen: den som har legitimasjonen den inneholder.

  • Antimatter driver ikke en offentlig push-proxy. Du driver selv Antimatter-push-proxyen med legitimasjonen til den byggetypen av mobilappen brukerne dine installerer.
  • Antimatter sender aldri varsler til Mattermosts push-tjenester, verken test- eller vertsbaserte: de leverer kun til Mattermosts egne mobilapper. Hvis tjeneren er satt til én av deres adresser (som https://push-test.mattermost.com, som eldre Mattermost-konfigurasjoner bruker), sendes ingenting, og en advarsel logges ved oppstart.

En ny tjener har ingen push-varseltjener, så den sender ingen push-varsler inntil du setter adressen til din push-proxy. Inntil da fungerer mobilappen, men mottar ingen varsler.

Kjør push-proxyen

Push-proxyen finnes i push-proxy-reservoaret. README-filen forklarer hvordan du får de to legitimasjonene, som kommer fra kontoene som publiserer bygget av mobilappen din:

  • Android: en tjenestekontofil fra Firebase-prosjektet Android-bygget ditt bruker.
  • iOS: en APNs-autentiseringsnøkkel (AuthKey_<KEY ID>.p8) fra Apple-utviklerkontoen som publiserer iOS-bygget ditt, med nøkkel-ID og team-ID.

Plasser dem ved siden av compose.yaml, sammen med proxyens konfigurasjonsfil:

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 bündelidentifikator, nøkkel-ID og 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 er iOS-bündelidentifikatoren til bygget ditt. ApplePushUseDevelopment er true kun for bygger installert fra Xcode. Samtaler ringes på iPhone via VoIP-push, som bruker samme nøkkel og ikke krever noe mer her.

Nettstedet har en ferdig tilleggsfil til compose-filen, compose.push.example.yaml. Den kjører den utgitte bildet, 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

Ved oppstart navngir proxyens logg hver pushmål den har satt opp, og logger en feil for de der den ikke klarer å laste inn legitimasjon. Proxyen publiserer ingen port: bare Antimatter når den, på compose-nettverket.

Uten Docker installerer du i stedet .deb- eller .rpm-pakken for push-proxyen: se Pakkene for GIF-tjenesten og push-proxyen.

Push-proxyen sjekker ikke hvem som kaller den. Ikke eksponer den for Internett. Hvis den kjører på en annen vert, legg den bak HTTPS og begrens hvem som kan nå den: varsler kan inneholde meldingstekst.

Pek Antimatter mot proxyen

I Systemkonsoll › Miljø › Push-varselserver, sett Aktiver pushvarsler til Send pushvarsler gjennom din egen pushproxy, og Push-varselserver til http://push-proxy:8066 (eller proxyens HTTPS-adresse hvis den kjører et annet sted). Siden kan ikke lagres med dette alternativet og ingen adresse. For å slutte å sende pushvarsler, velg Ikke send pushvarsler. Eller med variabler på antimatter-tjenesten:

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

For å sjekke: logg inn med mobilappen, legg den i bakgrunnen og la en annen konto nevne deg. Hvis ingenting kommer, se etter push i Antimatters logg og i proxyens logg: de forteller om enhetstypen er ukjent, om en nøkkel ble avvist, eller om enheten tilhører en annen app-bygg.

Hva varsler inneholder

Systemkonsoll › Nettstedsoppsett › Varsler › Innhold i pushvarsler (EmailSettings.PushNotificationContents):

AlternativVerdi
Generisk beskrivelse med kun avsendernavngeneric_no_channel
Generisk beskrivelse med avsender og kanalnavngeneric
Full meldingsinnhold sendt i varslens last (standard)full
Full meldingsinnhold hentet fra serveren ved mottakid_loaded

Med id_loaded går varselet gjennom proxyen, og Apple og Google bærer kun en id, og appen henter meldingen fra din server: meldingstekst passerer aldri gjennom deres tjenester. Det er det beste valget når meldinger er fortrolige.

Grense for varsler i store kanaler, på siden Push-varselserver, (TeamSettings.MaxNotificationsPerChannel, 1000 som standard) er det største antallet medlemmer en kanal kan ha for at @here, @all og @channel skal fungere. I større kanaler slås disse nevningene og skriveindikatorer av.