E-mail- en pushmeldingen

Antimatter stuurt e-mail voor uitnodigingen, wachtwoordreset, verificatie en gemiste berichten, en pushmeldingen naar de mobiele app via een push-proxy. Zonder configuratie werkt niets.

Uitgaande e-mail (SMTP)

Antimatter stuurt e-mail via een SMTP-server die u aanlevert: de mailserver van uw organisatie of een transactie-e-mailservice. Zonder deze kunnen gebruikers geen vergeten wachtwoord resetten, komen e-mailuitnodigingen en verificatie niet aan, en krijgt niemand e-mailmeldingen over gemiste berichten.

Stel dit in via Systeemconsole › Omgeving › SMTP, of met variabelen:

InstellingSleutel en variabeleStandaardwaarde
SMTP e-mailserverEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
SMTP server poortEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
SMTP-verificatie inschakelenEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHuit zonder beveiliging van de verbinding, aan met beveiliging
SMTP server gebruikersnaamEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEleeg
SMTP server wachtwoordEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDleeg
Beveiliging verbinding(en)EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYGeen (leeg); of TLS of STARTTLS
Verificatie van servercertificaat overslaanEmailSettings.SkipServerCertificateVerificationuit. Laat dit uit in productie.

Gebruik STARTTLS op poort 587 of TLS op poort 465, zoals uw provider aangeeft. Klik daarna op Verbinding testen op dezelfde pagina: Antimatter stuurt een testmail naar uw eigen adres.

Een typische opstelling met Docker Compose, in compose.override.yaml naast 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

Plaats SMTP_PASSWORD in .env. Het compose-bestand van de site plaatst de server op het standaardnetwerk, dat internettoegang heeft, zodat het een externe SMTP-server kan bereiken.

Instellingen voor afzender en meldingse-mail

In Systeemconsole › Site Configuratie › Meldingen:

InstellingSleutelStandaardwaarde
Inschakelen van E-mail MeldingenEmailSettings.SendEmailNotificationsaan
Meldingsweergave NaamEmailSettings.FeedbackNameleeg
Melding Van-adresEmailSettings.FeedbackEmailtest@example.com: wijzig dit
Notificatie Antwoord-naar AdresEmailSettings.ReplyToAddresstest@example.com: wijzig dit
E-mailadres voor ondersteuningSupportSettings.SupportEmailleeg
Melding voettekst mailadresEmailSettings.FeedbackOrganizationleeg
Inhoud van e-mailmeldingEmailSettings.EmailNotificationContentsTypeVolledige berichtinhoud versturen (full), of een generieke beschrijving met alleen de naam van de afzender (generic)
E-mailbatching inschakelenEmailSettings.EnableEmailBatchinguit. Bij aan kunnen gebruikers kiezen om gemiste berichten in één e-mail te ontvangen, elke 15 minuten of elk uur, in plaats van een e-mail per bericht.
Kanaalnaam gebruiken in e-mailmeldingenEmailSettings.UseChannelInEmailNotificationsUit
Previewmodus Banner inschakelenEmailSettings.EnablePreviewModeBanneraan: terwijl e-mailmeldingen uit staan, toont een banner aan beheerders dat e-mail niet is geconfigureerd

Het afzenderadres moet een adres zijn waarnaam uw SMTP-server mag versturen. Stel SPF en DKIM in voor het domein, anders kunnen de e-mails in de spammap belanden.

E-mailgerelateerde instellingen voor het aanmelden (zoals of nieuwe accounts hun adres moeten verifiëren en of uitnodigingen per e-mail kunnen worden verstuurd) vindt u in Aanmelden en accounts.

Pushmeldingen naar de mobiele app

Hoe push werkt

