מיילים והתראות דחיפה

Antimatter שולח מיילים להזמנות, איפוס סיסמאות, אימות והודעות שלא נקראו, ושלח התראות דחיפה לאפליקציה המובייל דרך פרוקסי דחיפה. שני הדברים לא יעבודו עד שתגדיר אותם.

דוא״ר יוצא (SMTP)

Antimatter שולח מיילים דרך שרת SMTP שאתה מספק: שרת הדוא״ר של הארגון שלך, או שירות דוא״ר תהליכי. בלעדיו, אנשים לא יכולים לאפס סיסמה ששכחו, הזמנות מייל ואימות לא מגיעות, ואף אחד לא מקבל התראות מייל על הודעות שלא נקראו.

הגדר זאת בקונסולת מערכת › סביבה › SMTP, או עם משתנים:

הגדרהמפתח ומשתנהברירת מחדל
שרת SMTPEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
פורט שרת SMTPEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
הפעלת אימות SMTPEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHכבוי ללא אבטחת חיבור, פעיל עם אבטחת חיבור
שם משתמש לשרת SMTPEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEריק
סיסמת שרת SMTPEmailSettings.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.FeedbackEmailtest@example.com: שנה זאת
כתובת Reply-To להתראותEmailSettings.ReplyToAddresstest@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.

ה־proxy אינו בודק מי פונה אליו. אל תחשפ אותו לאינטרנט. אם הוא רץ על מארח אחר, הגן עליו עם HTTPS ומגבלות גישה: ההתראות יכולות להכיל את טקסט ההודעה.

כוון את 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 יעבדו. בערוצים גדולים יותר, ההזכרות האלו והענף ההקלדה נסגרות.