E-mail og push-notifikationer

Antimatter sender e-mail til invitationer, nulstilling af adgangskoder, verifikation og oversete beskeder, og push-notifikationer til mobilappen via en push-proxy. Ingen af delene fungerer, før du har konfigureret dem.

Udgående e-mail (SMTP)

Antimatter sender e-mail via en SMTP-server, som du stiller til rådighed: din organisations mailserver eller en transaktionsbaseret e-mailtjeneste. Uden det kan folk ikke nulstille en glemt adgangskode, e-mailinvitationer og verifikation når ikke frem, og ingen får e-mailnotifikationer om oversete beskeder.

Indstil det i Systemkonsol › Miljø › SMTP, eller med variabler:

IndstillingNøgle og variabelStandard
SMTP-serverEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
SMTP-serverportEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Aktivér SMTP-autentificeringEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHfra uden forbindelsessikkerhed, til med den
SMTP-serverbrugernavnEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEtom
SMTP-serveradgangskodeEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDtom
ForbindelsessikkerhedEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYIngen (tom); eller TLS eller STARTTLS
Spring validering af servercertifikat overEmailSettings.SkipServerCertificateVerificationfra. Lad den være fra i produktion.

Brug STARTTLS på port 587 eller TLS på port 465, som din udbyder angiver. Klik derefter på Test forbindelse på samme side: Antimatter sender en test-e-mail til din egen adresse.

En typisk opsætning med Docker Compose, i compose.override.yaml ved siden af 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

Sæt SMTP_PASSWORD i .env. Websitets compose-fil placerer serveren på det standardnetværk, som har internetadgang, så den kan nå en ekstern SMTP-server.

Afsender- og notifikationse-mailindstillinger

I Systemkonsol › Sitekonfiguration › Notifikationer:

IndstillingNøgleStandard
Aktivér e-mailnotifikationerEmailSettings.SendEmailNotificationstil
NotifikationsvisningsnavnEmailSettings.FeedbackNametom
Notifikationsadresse (fra)EmailSettings.FeedbackEmailtest@example.com: ændr den
Notifikationsadresse (svar til)EmailSettings.ReplyToAddresstest@example.com: ændr den
Support-e-mailadresseSupportSettings.SupportEmailtom
Adresse i notifikationsfodnoteEmailSettings.FeedbackOrganizationtom
Indhold i e-mailnotifikationerEmailSettings.EmailNotificationContentsTypeSend fulde beskedindhold (full), eller en generisk beskrivelse med kun afsenders navn (generic)
Aktivér samling af e-mailsEmailSettings.EnableEmailBatchingfra. Til, kan folk vælge at få oversete beskeder grupperet i én e-mail hver 15. minut eller hver time, i stedet for én e-mail hver.
Brug kanalnavn i e-mailnotifikationerEmailSettings.UseChannelInEmailNotificationsFra
Aktivér banner for forudvisningEmailSettings.EnablePreviewModeBannertil: mens e-mailnotifikationer er fra, fortæller en banner administratorer, at e-mail ikke er konfigureret

Afsenderadressen skal være en adresse, som din SMTP-server har tilladelse til at sende fra. Konfigurer SPF og DKIM for domænet, ellers kan e-mails ende i spam-mappen.

Indstillinger relateret til e-mail (f.eks. om nye konti skal verificere deres adresse, og om invitationer kan sendes via e-mail) findes under Login og konti.

Push-notifikationer til mobilappen

Sådan fungerer push

