Електронна пошта та push-сповіщення
Antimatter надсилає електронні листи для запрошень, скидання паролів, верифікації та пропущених повідомлень, а також push-сповіщення в мобільний застосунок через push-проксі. Жодне з них не працюватиме, доки ви не налаштуєте їх.
Вихідна електронна пошта (SMTP)
Antimatter надсилає електронні листи через SMTP-сервер, який ви вказуєте: поштовий сервер вашої організації або сервіс транзакційної електронної пошти. Без нього люди не зможуть скинути забутий пароль, електронні запрошення та верифікація не дійдуть, а ніхто не отримає електронних сповіщень про пропущені повідомлення.
Налаштуйте це в Системна консоль › Середовище › SMTP або за допомогою змінних:
| Налаштування | Ключ і змінна | Типове значення |
|---|---|---|
| SMTP-сервер | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| Порт SMTP-сервера | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| Увімкнути SMTP-автентифікацію | EmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTH | вимкнено без захисту з’єднання, увімкнено з ним |
| Ім'я користувача SMTP-сервера | EmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAME | порожньо |
| Пароль SMTP-сервера | EmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORD | порожньо |
| Безпека з'єднання | EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITY | None (порожнє); або 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.FeedbackEmail | test@example.com: змініть це |
| Адреса для відповіді на сповіщення | EmailSettings.ReplyToAddress | test@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.
Вкажіть 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 працювали. У каналах із більшою кількістю учасників ці згадки та індикатори введення вимикаються.