ईमेल और पुश सूचनएं

Antimatter आमंत्रण, पासवर्ड रीसेट, सत्यापन और छूटे हुए संदेशों के लिए ईमेल भेजता है, और पुश प्रॉक्सी के माध्यम से मोबाइल ऐप के लिए पुश सूचनएं। जब तक आप इसे कॉन्फ़िगर नहीं करते, तब तक न तो यह काम करता है।

आउटगोइंग ईमेल (SMTP)

Antimatter आपके द्वारा प्रदान किए गए SMTP सर्वर के माध्यम से ईमेल भेजता है: आपकी संस्था का मेल सर्वर, या एक ट्रांज़ैक्शनल ईमेल सेवा। इसके बिना, लोग भुले हुए पासवर्ड रीसेट नहीं कर सकते, ईमेल आमंत्रण और सत्यापन नहीं मिलते, और छूटे हुए संदेशों की ईमेल सूचनएं किसी को नहीं मिलतीं।

इसे सिस्टम कंसोल › पर्यारण › SMTP में सेट करें, या वेरिएबल सें:

सेटिंगकी और वेरिएबलडिफ़ॉल्ट
SMTP सर्वरEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
SMTP सर्वर पोर्टEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
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बंद। प्रोडक्शन में इसे बंद ही रखें।

अपने प्रोवाइडर कें कहे अनुसार पोर्ट 587 पर STARTTLS या पोर्ट 465 पर TLS उपयोग करें। फिर उसी पेज पर कनेक्शन का परीक्षण करें पर क्लिक करें: Antimatter आपके अपने पते पर एक टेस्ट ईमेल भेजता है।