Antimatter taler aldrig direkte med Apple eller Google. For hver notifikation kalder det en push-proxy, som indeholder mobilappens legitimationsoplysninger og videresender notifikationen til Apple (APNs) for iPhones og til Google (Firebase Cloud Messaging) for Android-telefoner. Apple og Google leverer kun en notifikation, hvis den sendes med legitimationsoplysningerne for den pågældende app. En push-proxy fungerer derfor kun med én version af mobilappen: den, hvis legitimationsoplysninger den indeholder.

  • Antimatter driver ikke en offentlig push-proxy. Du driver selv Antimatters push-proxy med legitimationsoplysningerne for den version af mobilappen, dine brugere installerer.
  • Antimatter sender aldrig notifikationer til Mattermosts push-tjenester, uanset om de er test- eller hostede: de leverer kun til Mattermosts egne mobilapper. Hvis serveren er konfigureret til én af deres adresser (f.eks. https://push-test.mattermost.com, som ældre Mattermost-konfigurationer bruger), sendes der intet, og der logges en advarsel ved opstart.

En ny server har ingen push-notifikationsserver, så den sender ingen push-notifikationer, indtil du angiver adressen til din push-proxy. Indtil da fungerer mobilappen, men modtager ingen notifikationer.

Kør push-proxyen

Push-proxyen findes i push-proxy-repositoriet. README-filen forklarer, hvordan man får de to legitimationsoplysninger, som kommer fra de konti, der publicerer din version af mobilappen:

  • Android: en servicekonto-fil fra det Firebase-projekt, din Android-version bruger.
  • iOS: en APNs-autentificeringsnøgle (AuthKey_<KEY ID>.p8) fra det Apple-udviklerkonto, der publicerer din iOS-version, samt nøgle-ID og team-ID.

Placer dem ved siden af compose.yaml sammen med proxyens 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-identifikator, nøgle-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 din versions iOS-bundle-identifikator. ApplePushUseDevelopment er true kun for versioner installeret fra Xcode. Opkald ringer på iPhones via VoIP-pushes, som bruger den samme nøgle og ikke kræver yderligere indstillinger her.

Siden har en færdig tilføjelse til compose-filen, compose.push.example.yaml. Den kører det publicerede image, 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 start nævner proxyens log hver push-mål, den opsætter, og logger en fejl for dem, hvis dens credentials ikke kan indlæses. Proxyen publicerer ingen port: kun Antimatter når til den, på compose-netværket.

Uden Docker installerer du i stedet push-proxyens .deb- eller .rpm-pakke: se GIF-tjenesten og push-proxy-pakkerne.

Push-proxyen tjekker ikke, hvem der kalder den. Udsæt den ikke for Internettet. Hvis den kører på en anden vært, placer den bag HTTPS og begrænser, hvem der kan nå den: notifikationer kan indeholde beskedtekst.

Peg Antimatter på proxyen

I Systemkonsol › Miljø › Push-notifikationsserver, sæt Aktivér pushnotifikationer til Send pushnotifikationer gennem din egen push-proxy, og Push-notifikationsserver til http://push-proxy:8066 (eller proxyens HTTPS-adresse, hvis den kører et andet sted). Siden kan ikke gemmes med dette valg og ingen adresse. For at stoppe afsendelsen af pushnotifikationer, vælg Send ikke pushnotifikationer. Eller med variabler på antimatter-tjenesten:

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

For at tjekke: log ind med mobilappen, læg den i baggrunden og få en anden konto til at omtale dig. Hvis intet ankommer, søg efter push i Antimatters log og i proxyens log: de fortæller, om enhedstypen er ukendt, en nøgle blev afvist, eller om enheden tilhører en anden app-version.

Indhold i notifikationer

Systemkonsol › Sitekonfiguration › Notifikationer › Indhold i pushnotifikationer (EmailSettings.PushNotificationContents):

ValgVærdi
Generisk beskrivelse med kun afsenders navngeneric_no_channel
Generisk beskrivelse med afsender og kanalnavnegeneric
Fuld beskedtekst sendt i notifikationens payload (standard)full
Fuld beskedtekst hentet fra serveren ved modtagelseid_loaded

Med id_loaded indeholder notifikationen, der går gennem proxyen, Apple og Google, kun en id, og appen henter beskeden fra din server: beskedtekst passerer aldrig deres tjenester. Det er det bedste valg, når beskeder er fortrolige.

Grænse for notifikationer i store kanaler på siden Push-notifikationsserver (TeamSettings.MaxNotificationsPerChannel, 1000 som standard) er det største antal medlemmer, en kanal kan have, for at @here, @all og @channel skal fungere. I større kanaler slås disse omtaler og skriveindikatorer fra.