Poczta e-mail i powiadomienia push
Antimatter wysyła e-maile dla zaproszeń, resetów hasła, weryfikacji i nieprzeczytanych wiadomości, a także powiadomienia push do aplikacji mobilnej za pomocą proxy push. Żadne z nich nie zadziała, dopóki ich nie skonfigurujesz.
Wychodząca poczta e-mail (SMTP)
Antimatter wysyła e-maile przez serwer SMTP, który udostępniasz: serwer pocztowy Twojej organizacji lub usługa transakcyjnej poczty e-mail. Bez niego użytkownicy nie mogą zresetować zapomnianego hasła, zaproszenia i weryfikacje e-maile nie docierają, a nikt nie otrzymuje powiadomień e-mail o nieprzeczytanych wiadomościach.
Ustaw to w Konsola systemu › Środowisko › SMTP lub za pomocą zmiennych:
| Ustawienie | Klucz i zmienna | Domyślnie |
|---|---|---|
| Serwer SMTP | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| Port serwera SMTP | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| Włącz uwierzytelnianie SMTP | EmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTH | wyłączone bez zabezpieczenia połączenia, włączone z nim |
| Nazwa użytkownika serwera SMTP | EmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAME | pusta |
| Hasło serwera SMTP | EmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORD | pusta |
| Bezpieczeństwo połączenia | EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITY | Brak (puste); lub TLS lub STARTTLS |
| Pomiń weryfikację certyfikatu serwera | EmailSettings.SkipServerCertificateVerification | wyłączone. Pozostaw je wyłączone w środowisku produkcyjnym. |
Użyj STARTTLS na porcie 587 lub TLS na porcie 465, zgodnie z zaleceniami dostawcy. Następnie kliknij Sprawdź połączenie na tej samej stronie: Antimatter wyśle wiadomość testową na Twój własny adres.
Typowa konfiguracja z Docker Compose, w pliku compose.override.yaml obok 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
Umieść SMTP_PASSWORD w pliku .env. Plik compose witryny umieszcza serwer w domyślnej sieci, która ma dostęp do Internetu, więc może osiągnąć zewnętrzny serwer SMTP.
Ustawienia nadawcy i e-maili powiadomieniowych
W Konsola systemu › Konfiguracja strony › Powiadomienia:
| Ustawienie | Klucz | Domyślnie |
|---|---|---|
| Włącz powiadomienia e-mail | EmailSettings.SendEmailNotifications | włączone |
| Nazwa wyświetlana w powiadomieniach | EmailSettings.FeedbackName | pusta |
| Powiadomienie z adresu | EmailSettings.FeedbackEmail | test@example.com: zmień |
| Adres powiadomień Reply-To | EmailSettings.ReplyToAddress | test@example.com: zmień |
| Adres e-mail Pomocy Technicznej | SupportSettings.SupportEmail | pusta |
| Adres mailowy do korespondencji w stopce powiadomień | EmailSettings.FeedbackOrganization | pusta |
| Treść powiadomienia e-mail | EmailSettings.EmailNotificationContentsType | Wysyłaj pełną zawartość wiadomości (full) lub ogólny opis z nazwą nadawcy (generic) |
| Włącz grupowanie wiadomości e-mail | EmailSettings.EnableEmailBatching | wyłączone. Włączone, użytkownicy mogą wybrać otrzymywanie nieprzeczytanych wiadomości pogrupowanych w jednym e-mailu co 15 minut lub co godzinę, zamiast osobnego e-maila dla każdej. |
| Użyj nazwy kanału w powiadomieniach e-mail | EmailSettings.UseChannelInEmailNotifications | Wyłączone |
| Włącz baner trybu podglądu | EmailSettings.EnablePreviewModeBanner | włączone: gdy powiadomienia e-mail są wyłączone, baner informuje administratorów, że poczta e-mail nie jest skonfigurowana |
Adres nadawcy (From) musi być jednym z adresów, z których serwer SMTP ma uprawnienia do wysyłki. Skonfiguruj dla jego domeny SPF i DKIM, w przeciwnym razie wiadomości mogą trafiać do folderów ze spamem.
Ustawienia logowania związane z e-mailem (na przykład czy nowe konta muszą zweryfikować swój adres, czy zaproszenia mogą być wysyłane pocztą) znajdują się w sekcji Logowanie i konta.
Powiadomienia push do aplikacji mobilnej
Jak działają powiadomienia push
Antimatter nigdy nie komunikuje się bezpośrednio z Apple ani Google. Dla każdego powiadomienia wywołuje proxy push, które przechowuje dane uwierzytelniające aplikacji mobilnej i przesyła powiadomienie do Apple (APNs) dla iPhone'ów oraz do Google (Firebase Cloud Messaging) dla telefonów z Androidem. Apple i Google dostarczają powiadomienie tylko wtedy, gdy jest wysłane z danymi uwierzytelniającymi właściwej aplikacji. Dlatego proxy push działa z jedną wersją (buildem) aplikacji mobilnej: tą, której dane uwierzytelniające przechowuje.
- Antimatter nie uruchamia publicznego proxy push. Samodzielnie uruchamiasz proxy push Antimatter, używając danych uwierzytelniających wersji aplikacji mobilnej, którą instalują użytkownicy.
- Antimatter nigdy nie wysyła powiadomień do usług push Mattermost, testowych ani hostowanych: dostarczają one powiadomienia wyłącznie do własnych aplikacji mobilnych Mattermost. Jeśli serwer jest skonfigurowany na jeden z ich adresów (na przykład
https://push-test.mattermost.com, którego używają starsze konfiguracje Mattermost), nie wysyła niczego i loguje ostrzeżenie przy starcie.
Nowy serwer nie ma skonfigurowanego serwera powiadomień push, więc nie wysyła żadnych powiadomień push, dopóki nie ustawisz adresu swojego proxy push. Do tego czasu aplikacja mobilna działa, ale nie otrzymuje powiadomień.
Uruchomienie proxy push
Proxy push znajduje się w repozytorium push-proxy. Jego plik README wyjaśnia, jak uzyskać dwa dane uwierzytelniające, które pochodzą z kont publikujących Twoją wersję aplikacji mobilnej:
- Android: plik konta usługi projektu Firebase używanego przez Twoją wersję Androida.
- iOS: klucz uwierzytelniający APNs (
AuthKey_<KEY ID>.p8) konta deweloperskiego Apple, które publikuje Twoją wersję iOS, wraz z identyfikatorem klucza (key ID) i identyfikatorem zespołu (team ID).
Umieść je obok compose.yaml, wraz z plikiem konfiguracyjnym proxy:
push-proxy/
config/antimatter-push-proxy.json
certs/AuthKey_ABCDE12345.p8
certs/firebase-service-account.json
push-proxy/config/antimatter-push-proxy.json, z Twoim identyfikatorem pakietu (bundle identifier), identyfikatorem klucza i identyfikatorem zespołu:
{
"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 to identyfikator pakietu (bundle identifier) iOS Twojej wersji. ApplePushUseDevelopment ma wartość true tylko dla wersji zainstalowanych z Xcode'a. Dzwonki (rozmowy) na iPhone'ach działają przez powiadomienia VoIP, które używają tego samego klucza i nie wymagają tu dodatkowych ustawień.
Na stronie znajduje się gotowy dodatek do pliku compose, compose.push.example.yaml. Uruchamia on opublikowany obraz, 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
Po starcie dziennik proxy wymienia każdy cel push, który skonfigurowano, i loguje błąd dla każdego, którego poświadczeń nie można wczytać. Proxy nie publikuje żadnego portu: jedynym systemem, który do niego uzyskuje dostęp, jest Antimatter, w sieci compose.
Bez Docker, zainstaluj zamiast tego pakiet .deb lub .rpm proxy push: zobacz Pakiety usługi GIF i proxy push.
Skonfiguruj Antimatter tak, aby korzystał z proxy
W Konsola systemu › Środowisko › Serwer powiadomień Push, ustaw Włącz powiadomienia Push na Wysyłaj powiadomienia push przez własny proxy push, a Serwer powiadomień Push na http://push-proxy:8066 (lub adres HTTPS proxy, jeśli działa w innym miejscu). Strona nie może zostać zapisana z tą opcją i bez adresu. Aby przestać wysyłać powiadomienia push, wybierz Nie wysyłaj powiadomień push. Albo zmiennymi na usłudze antimatter:
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
Aby to sprawdzić: zaloguj się w aplikacji mobilnej, przenieś ją w tło i poproś inną osobę, aby Cię wzmiankowała. Jeśli nic nie przyjdzie, wyszukaj push w dzienniku Antimatter i w dzienniku proxy: pokażą one, czy typ urządzenia jest nieznany, czy klucz został odrzucony, albo czy urządzenie należy do innej wersji aplikacji.
Zawartość powiadomień
Konsola systemu › Konfiguracja strony › Powiadomienia › Zawartość powiadomień push (EmailSettings.PushNotificationContents):
| Opcja | Wartość |
|---|---|
| Ogólny opis z nazwą nadawcy | generic_no_channel |
| Ogólny opis z nazwami nadawcy i kanału | generic |
| Pełna treść wiadomości wysyłana w obciążeniu powiadomienia (domyślnie) | full |
| Pełna treść wiadomości pobierana z serwera po otrzymaniu | id_loaded |
Przy id_loaded powiadomienie przechodzące przez proxy, Apple i Google zawiera tylko identyfikator, a aplikacja pobiera wiadomość z Twojego serwera: treść wiadomości nigdy nie przechodzi przez ich usługi. Jest to najlepszy wybór, gdy wiadomości są poufne.
Próg Powiadomienia o Dużym Kanale, na stronie Serwer powiadomień Push, (TeamSettings.MaxNotificationsPerChannel, domyślnie 1000) to największa liczba członków, jaką może mieć kanał, aby @here, @all i @channel działały. W większych kanałach te wzmianki oraz wskaźniki pisania są wyłączane.