Email at push notifications

Ipinapadala ng Antimatter ang email para sa mga imbitasyon, pag-reset ng password, pagsusuri, at mga hindi natanggap na mensahe, at ang mga push notification sa mobile app gamit ang push proxy. Hindi sila gagana hangga't hindi mo sila i-configure.

Outgoing email (SMTP)

Ipinapadala ng Antimatter ang email gamit ang SMTP server na ibibigay mo: ang mail server ng iyong organisasyon, o isang transactional email service. Kung wala ito, hindi maaaring i-reset ng mga tao ang kanilang nakalimutan na password, hindi darating ang mga email na imbitasyon at pagsusuri, at walang makakatanggap ng email na notisikasyon ng mga hindi natanggap na mensahe.

I-set ito sa System Console › Environment › SMTP, o gamit ang mga variable:

SettingKey at variableDefault
SMTP ServerEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
SMTP Server PortEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Pahintulutan ng SMTP AuthenticationEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHoff kung walang connection security, on kung mayroon
SMTP Server UsernameEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEwalang laman
Password ng SMTP ServerEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDwalang laman
Seguridad ng KoneksyonEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYWala (blangko); o TLS o STARTTLS
Laktawan ang Pag-verify ng Certificate ng ServerEmailSettings.SkipServerCertificateVerificationoff. Iwanan itong off sa production.

Gumamit ng STARTTLS sa port 587 o TLS sa port 465, ayon sa sinasabi ng iyong provider. Pagkatapos, pindutin ang Test ng Connection sa parehong pahina: magpapadala ng test email ang Antimatter sa sarili mong address.

Isang karaniwang setup gamit ang Docker Compose, sa compose.override.yaml katabi ng 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

Ilagay ang SMTP_PASSWORD sa .env. Ang compose file ng site ay naglalagay ng server sa default network, na may access sa Internet, kaya maaari nitong maabot ang isang SMTP server sa labas.

Mga setting ng sender at notification email

Sa System Console › Konfigurasyon ng Site › Mga Notisikasyon:

SettingSusiDefault
Paganahin ang Email NotificationsEmailSettings.SendEmailNotificationson
Mga Notisikasyon Display NameEmailSettings.FeedbackNamewalang laman
Mga Notisikasyon Mula sa AddressEmailSettings.FeedbackEmailtest@example.com: baguhin ito
Mga Notisikasyon Reply-To AddressEmailSettings.ReplyToAddresstest@example.com: baguhin ito
Address ng Email ng SuportaSupportSettings.SupportEmailwalang laman
Mga Notisikasyon Footer Mailing AddressEmailSettings.FeedbackOrganizationwalang laman
Nilalaman ng Email NotificationEmailSettings.EmailNotificationContentsTypeIpadala ang buong nilalaman ng mensahe (full), o isang pangkalahatang paglalarawan na may pangalan ng sender lamang (generic)
Paggamitan ang Email BatchingEmailSettings.EnableEmailBatchingoff. Kung on, maaari ng mga tao na pumili na makatanggap ng mga hindi natanggap na mensahe na nakagroup sa isang email bawat 15 minuto o bawat oras, sa halip na isang email bawat isa.
Gumamit ng Pangalan ng Channel sa Email NotificationsEmailSettings.UseChannelInEmailNotificationsOff
Paggamitan ang Preview Mode BannerEmailSettings.EnablePreviewModeBanneron: habang off ang mga email na notisikasyon, ipapahiwatig ng banner sa mga administrator na hindi naka-configure ang email

Ang From address ay dapat isa sa mga address na pwedeng gamitin ng iyong SMTP server para magpadala ng email; i-configure ang SPF at DKIM para sa domain nito, o kaya ay malulundag ang mga email sa spam folder.

Ang mga setting para sa sign-in na may kaugnayan sa email (halimbawa, kung kailangan ng mga bagong account na i-verify ang kanilang address, o kung maaaring magpadala ng imbitasyon sa pamamagitan ng email) ay nasa Sign-in and accounts.

Mga push notification sa mobile app

Paano gumagana ang push

