Email và thông báo đẩy
Antimatter gửi email cho lời mời, đặt lại mật khẩu, xác minh và tin nhắn bị bỏ lỡ, và gửi thông báo đẩy đến ứng dụng di động thông qua proxy đẩy. Cả hai đều không hoạt động cho đến khi bạn cấu hình chúng.
Email gửi đi (SMTP)
Antimatter gửi email thông qua máy chủ SMTP do bạn cung cấp: máy chủ email của tổ chức bạn, hoặc dịch vụ email giao dịch. Nếu không có nó, người dùng không thể đặt lại mật khẩu đã quên, email mời và xác minh sẽ không đến, và không ai nhận được thông báo email về tin nhắn bị bỏ lỡ.
Cấu hình trong Bảng điều khiển Hệ thống › Môi trường › SMTP, hoặc bằng các biến:
| Cài đặt | Khóa và biến | Mặc định |
|---|---|---|
| Máy chủ SMTP | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| Cổng máy chủ SMTP | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| Kích hoạt xác thực SMTP | EmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTH | tắt nếu không có bảo mật kết nối, bật nếu có |
| Tên người dùng máy chủ SMTP | EmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAME | trống |
| Mật khẩu máy chủ SMTP | EmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORD | trống |
| Bảo mật kết nối | EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITY | Không có (trống); hoặc TLS hoặc STARTTLS |
| Bỏ qua xác nhận chứng chỉ máy chủ | EmailSettings.SkipServerCertificateVerification | tắt. Hãy giữ nó tắt trong môi trường sản xuất. |
Sử dụng STARTTLS trên cổng 587 hoặc TLS trên cổng 465, theo hướng dẫn của nhà cung cấp. Sau đó, nhấp vào Kiểm tra kết nối trên cùng trang: Antimatter sẽ gửi một email kiểm tra đến chính địa chỉ của bạn.
Một cấu hình điển hình với Docker Compose, trong compose.override.yaml bên cạnh 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
Đặt SMTP_PASSWORD trong .env. Tệp compose của trang web đặt máy chủ trên mạng mặc định, nơi có quyền truy cập Internet, do đó nó có thể kết nối với máy chủ SMTP bên ngoài.
Cài đặt email người gửi và thông báo
Trong Bảng điều khiển Hệ thống › Cấu hình Trang web › Thông báo:
| Cài đặt | Khóa | Mặc định |
|---|---|---|
| Bật thông báo email | EmailSettings.SendEmailNotifications | on |
| Tên hiển thị thông báo | EmailSettings.FeedbackName | trống |
| Thông báo từ địa chỉ | EmailSettings.FeedbackEmail | test@example.com: hãy thay đổi nó |
| Địa chỉ trả lời thông báo | EmailSettings.ReplyToAddress | test@example.com: hãy thay đổi nó |
| Địa chỉ email hỗ trợ | SupportSettings.SupportEmail | trống |
| Địa chỉ gửi thư thông báo chân trang | EmailSettings.FeedbackOrganization | trống |
| Nội dung email thông báo | EmailSettings.EmailNotificationContentsType | Gửi nội dung tin nhắn đầy đủ (full), hoặc mô tả chung chỉ có tên người gửi (generic) |
| Kích hoạt tính năng Batching Email | EmailSettings.EnableEmailBatching | tắt. Bật, người dùng có thể chọn nhận tin nhắn bị bỏ lỡ được nhóm lại trong một email mỗi 15 phút hoặc mỗi giờ, thay vì một email riêng cho từng tin. |
| Sử dụng tên kênh trong thông báo email | EmailSettings.UseChannelInEmailNotifications | Tắt |
| Bật biểu ngữ chế độ xem trước | EmailSettings.EnablePreviewModeBanner | bật: trong khi thông báo email đang tắt, một thanh tiêu đề sẽ thông báo cho quản trị viên rằng email chưa được cấu hình |
Địa chỉ From phải là một địa chỉ mà máy chủ SMTP của bạn được phép gửi; hãy cấu hình SPF và DKIM cho tên miền của nó, nếu không các email có thể bị đưa vào thư mục spam.
Các cài đặt liên quan đến email cho việc đăng nhập (ví dụ: tài khoản mới có phải xác minh địa chỉ không, có thể gửi lời mời qua email không) nằm trong Đăng nhập và tài khoản.
Thông báo đẩy đến ứng dụng di động
Cách thông báo đẩy hoạt động
Antimatter không bao giờ liên lạc trực tiếp với Apple hoặc Google. Đối với mỗi thông báo, nó gọi một proxy đẩy, nơi lưu trữ thông tin xác thực của ứng dụng di động và chuyển tiếp thông báo đến Apple (APNs) cho iPhone và đến Google (Firebase Cloud Messaging) cho điện thoại Android. Apple và Google chỉ phân phối thông báo khi nó được gửi bằng thông tin xác thực của ứng dụng đích. Do đó, một proxy đẩy hoạt động với một bản dựng của ứng dụng di động: bản dựng mà nó lưu trữ thông tin xác thực.
- Antimatter không vận hành một proxy đẩy công khai. Bạn tự vận hành proxy đẩy của Antimatter, sử dụng thông tin xác thực của bản dựng ứng dụng di động mà người dùng của bạn cài đặt.
- Antimatter không bao giờ gửi thông báo đến các dịch vụ đẩy của Mattermost, dù là thử nghiệm hay có sẵn: chúng chỉ phân phối đến các ứng dụng di động riêng của Mattermost. Nếu máy chủ được cấu hình với một trong các địa chỉ của họ (chẳng hạn như
https://push-test.mattermost.com, được sử dụng trong các cấu hình Mattermost cũ hơn), nó sẽ không gửi gì và ghi lại một cảnh báo khi khởi động.
Một máy chủ mới không có máy chủ thông báo đẩy, do đó nó không gửi thông báo đẩy nào cho đến khi bạn thiết lập địa chỉ của proxy đẩy của bạn. Cho đến khi đó, ứng dụng di động hoạt động nhưng không nhận được thông báo.
Vận hành proxy đẩy
Proxy đẩy nằm trong kho push-proxy. README của nó giải thích cách lấy hai thông tin xác thực, vốn đến từ các tài khoản phát hành bản dựng ứng dụng di động của bạn:
- Hệ điều hành Android: tệp tài khoản dịch vụ của dự án Firebase mà bản dựng Android của bạn sử dụng.
- iOS: một khóa xác thực APNs (
AuthKey_<KEY ID>.p8) của tài khoản nhà phát triển Apple phát hành bản dựng iOS của bạn, cùng với ID khóa và ID nhóm của nó.
Đặt chúng cạnh compose.yaml, cùng với tệp cấu hình của proxy:
push-proxy/
config/antimatter-push-proxy.json
certs/AuthKey_ABCDE12345.p8
certs/firebase-service-account.json
push-proxy/config/antimatter-push-proxy.json, với định danh gói (bundle identifier), ID khóa và ID nhóm của bạn:
{
"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 là định danh gói iOS của bản dựng của bạn. ApplePushUseDevelopment chỉ là true cho các bản dựng được cài đặt từ Xcode. Các cuộc gọi sẽ đổ chuông trên iPhone thông qua các thông báo đẩy VoIP, sử dụng cùng một khóa và không cần thêm gì ở đây.
Trang web có sẵn một phần bổ sung cho tệp compose, compose.push.example.yaml. Tệp này chạy ảnh đã phát hành, 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
Khi khởi động, nhật ký của proxy sẽ liệt kê từng đích đẩy (push target) mà nó đã thiết lập và ghi lại lỗi cho bất kỳ đích nào mà nó không thể tải thông tin xác thực. Proxy không công bố cổng nào: chỉ Antimatter mới có thể truy cập nó, thông qua mạng compose.
Nếu không sử dụng Docker, hãy cài đặt gói .deb hoặc .rpm của proxy push thay thế: xem Gói dịch vụ GIF và proxy push.
Chỉ định Antimatter đến proxy
Trong Bảng điều khiển Hệ thống › Môi trường › Máy chủ Thông báo Đẩy, đặt Bật Thông báo Đẩy thành Gửi thông báo đẩy thông qua proxy đẩy của riêng bạn, và Máy chủ Thông báo Đẩy thành http://push-proxy:8066 (hoặc địa chỉ HTTPS của proxy nếu nó chạy ở nơi khác). Trang này không thể được lưu nếu chọn tùy chọn này mà không có địa chỉ. Để ngừng gửi thông báo đẩy, hãy chọn Không gửi thông báo đẩy. Hoặc sử dụng các biến trong dịch vụ antimatter:
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
Để kiểm tra: đăng nhập bằng ứng dụng di động, đưa nó vào chế độ nền và để một tài khoản khác nhắc đến bạn. Nếu không có gì đến, hãy tìm push trong nhật ký của Antimatter và trong nhật ký của proxy: chúng sẽ cho biết loại thiết bị không được biết đến, một khóa đã bị từ chối, hoặc thiết bị thuộc về một bản dựng ứng dụng khác.
Thông báo chứa những gì
Bảng điều khiển Hệ thống › Cấu hình trang web › Thông báo › Nội dung email thông báo (EmailSettings.PushNotificationContents):
| Tùy chọn | Giá trị |
|---|---|
| Mô tả chung chỉ có tên người gửi | generic_no_channel |
| Mô tả chung có tên người gửi và tên kênh | generic |
| Toàn bộ nội dung tin nhắn được gửi trong tải trọng thông báo (mặc định) | full |
| Toàn bộ nội dung tin nhắn được lấy từ máy chủ khi nhận | id_loaded |
Với id_loaded, thông báo đi qua proxy, Apple và Google chỉ mang một id, và ứng dụng sẽ lấy tin nhắn từ máy chủ của bạn: nội dung tin nhắn không bao giờ đi qua dịch vụ của họ. Đây là lựa chọn tốt nhất khi tin nhắn có tính bảo mật.
Số thông báo tối đa trên mỗi kênh, trên trang Push Notification Server, (TeamSettings.MaxNotificationsPerChannel, mặc định là 1000) là số lượng thành viên tối đa mà một kênh có thể có để @here, @all và @channel hoạt động. Trong các kênh lớn hơn, các nhắc đến này và chỉ báo đang nhập sẽ bị tắt.