Notifikasi email dan push

Antimatter mengirim email untuk undangan, reset kata sandi, verifikasi, dan pesan yang terlewat, serta notifikasi push ke aplikasi seluler melalui proxy push. Keduanya tidak akan berfungsi sampai Anda mengonfigurasikannya.

Email keluar (SMTP)

Antimatter mengirim email melalui server SMTP yang Anda sediakan: server email organisasi Anda, atau layanan email transaksional. Tanpanya, orang tidak dapat mereset kata sandi yang terlupa, email undangan dan verifikasi tidak akan sampai, dan tidak ada yang menerima notifikasi email untuk pesan yang terlewat.

Atur di Konsol Sistem › Lingkungan › SMTP, atau dengan variabel:

PengaturanKunci dan variabelBawaan
Server SMTPEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
Port Server SMTPEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Aktifkan Autentikasi SMTPEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHnonaktif tanpa keamanan koneksi, aktif dengan keamanan koneksi
Nama Pengguna Server SMTPEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEkosong
Kata Sandi Server SMTPEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDkosong
Keamanan KoneksiEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYNone (kosong); atau TLS atau STARTTLS
Lewati Verifikasi Sertifikat ServerEmailSettings.SkipServerCertificateVerificationnonaktif. Biarkan nonaktif di produksi.

Gunakan STARTTLS di port 587 atau TLS di port 465, sesuai ketentuan penyedia Anda. Lalu klik Uji Koneksi di halaman yang sama: Antimatter akan mengirim email uji ke alamat Anda sendiri.

Pengaturan tipikal dengan Docker Compose, di compose.override.yaml di sebelah 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

Letakkan SMTP_PASSWORD di .env. File compose situs menempatkan server di jaringan default, yang memiliki akses ke Internet, sehingga dapat menjangkau server SMTP eksternal.

Pengaturan email pengirim dan notifikasi

Di Konsol Sistem › Konfigurasi Situs › Notifikasi:

PengaturanKunciBawaan
Aktifkan Notifikasi EmailEmailSettings.SendEmailNotificationson
Nama Tampilan NotifikasiEmailSettings.FeedbackNamekosong
Alamat Dari NotifikasiEmailSettings.FeedbackEmailtest@example.com: ubah ini
Alamat Balas NotifikasiEmailSettings.ReplyToAddresstest@example.com: ubah ini
Alamat Email DukunganSupportSettings.SupportEmailkosong
Alamat Pos Kaki NotifikasiEmailSettings.FeedbackOrganizationkosong
Isi Notifikasi EmailEmailSettings.EmailNotificationContentsTypeKirim isi pesan lengkap (full), atau deskripsi generik dengan hanya nama pengirim (generic)
Aktifkan Pengelompokan EmailEmailSettings.EnableEmailBatchingnonaktif. Jika aktif, orang dapat memilih untuk menerima pesan yang terlewat yang dikelompokkan dalam satu email setiap 15 menit atau setiap jam, alih-alih satu email untuk masing-masing pesan.
Gunakan Nama Kanal di Notifikasi EmailEmailSettings.UseChannelInEmailNotificationsnonaktif
Aktifkan Banner Mode PratinjauEmailSettings.EnablePreviewModeBanneraktif: selama notifikasi email nonaktif, banner akan memberi tahu admin bahwa email tidak dikonfigurasi

Alamat From harus berupa alamat yang diizinkan oleh server SMTP Anda untuk mengirim email; atur SPF dan DKIM untuk domain tersebut, atau email mungkin akan masuk ke folder spam.

Pengaturan masuk terkait email (apakah akun baru harus memverifikasi alamatnya, apakah undangan dapat dikirim melalui email) ada di Masuk dan akun.

Notifikasi push ke aplikasi seluler

Cara kerja push

