Электронная почта и 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-уведомления в мобильное приложение
Как работают 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, а также его 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, указав ваш идентификатор пакета, 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 вашей сборки. 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-уведомления через собственный push-прокси, а Сервер push уведомлений — в http://push-proxy:8066 (или HTTPS-адрес прокси, если он работает в другом месте). Страницу нельзя сохранить, если выбран этот вариант, но адрес не указан. Чтобы перестать отправлять push-уведомления, выберите Не отправлять push-уведомления. Или с помощью переменных на сервисе antimatter:
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
Для проверки: войдите в мобильное приложение, переведите его в фоновый режим и попросите другой аккаунт упомянуть вас. Если уведомление не пришло, поищите push в журнале Antimatter и в журнале прокси: там указано, неизвестен ли тип устройства, отклонён ли ключ или устройство принадлежит другой сборке приложения.
Содержимое уведомлений
Системная консоль › Настройки сайта › Уведомления › Содержание push уведомления (EmailSettings.PushNotificationContents):
| Вариант | Значение |
|---|---|
| Общее описание с указанием только имени отправителя | generic_no_channel |
| Общее описание с указанием имени отправителя и канала | generic |
| Полное содержимое сообщения, передаваемое в payload уведомления (по умолчанию) | full |
| Полное содержимое сообщения, запрашиваемое с сервера при получении уведомления | id_loaded |
При значении id_loaded уведомление, проходящее через прокси, Apple и Google, содержит только id, а приложение запрашивает текст сообщения с вашего сервера: текст сообщения никогда не проходит через их сервисы. Это лучший выбор, если сообщения конфиденциальны.
Максимальное количество уведомлений на канал на странице Сервер push уведомлений (TeamSettings.MaxNotificationsPerChannel, по умолчанию 1000) — это максимальное количество участников, при котором в канале работают упоминания @here, @all и @channel. В каналах с большим числом участников эти упоминания и индикаторы набора текста отключаются.