Sähköposti- ja push-ilmoitukset

Antimatter lähettää sähköpostia kutsuille, salasanan nollauksille, vahvistuksille ja jääneille viesteille sekä push-ilmoituksia mobiilisovellukseen push-välityspalvelimen kautta. Kumpikaan ei toimi, ennen kuin määrität sen.

Lähetysähköposti (SMTP)

Antimatter lähettää sähköpostia sinun tarjoamasi SMTP-palvelimen kautta: organisaationi postipalvelimen tai transaktio-sähköpostipalvelun. Ilman sitä ihmiset eivät voi nollata unohdetun salasanan, sähköpostikutsut ja -vahvistukset eivät saavu, eikä kukaan saa sähköpostilmoituksia jääneistä viesteistä.

Määritä se Järjestelmäkonsoli › Ympäristö › SMTP -osiossa tai muuttujilla:

AsetusAvain ja muuttujaOletusarvo
SMTP-palvelinEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
SMTP-palvelimen porttiEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Ota SMTP-tunnistautuminen käyttöönEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHpois ilman yhteyden turvallisuutta, käytössä sen kanssa
SMTP-palvelimen käyttäjätunnusEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEtyhjä
SMTP-palvelimen salasanaEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDtyhjä
Yhteyden turvallisuusEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYEi mitään (tyhjä); tai TLS tai STARTTLS
Ohita palvelimen todistuksen tarkistusEmailSettings.SkipServerCertificateVerificationpois. Jätä se pois tuotantoympäristössä.

Käytä STARTTLS-protokollaa portissa 587 tai TLS-protokollaa portissa 465 palveluntarjoajasi ohjeiden mukaisesti. Klikkaa sitten Testaa yhteys samalla sivulla: Antimatter lähettää testisähköpostin omaan osoitteeseesi.

Tyypillinen asennus Docker Compose -ympäristössä, tiedostossa compose.override.yaml compose.yaml:n viereen:

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

Aseta SMTP_PASSWORD tiedostoon .env. Sivuston compose-tiedosto asettaa palvelimen oletusverkkoon, jolla on Internet-yhteys, joten se voi tavoittaa ulkoisen SMTP-palvelimen.

Lähettäjän ja ilmoitussähköpostin asetukset

Osa Järjestelmäkonsoli › Sivuston asetukset › Ilmoitukset:

AsetusAvainOletusarvo
Ota sähköpostilmoitukset käyttöönEmailSettings.SendEmailNotificationson
Ilmoitusten näyttönimiEmailSettings.FeedbackNametyhjä
Ilmoitusten lähettäjän osoiteEmailSettings.FeedbackEmailtest@example.com: muuta se
Ilmoitusten vastausosoiteEmailSettings.ReplyToAddresstest@example.com: muuta se
TukisähköpostiosoiteSupportSettings.SupportEmailtyhjä
Ilmoitusten alarekin osoiteEmailSettings.FeedbackOrganizationtyhjä
Sähköpostilmoitusten sisältöEmailSettings.EmailNotificationContentsTypeLähetä koko viestin sisältö (full) tai yleiskuvaus, jossa on vain lähettäjän nimi (generic)
Sähköpostien yhdistäminenEmailSettings.EnableEmailBatchingpois. Käytössä ollessa ihmiset voivat valita, että jääneet viestit ryhmitellään yhteen sähköpostiin 15 minuutin tai tunnin välein, sen sijaan että jokaisesta viestistä lähetettäisiin oma sähköpostinsa.
Käytä kanavan nimeä sähköposti-ilmoituksissaEmailSettings.UseChannelInEmailNotificationsEi käytössä
Ota esikatselutilan banneri käyttöönEmailSettings.EnablePreviewModeBannerkäytössä: kun sähköpostilmoitukset ovat pois käytöstä, banneri kertoo ylläpitäjille, ettei sähköpostia ole määritetty

Lähettäjän osoitteen (From) on oltava sellainen, jonka lähettämiseen SMTP-palvelimellasi on lupa. Määritä SPF- ja DKIM-tunnistautuminen palvelimen verkkotunnukselle, muuten sähköpostit voivat päätyä roskapostiin.

Sähköpostiin liittyvät kirjautumisasetukset (esim. uuden tilin osoitteen vahvistus ja kutsujen lähettäminen sähköpostilla) löytyvät kohdasta Kirjautuminen ja tilit.

Push-ilmoitukset mobiilisovellukseen

Miten push-ilmoitukset toimivat