Antimatter tidak pernah berkomunikasi langsung dengan Apple atau Google. Untuk setiap notifikasi, ia memanggil proxy push, yang menyimpan kredensial aplikasi seluler dan meneruskan notifikasi ke Apple (APNs) untuk iPhone dan ke Google (Firebase Cloud Messaging) untuk ponsel Android. Apple dan Google hanya akan mengirim notifikasi jika dikirim dengan kredensial aplikasi yang dituju. Jadi, proxy push bekerja dengan satu versi build aplikasi seluler: versi yang kredensialnya dipegang oleh proxy tersebut.

  • Antimatter tidak menjalankan proxy push publik. Anda menjalankan proxy push Antimatter sendiri, dengan kredensial versi build aplikasi seluler yang diinstal oleh pengguna Anda.
  • Antimatter tidak pernah mengirim notifikasi ke layanan push Mattermost, baik test maupun hosted: layanan tersebut hanya mengirim ke aplikasi seluler Mattermost sendiri. Jika server diatur ke salah satu alamat mereka (seperti https://push-test.mattermost.com, yang digunakan oleh konfigurasi Mattermost versi lama), server tidak akan mengirim apa pun dan akan mencatat peringatan saat startup.

Server baru tidak memiliki server notifikasi push, sehingga tidak akan mengirim notifikasi push sampai Anda mengatur alamat proxy push Anda. Sampai saat itu, aplikasi seluler berfungsi tetapi tidak menerima notifikasi.

Jalankan proxy push

Proxy push ada di repositori push-proxy. README-nya menjelaskan cara mendapatkan dua kredensial, yang berasal dari akun yang menerbitkan versi build aplikasi seluler Anda:

  • Android: file akun layanan dari proyek Firebase yang digunakan oleh versi build Android Anda.
  • iOS: kunci autentikasi APNs (AuthKey_<KEY ID>.p8) dari akun pengembang Apple yang menerbitkan versi build iOS Anda, beserta ID kunci dan ID timnya.

Letakkan file tersebut di sebelah compose.yaml, bersama dengan file konfigurasi proxy:

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

push-proxy/config/antimatter-push-proxy.json, dengan pengidentifikasi bundle, ID kunci, dan ID tim Anda:

{
    "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 adalah pengidentifikasi bundle iOS dari versi build Anda. ApplePushUseDevelopment bernilai true hanya untuk versi build yang diinstal dari Xcode. Panggilan berbunyi di iPhone melalui push VoIP, yang menggunakan kunci yang sama dan tidak memerlukan pengaturan tambahan di sini.

Situs ini memiliki tambahan siap pakai untuk file compose, compose.push.example.yaml. File ini menjalankan gambar yang dipublikasikan, 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

Saat dimulai, log proxy menyebutkan setiap target push yang dikonfigurasikan, dan mencatat kesalahan untuk target yang kredensialnya tidak dapat dimuat. Proxy tidak mempublikasikan port: hanya Antimatter yang dapat mengaksesnya, melalui jaringan compose.

Tanpa Docker, pasang paket .deb atau .rpm dari push proxy: lihat Paket layanan GIF dan push proxy.

Proxy push tidak memeriksa siapa yang memanggilnya. Jangan mengeksposnya ke Internet. Jika dijalankan di host lain, letakkan di belakang HTTPS dan batasi siapa yang dapat mengaksesnya: notifikasi dapat berisi teks pesan.

Arahkan Antimatter ke proxy

Di Konsol Sistem › Lingkungan › Server Notifikasi Push, atur Aktifkan Notifikasi Push menjadi Kirim notifikasi push melalui push proxy Anda sendiri, dan Server Notifikasi Push menjadi http://push-proxy:8066 (atau alamat HTTPS proxy jika dijalankan di tempat lain). Halaman tidak dapat disimpan dengan opsi ini tanpa alamat. Untuk berhenti mengirim notifikasi push, pilih Jangan kirim notifikasi push. Atau dengan variabel pada layanan antimatter:

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

Untuk memeriksa: masuk dengan aplikasi seluler, letakkan di latar belakang, dan minta akun lain untuk menyebut Anda. Jika tidak ada yang diterima, cari push di log Antimatter dan log proxy: mereka akan menunjukkan apakah tipe perangkat tidak dikenal, kunci ditolak, atau perangkat milik build aplikasi lain.

Isi notifikasi

Konsol Sistem › Konfigurasi Situs › Notifikasi › Konten Notifikasi Push (EmailSettings.PushNotificationContents):

OpsiNilai
Deskripsi generik dengan hanya nama pengirimgeneric_no_channel
Deskripsi generik dengan nama pengirim dan kanalgeneric
Konten pesan lengkap yang dikirim dalam payload notifikasi (default)full
Konten pesan lengkap yang diambil dari server saat diterimaid_loaded

Dengan id_loaded, notifikasi yang melewati proxy, Apple, dan Google hanya membawa id, dan aplikasi mengambil pesan dari server Anda: teks pesan tidak pernah melewati layanan mereka. Ini adalah pilihan terbaik ketika pesan bersifat rahasia.

Ambang Batas Notifikasi Kanal Besar, di halaman Server Notifikasi Push, (TeamSettings.MaxNotificationsPerChannel, default 1000) adalah jumlah anggota maksimum yang dapat dimiliki sebuah kanal agar @here, @all, dan @channel berfungsi. Di kanal yang lebih besar, sebutan tersebut dan indikator mengetik dinonaktifkan.