Имейл и пуш известия

Antimatter изпраща имейли за покани, нулиране на пароли, верификация и пропуснати съобщения, както и пуш известия до мобилното приложение чрез пуш прокси. Нито едно от двете не работи, докато не го конфигурирате.

Изходящ имейл (SMTP)

Antimatter изпраща имейли чрез SMTP сървър, който предоставяте: пощенският сървър на организацията ви или услуга за транзакционен имейл. Без него хората не могат да нулират забравена парола, имейл покани и верификация не стигат до адресатите и никой не получава имейл известия за пропуснати съобщения.

Задайте го в Системна конзола › Обкръжение › SMTP или чрез променливи:

НастройкаКлюч и променливаПо подразбиране
SMTP сървърEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
Порт на SMTP сървъраEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Активиране на SMTP удостоверяванеEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHизключено без сигурност на връзката, включено с такава
Потребителско име за SMTP сървърEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEпразно
Парола за SMTP сървърEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDпразно
Защита на връзкатаEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYНяма (празно); или TLS или STARTTLS
Пропускане потвърждението на сертификата на сървъраEmailSettings.SkipServerCertificateVerificationизключено. Оставете го изключено в продуктивна среда.

Използвайте STARTTLS на порт 587 или TLS на порт 465, както посочва вашият доставчик. След това щракнете върху Тест на връзката на същата страница: Antimatter изпраща тестов имейл до вашата собствена адрес.

Типична конфигурация с Docker Compose, в compose.override.yaml до 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

Поставете SMTP_PASSWORD в .env. Композиционният файл на сайта поставя сървъра в мрежата по подразбиране, която има достъп до интернет, така че може да достигне външен SMTP сървър.

Настройки за изпращащия и имейл известията

В Системна конзола › Конфигурация на сайта › Известия:

НастройкаКлючПо подразбиране
Разрешаване на известията по ел.пощаEmailSettings.SendEmailNotificationsвключено
Показвано име за известияEmailSettings.FeedbackNameпразно
Уведомления от адресEmailSettings.FeedbackEmailtest@example.com: променете го
Отговор до адрес за уведомленияEmailSettings.ReplyToAddresstest@example.com: променете го
Адрес ел.поща за поддръжкаSupportSettings.SupportEmailпразно
Адрес, показван в долния колонтитул на уведомлениетоEmailSettings.FeedbackOrganizationпразно
Съдържание на известие по ел.пощаEmailSettings.EmailNotificationContentsTypeИзпращане на пълното съдържание на съобщенията (full) или общо описание само с името на изпращащия (generic)
Разрешава пакетиране на ел.пощаEmailSettings.EnableEmailBatchingизключено. При включване хората могат да изберат да получават пропуснатите съобщения, групирани в един имейл на всеки 15 минути или на всеки час, вместо по един имейл за всяко.
Използване на името на канала в имейл известиятаEmailSettings.UseChannelInEmailNotificationsизключено
Разреши банера за режим на прегледEmailSettings.EnablePreviewModeBannerвключено: докато имейл известията са изключени, банер информира администраторите, че имейлът не е конфигуриран

Адресът „От“ трябва да бъде такъв, за който SMTP сървърът ви има право да изпраща; конфигурирайте SPF и DKIM за неговия домейн, иначе имейлите могат да попаднат в папката за спам.

Настройките за вход, свързани с имейл (дали новите акаунти трябва да потвърдят адреса си, дали покани могат да се изпращат по имейл), се намират в Вход и акаунти.

Push известия до мобилното приложение

Как работят пуш известията

