E-mel dan pemberitahuan push

Antimatter menghantar e-mel untuk jemputan, tetapan semula kata laluan, pengesahan dan mesej yang terlepas, serta pemberitahuan push ke aplikasi mudah alih melalui proksi push. Tiada satu pun berfungsi sehingga anda mengkonfigurasikannya.

E-mel keluar (SMTP)

Antimatter menghantar e-mel melalui pelayan SMTP yang anda sediakan: pelayan mel organisasi anda, atau perkhidmatan e-mel transaksional. Tanpanya, orang tidak boleh menetapkan semula kata laluan yang terlupa, jemputan e-mel dan pengesahan tidak sampai, dan tiada siapa yang menerima pemberitahuan e-mel untuk mesej yang terlepas.

Tetapkannya dalam Konsol Sistem › Persekitaran › SMTP, atau dengan pemboleh ubah:

TetapanKunci dan pemboleh ubahLalai
Pelayan SMTPEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
Port Pelayan SMTPEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Dayakan Pengesahan SMTPEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHoff tanpa keselamatan sambungan, on dengan keselamatan
Nama Pengguna Pelayan SMTPEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEkosong
Kata Laluan Pelayan SMTPEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDkosong
Keselamatan SambunganEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYNone (kosong); atau TLS atau STARTTLS
Lewati Pengesahan Sijil PelayanEmailSettings.SkipServerCertificateVerificationoff. Biarkan ia off dalam pengeluaran.

Gunakan STARTTLS pada port 587 atau TLS pada port 465, seperti yang dinyatakan oleh penderma anda. Kemudian klik Uji Sambungan pada halaman yang sama: Antimatter menghantar e-mel ujian ke alamat anda sendiri.

Penetapan tipikal dengan Docker Compose, dalam compose.override.yaml bersebelahan 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 dalam .env. Fail compose laman web meletakkan pelayan pada rangkaian lalai, yang mempunyai akses ke Internet, jadi ia boleh mencapai pelayan SMTP luaran.

Penetapan e-mel penghantar dan pemberitahuan

Dalam Konsol Sistem › Konfigurasi Laman › Pemberitahuan:

TetapanKunciLalai
Aktifkan Pemberitahuan E-melEmailSettings.SendEmailNotificationshidup
Nama Paparan PemberitahuanEmailSettings.FeedbackNamekosong
Alamat Dari PemberitahuanEmailSettings.FeedbackEmailtest@example.com: ubah ia
Alamat Balas-To PemberitahuanEmailSettings.ReplyToAddresstest@example.com: ubah ia
Alamat E-mel SokonganSupportSettings.SupportEmailkosong
Alamat Pos Kaki PemberitahuanEmailSettings.FeedbackOrganizationkosong
Kandungan Pemberitahuan E-melEmailSettings.EmailNotificationContentsTypeHantar kandungan mesej penuh (full), atau penerangan umum dengan hanya nama penghantar (generic)
Aktifkan Pengumpulan E-melEmailSettings.EnableEmailBatchingoff. On, orang boleh memilih untuk menerima mesej yang terlepas yang dikelompokkan dalam satu e-mel setiap 15 minit atau setiap jam, bukannya satu e-mel setiap satu.
Gunakan Nama Saluran dalam Pemberitahuan E-melEmailSettings.UseChannelInEmailNotificationsTutup
Aktifkan Banner Mod PratontonEmailSettings.EnablePreviewModeBanneron: semasa pemberitahuan e-mel dimatikan, banner memberitahu pentadbir bahawa e-mel tidak dikonfigurasi

Alamat From mestilah satu yang dibenarkan oleh pelayan SMTP anda untuk dihantar; tetapkan SPF dan DKIM untuk domainnya, atau e-mel mungkin akan masuk ke folder spam.

Tetapan log masuk yang berkaitan dengan e-mel (sama ada akaun baharu mesti mengesahkan alamat mereka, sama ada jemputan boleh dihantar melalui e-mel) terdapat dalam Log masuk dan akaun.

Pemberitahuan push ke aplikasi mudah alih

Cara push berfungsi