Hindi kausap ng Antimatter ang Apple o Google mismo. Para sa bawat notification, tinatawag nito ang isang push proxy, na nagbabantay ng mga credentials ng mobile app at nagpapasa ng notification sa Apple (APNs) para sa mga iPhone at sa Google (Firebase Cloud Messaging) para sa mga Android phone. Ipinapasa lamang ng Apple at Google ang notification kapag ipinadala ito gamit ang credentials ng app na para rito. Kaya ang push proxy ay gumagana sa isang build ng mobile app: yung kung saan hawak nito ang credentials.

  • Hindi pinapatakbo ng Antimatter ang pampublikong push proxy. Ikaw ang nagpapatakbo ng push proxy ng Antimatter, gamit ang credentials ng build ng mobile app na ini-install ng mga user mo.
  • Hindi ipinapadala ng Antimatter ang mga notification sa mga push service ng Mattermost, test o hosted: para lamang sila sa mga sariling mobile app ng Mattermost. Kung naka-set ang server sa isa sa kanilang address (halimbawa, https://push-test.mattermost.com, na ginagamit ng mga lumang configuration ng Mattermost), wala itong ipinapadala at naglala ng warning sa pag-startup.

Ang bagong server ay walang push notification server, kaya wala itong ipinapadala na push notification hangga't hindi mo naka-set ang address ng iyong push proxy. Hanggang doon, gumagana ang mobile app pero walang natatanggap na notification.

Patakbuhin ang push proxy

Nasa push-proxy repository ang push proxy. Ipinalanag ng README nito kung paano makakuha ng dalawang credentials, na galing sa mga account na nagpapalabas ng iyong build ng mobile app:

  • Android: isang service account file ng Firebase project na ginagamit ng iyong Android build.
  • iOS: isang APNs authentication key (AuthKey_<KEY ID>.p8) ng Apple developer account na nagpapalabas ng iyong iOS build, kasama ang key ID at team ID nito.

Ilagay ito sa tabi ng compose.yaml, kasama ang configuration file ng proxy:

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

push-proxy/config/antimatter-push-proxy.json, kasama ang iyong bundle identifier, key ID, at 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"
}

Ang ApplePushTopic ay ang iOS bundle identifier ng iyong build. Ang ApplePushUseDevelopment ay true lamang para sa mga build na na-install mula sa Xcode. Ang mga tawag ay tumatawag sa mga iPhone gamit ang VoIP pushes, na gumagamit ng parehong key at hindi nangangailangan ng karagdagang bagay dito.

May handa na karagdagang configuration sa compose file ang site, compose.push.example.yaml. Pinapatakbo nito ang published 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

Noong simula, tinatawag ng log ng proxy ang bawat push target na itinatag nito, at naglalarawan ng error para sa anumang hindi ma-load ang credentials. Walang ipinapublikong port ang proxy: Antimatter lamang ang makakapag-access dito, sa pamamagitan ng compose network.

Kung walang Docker, i-install ang .deb o .rpm package ng push proxy sa halip: tingnan ang Mga package ng GIF service at push proxy.

Hindi sinusuri ng push proxy kung sino ang tumatawag dito. Huwag ipahayag ito sa Internet. Kung nasa ibang host ito, ilagay ito sa likod ng HTTPS at limitahan kung sino ang makakapag-access: maaaring maglaman ng text ng mensahe ang mga notisikasyon.

Ituro ang Antimatter sa proxy

Sa System Console › Environment › Push Notification Server, itakda ang Paganahin ang Push Notification sa Magpadala ng mga push notification sa pamamagitan ng sarili mong push proxy, at ang Push Notification Server sa http://push-proxy:8066 (o ang HTTPS address ng proxy kung nasa ibang lugar ito). Hindi ma-save ang pahinang ito kung naka-set ang opsyong ito ngunit wala ang address. Para huminto sa pagpadala ng mga push notification, piliin ang Huwag magpadala ng push notification. O gamit ang mga variable sa antimatter service:

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

Para sa pagsusuri: mag-sign in gamit ang mobile app, ilagay ito sa background, at mag-mention sa iyo gamit ang ibang account. Kung wala namang dumating, hanapin ang push sa log ng Antimatter at sa log ng proxy: sinasabi nila kung hindi kilala ang uri ng device, tinanggihan ang key, o kung ang device ay kabilang sa ibang app build.

Laman ng mga notisikasyon

System Console › Konfigurasyon ng Site › Mga Notisikasyon › Mga Nilalaman ng Push Notisikasyon (EmailSettings.PushNotificationContents):

OpsyonHalaga
Pangkalahatang paglalarawan na may pangalan ng nagpadala lamanggeneric_no_channel
Pangkalahatang paglalarawan na may pangalan ng nagpadala at ng channelgeneric
Buong nilalaman ng mensahe na ipinadala sa payload ng notisikasyon (default)full
Buong nilalaman ng mensahe na hinihango mula sa server kapag natanggapid_loaded

Gamit ang id_loaded, ang notisikasyong dumadaan sa proxy, Apple, at Google ay may id lamang, at hihango ng app ang mensahe mula sa iyong server: hindi lalampas sa kanilang serbisyo ang text ng mensahe. Ito ang pinakamainam na pagpipilian kapag ang mga mensahe ay kumpidensyal.

Ang Large Channel Notification Threshold, sa pahina ng Push Notification Server, (TeamSettings.MaxNotificationsPerChannel, 1000 ang default) ang pinakamataas na bilang ng miyembro na maaaring mayroon ang isang channel para gumana ang @here, @all, at @channel. Sa mas malalaking channel, patay ang mga mention na iyon at ang mga typing indicator.