Antimatter никога не комуникира директно с Apple или Google. За всяко известие то извиква пуш прокси, който съхранява удостоверенията на мобилното приложение и препраща известията към Apple (APNs) за iPhone и към Google (Firebase Cloud Messaging) за Android телефони. Apple и Google доставят известие само когато то е изпратено с удостоверенията на съответното приложение. Следователно пуш прокси работи с една версия на мобилното приложение: тази, чийто удостоверения то съхранява.

  • Antimatter не поддържа публичен пуш прокси. Вие сами управлявате пуш прокси на Antimatter, използвайки удостоверенията на версията на мобилното приложение, която вашите потребители инсталират.
  • Antimatter никога не изпраща известия към пуш услугите на Mattermost, нито тестови, нито хостирани: те доставят известия само за собствените мобилни приложения на Mattermost. Ако сървърът е настроен на някой от техните адреси (като например https://push-test.mattermost.com, който по-старите конфигурации на Mattermost използват), той не изпраща нищо и записва предупреждение при стартиране.

Новият сървър няма пуш сървър за известия, така че не изпраща пуш известия, докато не зададете адреса на вашия пуш прокси. До тогава мобилното приложение работи, но не получава известия.

Стартирайте пуш прокси

Пуш прокси се намира в репозиторията push-proxy. Нейният README обяснява как да получите двете удостоверения, които идват от акаунтите, публикуващи вашата версия на мобилното приложение:

  • Android: файл на служебен акаунт на Firebase проекта, използван от вашата Android версия.
  • iOS: APNs ключ за автентикация (AuthKey_<KEY ID>.p8) на Apple разработчикския акаунт, публикуващ вашата iOS версия, заедно с неговия ключов ID и екипен ID.

Поставете ги до compose.yaml, заедно с конфигурационния файл на прокси:

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

push-proxy/config/antimatter-push-proxy.json, с вашия bundle identifier, ключов ID и екипен 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 е iOS bundle identifier на вашата версия. ApplePushUseDevelopment е true само за версии, инсталирани от Xcode. Обажданията се активират на iPhone чрез VoIP пуш известия, които използват същия ключ и не изискват нищо допълнително тук.

Сайтът предлага готово добавление към compose файла: compose.push.example.yaml. То стартира публикувания образ 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

При стартиране журналите на прокси сървъра посочват всяка цел за изпращане, която е настроена, и записват грешка за всяка, чиито данни за удостоверяване не могат да бъдат заредени. Прокси сървърът не публикува порт: само Antimatter има достъп до него, в мрежата за композиране.

Ако нямате Docker, инсталирайте вместо това .deb или .rpm пакета на push proxy-то: вижте Пакетите за GIF услугата и push proxy.

Прокси сървърът за изпращане не проверява кой го извиква. Не го излагайте в Интернет. Ако се изпълнява на друг хост, поставете го зад HTTPS и ограничете кой може да стигне до него: известията могат да съдържат текст на съобщения.

Посочете Antimatter към прокси сървъра

В Системна конзола › Обкръжение › Сървър за изскачащи известия задайте Разрешаване на изскачащи известия на Изпращане на пуш известия през ваш собствен пуш прокси и Сървър за изскачащи известия на http://push-proxy:8066 (или HTTPS адреса на прокси-сървъра, ако той се изпълнява на друго място). Страницата не може да се запази, ако е избран този вариант, но не е зададен адрес. За да спрете изпращането на изскачащи известия, изберете Не изпращай изскачащи известия. Или чрез променливи на услугата antimatter:

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

За проверка: влезте с мобилното приложение, поставете го в фонов режим и накарайте друга сметка да ви спомене. Ако нищо не пристигне, потърсете push в журнала на Antimatter и в журнала на прокси сървъра: те показват дали типът на устройството е неизвестен, ключът е отхвърлен или устройството принадлежи на друга версия на приложението.

Какво съдържат известията

Системна конзола › Конфигурация на сайта › Известия › Съдържание на изскачащи известия (EmailSettings.PushNotificationContents):

ОпцияСтойност
Общо описание само с името на изпращачаgeneric_no_channel
Общо описание с името на изпращача и името на каналаgeneric
Пълно съдържание на съобщението, изпратено в натоварването на известие (по подразбиране)full
Пълно съдържание на съобщението, изтеглено от сървъра при получаванеid_loaded

С id_loaded, известие, което минава през прокси сървъра, Apple и Google носят само идентификатор, а приложението изтегля съобщението от вашия сървър: текстът на съобщението никога не минава през техните услуги. Това е най-добрият избор, когато съобщенията са поверителни.

Максимум известия на канал (на страницата Сървър за изскачащи известия, TeamSettings.MaxNotificationsPerChannel, по подразбиране 1000) е максималният брой членове, които един канал може да има, за да работят споменаванията @here, @all и @channel. В по-големи канали тези споменавания и индикаторите за въвеждане са изключени.