อีเมลและการแจ้งเตือนแบบ Push
Antimatter ส่งอีเมลสำหรับคำเชิญ การรีเซ็ตรหัสผ่าน การยืนยันตัวตน และข้อความที่พลาดไป รวมถึงการแจ้งเตือนแบบ Push ไปยังแอปมือถือผ่าน Push Proxy ทั้งสองอย่างจะทำงานไม่ได้จนกว่าคุณจะกำหนดค่า
อีเมลขาออก (SMTP)
Antimatter ส่งอีเมลผ่านเซิร์ฟเวอร์ SMTP ที่คุณจัดเตรียมให้: เซิร์ฟเวอร์อีเมลขององค์กร หรือบริการอีเมลธุรกรรม (Transactional email service) หากไม่มีสิ่งนี้ ผู้ใช้จะไม่สามารถรีเซ็ตรหัสผ่านที่ลืมได้ อีเมลคำเชิญและการยืนยันตัวตนจะไม่มาถึง และไม่มีใครได้รับอีเมลแจ้งเตือนข้อความที่พลาดไป
ตั้งค่าใน คอนโซลระบบ › สภาพแวดล้อม › 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 | ปิด. ปล่อยให้ปิดในสภาพแวดล้อม Production |
ใช้ 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 นาทีหรือทุก 1 ชั่วโมง แทนที่จะเป็นอีเมลแยกกัน |
| ใช้ชื่อช่องในอีเมลแจ้งเตือน | EmailSettings.UseChannelInEmailNotifications | ปิด |
| เปิดใช้งานแบนเนอร์โหมดพรีวิว | EmailSettings.EnablePreviewModeBanner | เปิด: ขณะการแจ้งเตือนอีเมลปิด แถบบนจะแจ้งให้ผู้ดูแลระบบทราบว่าอีเมลยังไม่ได้กำหนดค่า |
ที่อยู่ From ต้องเป็นท่ีท่ี SMTP server ของคุณได้รับอนุญาตให้อีเมลในนามท่ี; ต้ังค่า SPF และ DKIM สำหรบั domain น้ัน ไม่งั้นอีเมลอาจตกไปอย่ในโฟลเดอรspam
การตั้ค่าการลงท่ีเก่ยวกบัอีเมล (เชน วาจะตองให้อคคานท่ีใหมตองยืนยันท่ีอย่ หรือวาจะส่เช่ยทางอีเมลได) อย่ใน การลงท่ีและอคคาน
การแจงเตือนผาน push สู่แอปบนโทรศัพท
ว่ push ทำงานอยางไร
Antimatter ไมไดทักทาม Apple หรือ Google โดยตรง สำหรบัแตละการแจงเตือน จะเรียก push proxy ท่ีเกบ credential ของแอปบนโทรศัพทและส่การแจงเตือนไปยง Apple (APNs) สำหรบั iPhone และ Google (Firebase Cloud Messaging) สำหรบั Android ท่ี Apple และ Google จะส่การแจงเตือนก็ตอเมอไดส่พรอม credential ของแอปท่ีเก่ยวกัน ดวยอยางน้ push proxy จะทำงานพรอมกับ build เดียวของแอปบนโทรศัพท: ท่ี credential ของน้ันอย
- Antimatter ไมได run push proxy สาธารณะ คุณตอง run Antimatter push proxy เอง พรอม credential ของ build แอปบนโทรศัพทท่ีผใขงานของคณตองลง
- Antimatter ไมไดส่การแจงเตือนไปยง push services ของ Mattermost ท้ท่ี test และท่ี hosted: ท่ีน้จะส่ไปยงแอปบนโทรศัพทของ Mattermost เองเทาน้ ถา server ต้ังค่าไปยงท่ีอย่ของน้ (เชน
https://push-test.mattermost.comท่ีการต้งค่าของ Mattermost ท่ีเกาใช) จะไมส่อะไรและ log warning ตอน start up
server ใหมไมมี push notification server ดวยอยางน้ จะไมส่ push notification จนตอเมอคุณต้งค่าท่ีอย่ของ push proxy ของคณ จนตอเมอน้ แอปบนโทรศัพทจะทำงานได แตจะไมไดรบัการแจงเตือน
Run push proxy
push proxy อย่ใน repository push-proxy README ของน้จะอธบายว่จะได credential ท้สองอยางไร ท่ีมาจากอคคานท่ี publish build ของแอปบนโทรศัพทของคณ:
- Android: ไฟล service account ของ Firebase project ท่ี build Android ของคณใช
- iOS: APNs authentication key (
AuthKey_<KEY ID>.p8) ของ Apple developer account ท่ี publish build iOS ของคณ พรอม key ID และ team ID
วางไฟลน้ใหอย่พรอมกบั compose.yaml พรอมไฟลการต้งค่าของ proxy:
push-proxy/
config/antimatter-push-proxy.json
certs/AuthKey_ABCDE12345.p8
certs/firebase-service-account.json
push-proxy/config/antimatter-push-proxy.json พรอม bundle identifier, key ID และ team 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 คอ bundle identifier ของ iOS ของ build ของคณ ApplePushUseDevelopment จะเปน true ก็ตอเมอ build ท่ีลงจาก Xcode การโทรจะ ring บน iPhone ผาน VoIP push ท่ีใช key เดียวกนและไมตองต้งค่าอะไรเพิ่มาท่ีน้
ไซต์นี้มีส่วนเพิ่มเติมสำหรับไฟล์ 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
เมื่อเริ่มทำงาน log ของ proxy จะระบุชื่อ push target แต่ละตัวที่ตั้งค่าไว้ และบันทึกข้อผิดพลาดสำหรับตัวใดก็ตามที่ไม่สามารถโหลดข้อมูลรับรองได้ Proxy ไม่เปิด port: มีเพียง Antimatter เท่านั้นที่เข้าถึงได้ผ่านเครือข่าย compose
หากไม่มี Docker ให้ติดตั้งแพ็กเกจ .deb หรือ .rpm ของ push proxy แทน: ดู แพ็กเกจบริการ GIF และ push proxy
กำหนดค่าให้ Antimatter ชี้ไปยัง proxy
ใน คอนโซลระบบ › สภาพแวดล้อม › เซิร์ฟเวอร์การแจ้งเตือนแบบพุช ตั้งค่า เปิดใช้งานการแจ้งเตือนแบบพุช เป็น ส่งการแจ้งเตือนแบบพุชผ่านพุชพร็อกซีของคุณเอง และ เซิร์ฟเวอร์การแจ้งเตือนแบบพุช เป็น http://push-proxy:8066 (หรือที่อยู่ HTTPS ของพร็อกซีหากทำงานที่อื่น) หน้าเพจนี้ไม่สามารถบันทึกได้หากเลือกตัวเลือกนี้โดยไม่มีที่อยู่ หากต้องการหยุดส่งการแจ้งเตือนแบบพุช ให้เลือก ไม่ส่งการแจ้งเตือนแบบพุช หรือใช้ตัวแปรบนบริการ antimatter:
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
เพื่อตรวจสอบ: เข้าสู่ระบบด้วยแอปมือถือ วางแอปไว้เบื้องหลังแล้วให้บัญชีอื่นเมนชันคุณ หากไม่มีอะไรมาถึง ให้ค้นหา push ใน log ของ Antimatter และ log ของ proxy: ซึ่งจะบอกว่าเป็นประเภทอุปกรณ์ที่ไม่รู้จัก กุญแจถูกปฏิเสธ หรืออุปกรณ์นั้นเป็นของแอปเวอร์ชันอื่น
สิ่งที่การแจ้งเตือนประกอบด้วย
คอนโซลระบบ › การตั้งค่าไซต์ › การแจ้งเตือน › เนื้อหาการแจ้งเตือน Push (EmailSettings.PushNotificationContents):
| ตัวเลือก | ค่า |
|---|---|
| คำอธิบายทั่วไปที่มีเพียงชื่อผู้ส่ง | generic_no_channel |
| คำอธิบายทั่วไปที่มีชื่อผู้ส่งและชื่อช่อง | generic |
| เนื้อหาข้อความเต็มใน payload ของการแจ้งเตือน (ค่าเริ่มต้น) | full |
| เนื้อหาข้อความเต็มที่ได้รับจากเซิร์ฟเวอร์เมื่อมีการรับ | id_loaded |
เมื่อใช้ id_loaded การแจ้งเตือนที่ผ่าน proxy, Apple และ Google จะส่งเฉพาะ id และแอปจะดึงข้อความจากเซิร์ฟเวอร์ของคุณ: เนื้อหาข้อความจะไม่ผ่านบริการของพวกเขาเลย เป็นตัวเลือกที่ดีที่สุดเมื่อข้อความมีความลับ
เกณฑ์การแจ้งเตือนสำหรับช่องขนาดใหญ่ บนหน้าเพจเซิร์ฟเวอร์การแจ้งเตือนแบบพุช (TeamSettings.MaxNotificationsPerChannel ค่าเริ่มต้นคือ 1000) คือจำนวนสมาชิกสูงสุดที่ช่องสามารถมีได้เพื่อให้ @here, @all และ @channel ทำงานได้ ในช่องที่ใหญ่กว่านั้น เมนชันเหล่านี้และตัวบ่งชี้การพิมพ์จะถูกปิด