Antimatter ei koskaan kommunikoi Applen tai Googlen kanssa suoraan. Jokaiselle ilmoitukselle se kutsuu push-välityspalvelinta, joka säilyttää mobiilisovelluksen tunnistetiedot ja välittää ilmoituksen Applen (APNs) kautta iPhoneille ja Googlen (Firebase Cloud Messaging) kautta Android-puhelimille. Apple ja Google toimittavat ilmoituksen vain, jos se on lähetetty sen sovelluksen tunnistetiedoilla, jolle se on tarkoitettu. Push-välityspalvelin siis toimii yhdellä mobiilisovelluksen versioilla: sen, jonka tunnistetiedot se säilyttää.

  • Antimatter ei ylläpitä julkista push-välityspalvelinta. Sinä ylläpidät Antimatterin push-välityspalvelinta itse käyttäen niitä mobiilisovelluksen version tunnistetietoja, jotka käyttäjät asennavat.
  • Antimatter ei koskaan lähetä ilmoituksia Mattermostin push-palveluihin, olipa kyseessä testipalvelu tai hostattu palvelu: ne toimittavat ilmoitukset vain Mattermostin omiin mobiilisovelluksiin. Jos palvelin on asetettu johonkin näistä osoitteista (kuten https://push-test.mattermost.com, jota vanhemmat Mattermost-asetukset käyttävät), se ei lähetä mitään ja kirjaa varoituksen käynnistyksen yhteydessä.

Uudella palvelimella ei ole push-ilmoituspalvelinta, joten se ei lähetä push-ilmoituksia, kunnes asetat push-välityspalvelimesi osoitteen. Siihen asti mobiilisovellus toimii, mutta ei vastaanota ilmoituksia.

Push-välityspalvelimen käynnistys

Push-välityspalvelin sijaitsee push-proxy-säilössä. Sen README-tiedosto ohjeistaa, miten hankit kaksi tunnistetietoa, jotka tulevat tilistä, jolla mobiilisovelluksesi versio julkaisiin:

  • Android: Firebase-projektin palvelu-tilin tiedosto, jota Android-versiosi käyttää.
  • iOS: APNs-tunnistautumistunnus (AuthKey_<KEY ID>.p8) Apple Developer -tililtä, jolla iOS-versiosi julkaisiin, sekä sen tunnus-ID ja tiimi-ID.

Aseta ne compose.yaml:n viereen, yhdessä välityspalvelimen asetustiedoston kanssa:

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

push-proxy/config/antimatter-push-proxy.json, jossa on paketin tunniste, tunnus-ID ja tiimi-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 on iOS-versiosi paketin tunniste. ApplePushUseDevelopment on true vain Xcode:sta asennetuille versioille. Puhelut soittavat iPhoneille VoIP-push-ilmoituksien kautta, jotka käyttävät samaa tunnusta ja eivät vaadi tässä mitään lisäyksiä.

Sivustolla on valmis lisäys compose-tiedostoon, compose.push.example.yaml. Se suorittaa julkaistun kuvan, 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

Käynnistyessään välityspalvelimen lokitiedosto nimetää jokaisen asettaman push-kohteen ja loki virheen, jos sen todennustietoja ei voi ladata. Välityspalvelin ei julkista porttia: vain Antimatter pääsee siihen käsiksi compose-verkossa.

Jos Dockeria ei käytetä, asenna push-välityspalvelimen .deb- tai .rpm-paketti sen sijaan: katso GIF-palvelu ja push-välityspalvelimen paketit.

Push-välityspalvelin ei tarkista, kuka sitä kutsuu. Älä julkaise sitä Internetiin. Jos se ajetaan toisella isäntäkonetta, suojaa se HTTPS:llä ja rajoita, ketkä voivat päästä siihen käsiksi: ilmoitukset voivat sisältää viestin tekstin.

Osoita Antimatter välityspalvelimeen

Aseta Järjestelmäkonsoli › Ympäristö › Push-ilmoituspalvelin -sivulla Ota push-ilmoitukset käyttöön -asetukseksi Lähetä push-ilmoitukset oman push-välityspalvelimen kautta ja Push-ilmoituspalvelin -arvoksi http://push-proxy:8066 (tai välityspalvelimen HTTPS-osoite, jos se ajetaan toisessa paikassa). Sivua ei voi tallentaa, jos tämä vaihtoehto on valittu ja osoitetta ei ole. Voit lopettaa push-ilmoitusten lähettämisen valitsemalla Älä lähetä push-ilmoituksia. Vaihtoehtoisesti voit käyttää muuttujia antimatter-palvelussa:

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

Tarkistus: Kirjaudu sisään mobiilisovelluksella, vie se taustalle ja anna toisen tilin mainita sinut. Jos mitään ei saavuta, etsi push Antimatterin lokista ja välityspalvelimen lokista: ne kertovat, onko laitetyyppi tuntematon, onko avain hylätty vai kuuluuko laite toiseen sovellusversioon.

Ilmoitusten sisältö

Järjestelmäkonsoli › Sivuston asetukset › Ilmoitukset › Push-ilmoitusten sisältö (EmailSettings.PushNotificationContents):

VaihtoehtoArvo
Yleiskuvaus, jossa on vain lähettäjän nimigeneric_no_channel
Yleiskuvaus, jossa on lähettäjän ja kanavan nimetgeneric
Koko viestin sisältö, joka lähetetään ilmoituksen kuormana (oletus)full
Koko viestin sisältö, joka haetaan palvelimelta vastaanotettaessaid_loaded

Arvolla id_loaded välityspalvelimen, Applen ja Googlen kautta kulkeva ilmoitus sisältää vain id:n, ja sovellus hakee viestin omalta palvelimeltasi: viestin teksti ei koskaan kulje heidän palvelujensa kautta. Se on paras valinta, kun viestit ovat luottamuksellisia.

Suuren kanavan ilmoitusraja Push-välityspalvelin-sivulla (TeamSettings.MaxNotificationsPerChannel, oletuksena 1000) määrittää suurimman jäsenmäärän, jonka kanavassa voi olla, jotta @here, @all ja @channel-toiminnot toimivat. Suuremmissa kanavissa nämä maininnat ja kirjoitusilmaisimet poistetaan käytöstä.