Antimatter tidak pernah berinteraksi terus dengan Apple atau Google. Untuk setiap pemberitahuan, ia memanggil proxy push, yang memegang kelayakan aplikasi mudah alih dan meneruskan pemberitahuan ke Apple (APNs) untuk iPhone dan ke Google (Firebase Cloud Messaging) untuk telefon Android. Apple dan Google hanya menyampaikan pemberitahuan apabila ia dihantar dengan kelayakan aplikasi yang berkenaan. Oleh itu, proxy push berfungsi dengan satu binaan aplikasi mudah alih: iaitu binaan yang kelayakannya dipegang.

  • Antimatter tidak menjalankan proxy push awam. Anda menjalankan proxy push Antimatter sendiri, dengan kelayakan binaan aplikasi mudah alih yang dipasang oleh pengguna anda.
  • Antimatter tidak pernah menghantar pemberitahuan ke perkhidmatan push Mattermost, sama ada ujian atau hosted: mereka hanya menyampaikan ke aplikasi mudah alih Mattermost sendiri. Jika pelayan diset kepada salah satu alamat mereka (seperti https://push-test.mattermost.com, yang digunakan oleh konfigurasi Mattermost yang lebih lama), ia tidak menghantar apa-apa dan merekod amaran semasa permulaan.

Pelayan baharu tidak mempunyai pelayan pemberitahuan push, jadi ia tidak menghantar pemberitahuan push sehingga anda menetapkan alamat proxy push anda. Sehingga itu, aplikasi mudah alih berfungsi tetapi tidak menerima pemberitahuan.

Jalankan proxy push

Proxy push terdapat dalam repositori push-proxy. README-nya menerangkan cara untuk mendapatkan dua kelayakan, yang datang dari akaun yang menerbitkan binaan aplikasi mudah alih anda:

  • Android: fail akaun perkhidmatan projek Firebase yang digunakan oleh binaan Android anda.
  • iOS: kunci pengesahan APNs (AuthKey_<KEY ID>.p8) dari akaun pembangun Apple yang menerbitkan binaan iOS anda, dengan ID kunci dan ID pasukannya.

Letakkan mereka di sebelah compose.yaml, dengan fail 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 pengenal pasti bundel, ID kunci dan ID pasukan 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 ialah pengenal pasti bundel iOS binaan anda. ApplePushUseDevelopment ialah true hanya untuk binaan yang dipasang dari Xcode. Panggilan berbunyi pada iPhone melalui push VoIP, yang menggunakan kunci yang sama dan tidak memerlukan apa-apa lagi di sini.

Laman web ini mempunyai penambahan sedia ada untuk fail compose, compose.push.example.yaml. Ia menjalankan imej yang diterbitkan, 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

Pada permulaan, log proksi menamakan setiap sasaran push yang diset, dan merekod ralat untuk mana-mana yang kredentialnya tidak dapat dimuatkan. Proksi tidak menerbitkan port: hanya Antimatter yang boleh mengaksesnya, melalui rangkaian compose.

Tanpa Docker, pasang pakej .deb atau .rpm proksi push sebagai gantinya: lihat Pakej perkhidmatan GIF dan proksi push.

Proksi push tidak memeriksa siapa yang memanggilnya. Jangan terdedahkannya kepada Internet. Jika ia berjalan pada hos lain, letakkannya di belakang HTTPS dan hadkan siapa yang boleh mengaksesnya: pemberitahuan boleh mengandungi teks mesej.

Tunjuk Antimatter ke proksi

Di Konsol Sistem › Persekitaran › Pelayan Pemberitahuan Dorong, tetapkan Aktifkan Pemberitahuan Tolak kepada Hantar notifikasi push melalui proksi push anda sendiri, dan Pelayan Pemberitahuan Dorong kepada http://push-proxy:8066 (atau alamat HTTPS proksi jika ia berjalan di tempat lain). Laman ini tidak boleh disimpan dengan pilihan ini dan tiada alamat. Untuk berhenti menghantar pemberitahuan tolak, pilih Jangan hantar pemberitahuan tolak. Atau dengan pemboleh ubah pada perkhidmatan antimatter:

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

Untuk semak: log masuk dengan aplikasi mudah alih, letakkannya di latar belakang dan minta akaun lain menyebut anda. Jika tiada apa yang diterima, cari push dalam log Antimatter dan log proksi: ia menyatakan sama ada jenis peranti tidak diketahui, kunci ditolak, atau peranti itu milik binaan aplikasi lain.

Apa yang dikandungi oleh pemberitahuan

Konsol Sistem › Konfigurasi Laman › Pemberitahuan › Kandungan Pemberitahuan Tolakan (EmailSettings.PushNotificationContents):

PilihanNilai
Penerangan umum dengan hanya nama penghantargeneric_no_channel
Penerangan umum dengan nama penghantar dan salurangeneric
Kandungan mesej penuh yang dihantar dalam muatan pemberitahuan (lalai)full
Kandungan mesej penuh yang diambil dari pelayan pada penerimaanid_loaded

Dengan id_loaded, pemberitahuan yang melalui proksi, Apple dan Google hanya membawa id, dan aplikasi mengambil mesej dari pelayan anda: teks mesej tidak pernah melalui perkhidmatan mereka. Ia adalah pilihan terbaik apabila mesej adalah sulit.

Ambang Pemberitahuan Saluran Besar, pada halaman Pelayan Pemberitahuan Dorong, (TeamSettings.MaxNotificationsPerChannel, 1000 secara lalai) ialah bilangan ahli terbesar yang boleh dimiliki oleh saluran untuk @here, @all dan @channel berfungsi. Dalam saluran yang lebih besar, sebutan-sebutan ini dan penunjuk menaip dimatikan.