מיילים והתראות דחיפה
Antimatter שולח מיילים להזמנות, איפוס סיסמאות, אימות והודעות שלא נקראו, ושלח התראות דחיפה לאפליקציה המובייל דרך פרוקסי דחיפה. שני הדברים לא יעבודו עד שתגדיר אותם.
דוא״ר יוצא (SMTP)
Antimatter שולח מיילים דרך שרת SMTP שאתה מספק: שרת הדוא״ר של הארגון שלך, או שירות דוא״ר תהליכי. בלעדיו, אנשים לא יכולים לאפס סיסמה ששכחו, הזמנות מייל ואימות לא מגיעות, ואף אחד לא מקבל התראות מייל על הודעות שלא נקראו.
הגדר זאת בקונסולת מערכת › סביבה › 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 | אין (ריק); או TLS או STARTTLS |
| דילוג על אימות תעודת השרת | EmailSettings.SkipServerCertificateVerification | כבוי. השאר אותו כבוי בסביבת הפקדה. |
השתמש ב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: שנה זאת |
| כתובת Reply-To להתראות | EmailSettings.ReplyToAddress | test@example.com: שנה זאת |
| כתובת דוא״ל לתמיכה | SupportSettings.SupportEmail | ריק |
| כתובת דואר בכותרת התחתונה של ההתראות | EmailSettings.FeedbackOrganization | ריק |
| תוכן התראות הדוא״ל | EmailSettings.EmailNotificationContentsType | שליחת תוכן ההודעה המלא (full), או תיאור כללי עם שם השולח בלבד (generic) |
| הפעלת צבירת דוא"ל | EmailSettings.EnableEmailBatching | כבוי. אם פעיל, אנשים יכולים לבחור לקבל הודעות שלא נקראו בקבוצה במייל אחד כל 15 דקות או כל שעה, במקום מייל לכל אחת. |
| שימוש בשם הערוץ בהתראות הדוא״ל | EmailSettings.UseChannelInEmailNotifications | כבוי |
| הפעלת נסחף מצב התצוגה | EmailSettings.EnablePreviewModeBanner | פעיל: בזמן שהתראות מייל כבויות, פס מציג למנהלים שהמייל לא הוגדר |
כתובת השליח (From) חייבת להיות כתובת שהשרת SMTP מורשה לשלוח ממנה; יש להגדיר SPF ו-DKIM עבור התחום, אחרת ההודעות עלולות להגיע לתיקיית ההודעות השגויות.
הגדרות התחברות הקשורות למייל (כגון האם חשבונות חדשים חייבים לאמת את כתובתם, האם ניתן לשלוח הזמנות במייל) נמצאות בהתחברות וחשבונות.
התראות דחוף לאפליקציה המובייל
איך ההתראות הדחוף עובדות
Antimatter אינה מתקשרת ישירות עם Apple או Google. עבור כל התראה, היא פונה לפרוקסי התראות דחוף, שמחזיק את האסימונים של האפליקציה המובייל ומעביר את ההתראה ל-Apple (APNs) עבור iPhone ול-Google (Firebase Cloud Messaging) עבור טלפוני Android. Apple ו-Google משלימות התראה רק אם היא נשלחה באמצעות האסימונים של האפליקציה המיועדת לה. לכן, פרוקסי התראות דחוף עובד עם בנייה אחת של האפליקציה המובייל: זו שאסימוניה נשמרים אצלו.
- Antimatter אינה מפעילה פרוקסי התראות דחוף ציבורי. אתם מפעילים את פרוקסי ההתראות הדחוף של Antimatter בעצמכם, באמצעות האסימונים של בניית האפליקציה המובייל שמשתמשים שלכם מתקינים.
- Antimatter אינה שולחת התראות לשירותי ההתראות הדחוף של Mattermost, בין אם לבדיקה ובין אם להוסטינג: הם משלימים התראות רק לאפליקציות המובייל של Mattermost עצמה. אם השרת מוגדר לאחד מהכתובות שלהם (כגון
https://push-test.mattermost.com, ששימוש בה נפוץ בהגדרות Mattermost ישנות), הוא לא ישלח כלום וירשום אזהרה בהתחלה.
שרת חדש אינו מכיל שרת התראות דחוף, ולכן הוא לא ישלח התראות דחוף עד שתגדירו את כתובת פרוקסי ההתראות שלכם. עד אז, האפליקציה המובייל תעבוד, אך לא תקבל התראות.
הפעלת פרוקסי ההתראות
פרוקסי ההתראות נמצא במאגר push-proxy. קובץ ה-README שלו מסביר כיצד להשיג את שני האסימונים, שמגיעים מהחשבונות שמפרסמים את בניית האפליקציה המובייל שלכם:
- Android: קובץ חשבון שירות של פרויקט Firebase שבו משתמשת בניית Android שלכם.
- iOS: מפתח אימות APNs (
AuthKey_<KEY ID>.p8) של חשבון פיתוח Apple שמפרסם את בניית iOS שלכם, יחד עם מזהה המפתח (Key ID) ומזהה הצוות (Team ID).
שמו אותם ליד compose.yaml, יחד עם קובץ ההגדרות של הפרוקסי:
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), מזהה המפתח ומזהה הצוות שלכם:
{
"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 שלכם. ApplePushUseDevelopment הוא true רק עבור בנייה שמתקינים מ-Xcode. שיחות מצלצלות ב-iPhone באמצעות התראות דחוף VoIP, שמשתמשות באותו מפתח ואינן דורשות הגדרה נוספת כאן.
באתר קיימת תוספת מוכנה לקובץ 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
בהתחלה, יומן ה־proxy מציין כל יעד push שהוגדר, ומדווח על שגיאה לכל יעד ששם האישורים שלו אינו ניתן לטעינה. ה־proxy אינו מפרסם פורט: רק Antimatter יכול להגיע אליו, דרך רשת ה־compose.
ללא Docker, יש להתקין במקום זאת את חבילת ה־.deb או ה־.rpm של push proxy: ראו חבילות שירות ה־GIF ו־push proxy.
כוון את Antimatter אל ה־proxy
בקונסולת מערכת › סביבה › שרת התראות Push, הגדירו את הפעלת התראות דחיפה לשליחת התראות דחיפה דרך שירות מתווך (Push Proxy) משלך, ואת שרת התראות Push לhttp://push-proxy:8066 (או לכתובת HTTPS של המתווך אם הוא פועל במקום אחר). לא ניתן לשמור את הדף עם אפשרות זו בלי כתובת. כדי להפסיק לשלוח התראות דחיפה, בחרו בלא לשלוח התראות דחיפה. או באמצעות משתנים בשירות antimatter:
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
לבדיקה: התחבר עם אפליקציית המובייל, הוצא אותה לרקע, והזמן את עצמך מחשבון אחר. אם לא הגיעה התראה, חפש את push ביומן של Antimatter וביומן של ה־proxy: הם יציגו אם סוג המכשיר אינו מוכר, אם מפתח נדחה, או אם המכשיר שייך לבנייה אחרת של האפליקציה.
מה מכילות ההתראות
קונסולת מערכת › הגדרות האתר › התראות › תוכן התראות Push (EmailSettings.PushNotificationContents):
| אפשרות | ערך |
|---|---|
| תיאור כללי עם שם השולח בלבד | generic_no_channel |
| תיאור כללי עם שם השולח ושם הערוץ | generic |
| תוכן מלא של ההודעה שנשלח בתשליל ההתראה (ברירת מחדל) | full |
| תוכן מלא של ההודעה שמוטען מהשרת בעת קבלת ההתראה | id_loaded |
עם id_loaded, ההתראה שעוברת דרך ה־proxy נושאת רק מזהה, והאפליקציה מורידה את ההודעה מהשרת שלך: טקסט ההודעה לעולם לא עובר דרך השירותים של Apple ו־Google. זו האפשרות הטובה ביותר כאשר ההודעות סודיות.
סף התראות לערוץ גדול, בדף שרת התראות Push, (TeamSettings.MaxNotificationsPerChannel, ברירת המחדל 1000) הוא מספר החברים המקסימלי שערוץ יכול להכיל כדי שההזכרות @here, @all ו-@channel יעבדו. בערוצים גדולים יותר, ההזכרות האלו והענף ההקלדה נסגרות.