Електронна пошта та push-сповіщення

Antimatter надсилає електронні листи для запрошень, скидання паролів, верифікації та пропущених повідомлень, а також push-сповіщення в мобільний застосунок через push-проксі. Жодне з них не працюватиме, доки ви не налаштуєте їх.

Вихідна електронна пошта (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_CONNECTIONSECURITYNone (порожнє); або 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. Compose-файл сайту розміщує сервер у мережі за замовчуванням, яка має доступ до Інтернету, тому він може досягти зовнішнього 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. Для кожного сповіщення він викликає push-проксі, який зберігає облікові дані мобільного додатка та передає сповіщення до Apple (APNs) для iPhone та до Google (Firebase Cloud Messaging) для пристроїв Android. Apple та Google доставляють сповіщення лише тоді, коли воно надіслано з обліковими даними відповідного додатка. Отже, push-проксі працює з однією збіркою мобільного додатка: тією, чиї облікові дані він зберігає.

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

У новому сервері немає сервера push-сповіщень, тому він не надсилає push-сповіщення, доки ви не вкажете адресу вашого push-проксі. До того часу мобільний додаток працює, але не отримує сповіщень.

Запуск push-проксі

Push-проксі міститься в репозиторії push-proxy. У його файлі README описано, як отримати два набори облікових даних, які походять з акаунтів, що публікують вашу збірку мобільного додатка:

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

Розмістіть їх поруч із 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, вказавши ваш ідентифікатор пакета, ідентифікатор ключа та ідентифікатор команди:

{
    "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 вашої збірки. ApplePushUseDevelopment має значення true лише для збірок, встановлених з Xcode. Дзвінки на iPhone проходять через VoIP-push, які використовують той самий ключ і не потребують додаткових налаштувань тут.

На сайті є готовий додаток до файлу 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

Під час запуску журнал проксі вказує кожну ціль push-сповіщень, яку він налаштував, і записує помилку для тих, для яких не вдається завантажити облікові дані. Проксі не публікує жодного порту: до нього має доступ лише Antimatter у мережі compose.

Без Docker встановіть замість цього пакет .deb або .rpm проксі-сервера push: див. Пакети служби GIF та проксі-сервера push.

Push-проксі не перевіряє, хто до нього звертається. Не відкривайте його для Інтернету. Якщо він працює на іншому хості, розмістіть його за HTTPS і обмежте доступ: сповіщення можуть містити текст повідомлень.

Вкажіть Antimatter на проксі

У Системна консоль › Середовище › Сервер push-повідомлень встановіть Ввімкнути push-повідомлення на Надсилати сповіщення через власний проксі-сервер, а Сервер push-повідомлень — на http://push-proxy:8066 (або HTTPS-адресу проксі, якщо він працює в іншому місці). Сторінку не можна зберегти, якщо цю опцію увімкнено, але адреса не вказана. Щоб припинити надсилання push-сповіщень, оберіть Не надсилати push-сповіщення. Або за допомогою змінних на службі 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 несуть лише ідентифікатор, а додаток отримує повідомлення з вашого сервера: текст повідомлення ніколи не проходить через їхні служби. Це найкращий вибір, коли повідомлення є конфіденційними.

Максимальна кількість сповіщень на канал на сторінці Сервера push-повідомлень (TeamSettings.MaxNotificationsPerChannel, за замовчуванням 1000) — це максимальна кількість учасників, яку може мати канал, щоб @here, @all та @channel працювали. У каналах із більшою кількістю учасників ці згадки та індикатори введення вимикаються.