Antimatter communiceert nooit rechtstreeks met Apple of Google. Voor elke melding roept het een push-proxy aan, die de inloggegevens van de mobiele app bewaart en de melding doorstuurt naar Apple (APNs) voor iPhones en naar Google (Firebase Cloud Messaging) voor Android-apparaten. Apple en Google leveren een melding alleen af als deze is verstuurd met de inloggegevens van de app waaraan deze is bestemd. Een push-proxy werkt dus met één build van de mobiele app: de build waarvan de inloggegevens het bewaart.

  • Antimatter draait geen openbare push-proxy. U draait de Antimatter push-proxy zelf, met de inloggegevens van de build van de mobiele app die uw gebruikers installeren.
  • Antimatter stuurt nooit meldingen naar de pushdiensten van Mattermost, of het nu test- of gehoste diensten zijn: die leveren alleen af aan de eigen mobiele apps van Mattermost. Als de server is ingesteld op een van hun adressen (zoals https://push-test.mattermost.com, wat oudere Mattermost-configuraties gebruiken), wordt er niets verstuurd en wordt bij het opstarten een waarschuwing gelogd.

Een nieuwe server heeft geen pushmeldingsserver, dus het stuurt geen pushmeldingen totdat u het adres van uw push-proxy instelt. Tot die tijd werkt de mobiele app, maar ontvangt u geen meldingen.

De push-proxy draaien

De push-proxy staat in de push-proxy-repository. De README legt uit hoe u de twee inloggegevens verkrijgt, die afkomstig zijn van de accounts die uw build van de mobiele app publiceren:

  • Android: een serviceaccountbestand van het Firebase-project dat uw Android-build gebruikt.
  • iOS: een APNs-authenticatiekey (AuthKey_<KEY ID>.p8) van het Apple-ontwikkelaarsaccount dat uw iOS-build publiceert, inclusief de key-ID en team-ID.

Plaats ze naast compose.yaml, samen met het configuratiebestand van de proxy:

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

push-proxy/config/antimatter-push-proxy.json, met uw bundle-identificatiecode, key-ID en 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 is de iOS-bundle-identificatiecode van uw build. ApplePushUseDevelopment is alleen true voor builds die zijn geïnstalleerd vanuit Xcode. Gesprekken klinken op iPhones via VoIP-pushes, die dezelfde key gebruiken en hier verder niets extra's vereisen.

De site bevat een kant-en-klaar toevoeging voor het compose-bestand, compose.push.example.yaml. Hiermee wordt het gepubliceerde image ghcr.io/antimatterchat/push-proxy:latest uitgevoerd.

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

Bij het opstarten noemt het logboek van de proxy elk push-doel dat is geconfigureerd en logt het een fout voor elk doel waarvan de inloggegevens niet kunnen worden geladen. De proxy publiceert geen poort: alleen Antimatter kan er toegang toe krijgen, via het compose-netwerk.

Zonder Docker installeert u in plaats daarvan het .deb- of .rpm-pakket van de push-proxy: zie De GIF-service en de push-proxy-pakketten.

De push-proxy controleert niet wie er gebruik van maakt. Stel deze niet bloot aan het internet. Als deze op een andere host draait, plaats deze dan achter HTTPS en beperk wie er toegang toe heeft: meldingen kunnen berichttekst bevatten.

Antimatter naar de proxy wijzen

Stel in Systeemconsole › Omgeving › Push Notificatie Server Inschakelen Push Meldingen in op Stuur pushmeldingen via uw eigen push-proxy en Push Notificatie Server op http://push-proxy:8066 (of het HTTPS-adres van de proxy als deze elders draait). De pagina kan niet worden opgeslagen met deze optie en zonder adres. Om het versturen van pushmeldingen te stoppen, kiest u Verstuur geen meldings-notificaties. Of met variabelen in de antimatter-service:

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

Om te controleren: log in met de mobiele app, zet deze op de achtergrond en laat een ander account u vermelden. Als er niets aankomt, zoekt u naar push in het logboek van Antimatter en in het logboek van de proxy: hierin staat of het type apparaat onbekend is, of een sleutel is geweigerd, of het apparaat bij een andere app-build hoort.

Wat meldingen bevatten

Systeemconsole › Site Configuratie › Meldingen › Push Notificatie Inhoud (EmailSettings.PushNotificationContents):

OptieWaarde
Algemene beschrijving met alleen de naam van de afzendergeneric_no_channel
Algemene beschrijving met de naam van de afzender en het kanaalgeneric
Volledige berichtinhoud die in de payload van de melding wordt gestuurd (standaard)full
Volledige berichtinhoud die bij ontvangst van de server wordt opgehaaldid_loaded

Bij id_loaded bevat de melding die via de proxy gaat, bij Apple en Google alleen een id, en de app haalt het bericht op van uw server: de berichttekst gaat nooit via hun services. Dit is de beste keuze wanneer berichten vertrouwelijk zijn.

Meldingsdrempel voor grote kanalen, op de pagina Push Notification Server, (TeamSettings.MaxNotificationsPerChannel, standaard 1000) is het maximale aantal leden dat een kanaal mag hebben voor @here, @all en @channel te werken. In grotere kanalen zijn deze vermeldingen en de type-indicatoren uitgeschakeld.