Docker Compose के साथ एक सामान्य सेटअप, compose.yaml के पास compose.override.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 में रखें। साइट का कॉम्पाइज़ फ़ाइल सर्वर को डिफ़ॉल्ट नेटवर्क पर रखती है, जिसमें इंटरनेट एक्सेस है, इसलिए यह बाहरी 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 से सीधे बात नहीं करता है। हर सूचन के लिए, यह एक पुश प्रॉक्सी को कॉल करता है, जो मोबाइल ऐप के क्रेडेंशियल्स रखता है और iPhone के लिए Apple (APNs) और Android फोन के लिए Google (Firebase Cloud Messaging) को सूचन आगे भेजता है। Apple और Google तभी सूचन डिलीवर करते हैं जब वह उस ऐप के क्रेडेंशियल्स के साथ भेजी जाती है जिसके लिए वह है। इसलिए एक पुश प्रॉक्सी मोबाइल ऐप के एक बिल्ड के साथ काम करता है: जिसके क्रेडेंशियल्स वह रखता है।

  • Antimatter कोई सार्वजनिक पुश प्रॉक्सी नहीं चलाता है। आपको Antimatter पुश प्रॉक्सी को स्वयं चलाना होगा, अपने उपयोगकर्ताओं द्वारा इंस्टॉल किए गए मोबाइल ऐप बिल्ड के क्रेडेंशियल्स के साथ।
  • Antimatter कभी Mattermost के पुश सर्विसेज, चाहे टेस्ट या होस्टेड, तक सूचन नहीं भेजता है: वे केवल Mattermost के अपने मोबाइल ऐप्स तक डिलीवर करते हैं। यदि सर्वर उनके किसी पते (जैसे https://push-test.mattermost.com, जिसे पुराने Mattermost कॉन्फ़िगरेशन उपयोग करते हैं) पर सेट किया गया है, तो वह कुछ नहीं भेजता है और स्टार्टअप पर एक चेतावनी लॉग करता है।

एक नए सर्वर में कोई पुश सूचन सर्वर नहीं होता है, इसलिए जब तक आप अपने पुश प्रॉक्सी का पता सेट नहीं करते, वह कोई पुश सूचन नहीं भेजता है। तब तक, मोबाइल ऐप काम करता है लेकिन कोई सूचन नहीं पाता।

पुश प्रॉक्सी चलाएं

पुश प्रॉक्सी push-proxy रिपॉज़िटरी में है। इसका README बताता है कि दो क्रेडेंशियल्स कैसे प्राप्त करें, जो आपके मोबाइल ऐप बिल्ड को प्रकाशित करने वाले अकाउंट्स से आते हैं:

  • Android: आपके Android बिल्ड द्वारा उपयोग किए जाने वाले Firebase प्रोजेक्ट का एक सर्विस अकाउंट फाइल।
  • iOS: आपके iOS बिल्ड को प्रकाशित करने वाले Apple डेवलपर अकाउंट की एक APNs प्रमाणीकरण कुंजी (AuthKey_<KEY ID>.p8), जिसकी कुंजी ID और टीम 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, आपके बंडल पहचानकर्ता, कुंजी ID और टीम 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 आपके बिल्ड का iOS बंडल पहचानकर्ता है। ApplePushUseDevelopment केवल Xcode से इंस्टॉल किए गए बिल्ड के लिए true होता है। कॉल iPhone के माध्यम से VoIP पुश के जरिए बजते हैं, जो उसी कुंजी का उपयोग करते हैं और यहां कुछ और की आवश्यकता नहीं होती।

साइट में कंपोज़ फ़ाइल के लिए एक तैयार अतिरिक्त उपलब्ध है, 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

प्रारंभ पर, प्रॉक्सी का लॉग प्रत्येक पुश टार्गेट का नाम बताता है जिसे उसने सेटअप किया, और उनमें से किसी भी टार्गेट के लिए त्रुटि दर्ज करता है जिसके क्रेडेंशियल्स वह लोड नहीं कर पाता। प्रॉक्सी कोई पोर्ट प्रकाशित नहीं करती: केवल Antimatter ही कंपोज़ नेटवर्क के माध्यम से इससे संपर्क करती है।

Docker के बिना, push proxy का .deb या .rpm पैकेज इंस्टॉल करें: GIF सर्विस और push proxy पैकेज देखें।

पुश प्रॉक्सी यह जाँच नहीं करती कि कौन इसे कॉल कर रहा है। इसे इंटरनेट पर एक्सपोज़ न करें। यदि यह किसी अन्य होस्ट पर चल रही है, तो इसे HTTPS के पीछे रखें और यह सीमित करें कि कौन इससे संपर्क कर सकता है: सूचनानों में संदेश का टेक्स्ट शामिल हो सकता है।

Antimatter को प्रॉक्सी की ओर निर्देशित करें

सिस्टम कंसोल › पर्यारण › पुश सूचना सर्वर में, पुश सूचनाएँ सक्षम करें को अपने स्वयं के पुश प्रॉक्सी के माध्यम से पुश नोटिफिकेशन भेजें पर सेट करें, और पुश सूचना सर्वर को http://push-proxy:8066 (या यदि प्रॉक्सी कहीं और चल रहा है तो उसके HTTPS पते) पर सेट करें। इस विकल्प के साथ और बिना पते के पेज सेव नहीं हो सकता। पुश सूचनाएँ भेजना बंद करने के लिए, पुश सूचनाएँ न भेजें चुनें। या antimatter सर्विस पर वेरिएबल सें:

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

जाँच करने के लिए: मोबाइल ऐप से साइन इन करें, इसे बैकग्राउंड में रखें और किसी अन्य खाते से आपको उल्लेख (mention) करें। यदि कुछ नहीं आता, तो Antimatter के लॉग और प्रॉक्सी के लॉग में push खोजें: वे बताते हैं कि डिवाइस का प्रकार अज्ञात है, कोई कुंजी अस्वीकृत की गई है, या डिवाइस किसी अन्य ऐप बिल्ड से संबंधित है।

सूचनाओं में क्या शामिल होता है

सिस्टम कंसोल › साइट कॉन्फ़िगरेशन › सूचनाएँ › पुश सूचना सामग्री (EmailSettings.PushNotificationContents):

विकल्पमान
केवल भेता के नाम के साथ सामान्य विवरणgeneric_no_channel
भेता और चैनल के नामों के साथ सामान्य विवरणgeneric
सूचना पैलेड में भेजा गया पूर्ण संदेश सामग्री (डिफ़ॉल्ट)full
प्राप्ति पर सर्वर से प्राप्त की गई पूर्ण संदेश सामग्रीid_loaded

id_loaded के साथ, प्रॉक्सी के माध्यम से जाने वाली सूचना में Apple और Google केवल एक id ले जाते हैं, और ऐप संदेश को आपके सर्वर से प्राप्त करती है: संदेश का टेक्स्ट कभी भी उनके सेवाओं के माध्यम से नहीं गुज़रता। जब संदेश गोपनीय हों, तो यह सबसे अच्छा विकल्प है।

पुश सूचना सर्वर पेज पर बड़े चैनल सूचना सीमा (TeamSettings.MaxNotificationsPerChannel, डिफ़ॉल्ट रूप से 1000) वह अधिकतम सदस्य संख्या है जिसके लिए @here, @all और @channel काम कर सकते हैं। बड़े चैनलों में, उन उल्लेखों और टाइपिंग इंडिकेटर बंद कर दिए जाते हैं।