ای میل اور پش اطلاعات

انتیمٹر مدعو ناموں، پاس ورڈ ری سیٹ، تصدیق اور چھوٹے گئے پیغامات کے لیے ای میل بھیجتا ہے، اور پش پراکسی کے ذریعے موبائل ایپ کو پش اطلاعات بھیجتا ہے۔ یہ دونوں چیزیں اس وقت تک کام نہیں کرتی جب تک آپ انہیں ترتیب نہ دیں۔

خارجہ ای میل (SMTP)

انتیمٹر آپ کے فراہم کردہ SMTP سرور کے ذریعے ای میل بھیجتا ہے: آپ کی تنظیم کا میل سرور، یا ٹرانزیکشنل ای میل سروس۔ اس کے بغیر، لوگ بھولے ہوئے پاس ورڈ ری سیٹ نہیں کر سکتے، ای میل مدعو نام اور تصدیق نہیں پہنچتی، اور کوئی بھی چھوٹے گئے پیغامات کی ای میل اطلاعات نہیں پاتا۔

اسے سسٹم کنسول › ماحول › SMTP میں ترتیب دیں، یا متغیروں کے ساتھ:

ترتیبکلید اور متغیرڈیفالٹ
SMTP سرورEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
SMTP سرور پورٹEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
SMTP Authentication فعال کریں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 استعمال کریں۔ پھر اسی صفحے پر کنکشن ٹیسٹ کریں پر کلک کریں: انتیمٹر آپ کے اپنے ای میل ایڈریس پر ایک ٹیسٹ ای میل بھیجتا ہے۔

ڈاکر کمپوز کے ساتھ ایک عام سیٹ اپ، 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غیر فعال
Preview Mode بینر فعال کریںEmailSettings.EnablePreviewModeBannerآن: جب تک ای میل اطلاعات بند ہیں، ایک بینر ایڈمنز کو بتاتا ہے کہ ای میل ترتیب نہیں دی گئی

From ایڈریس وہ ہونا چاہیے جس کے طور پر آپ کے SMTP سرور کو بھیجنے کی اجازت ہے؛ اس کے ڈومین کے لیے SPF اور DKIM سیٹ اپ کریں، ورنہ ای میلز اسپیم فولڈرز میں جا سکتی ہیں۔

ای میل سے متعلق سائن ان ترتیبات (جیسے کہ نئے اکاؤنٹس کو کیا اپنا ایڈریس تصدیق کرنا ہوگا، یا کیا دعوت نامے ای میل کے ذریعے بھیجے جا سکتے ہیں) سائن ان اور اکاؤنٹس میں موجود ہیں۔

موبائل ایپ کو پش اطلاعات

پوش کیسے کام کرتا ہے

Antimatter کبھی بھی Apple یا Google کے ساتھ براہِ راست بات چیت نہیں کرتا۔ ہر اطلاع کے لیے، یہ push proxy کو کال کرتا ہے، جو موبائل ایپ کے کوالیفیکیشنز (credentials) رکھتا ہے اور اطلاع کو آئی فونز کے لیے Apple (APNs) اور اینڈرائیڈ فونز کے لیے Google (Firebase Cloud Messaging) کو فوروارد کرتا ہے۔ Apple اور Google صرف تب اطلاع ڈیلیور کرتے ہیں جب وہ ایپ کے کوالیفیکیشنز کے ساتھ بھیجی جائے جس کے لیے وہ ہے۔ لہذا push proxy موبائل ایپ کے ایک بلڈ کے ساتھ کام کرتا ہے: وہ جس کے کوالیفیکیشنز اس میں موجود ہیں۔

  • Antimatter کوئی عوامی push proxy نہیں چلاتا۔ آپ خود Antimatter push proxy چلاتے ہیں، اپنے صارفین کے نصب کردہ موبائل ایپ بلڈ کے کوالیفیکیشنز کے ساتھ۔
  • Antimatter کبھی بھی Mattermost کے push سروسز کو اطلاعات نہیں بھیجتا، چاہے وہ ٹیسٹ ہو یا ہوسٹڈ: وہ صرف Mattermost کے اپنے موبائل ایپس کو ڈیلیور کرتے ہیں۔ اگر سرور ان میں سے کسی ایڈریس پر سیٹ ہو (جیسے https://push-test.mattermost.com، جو پرانے Mattermost کنفیگریشنز استعمال کرتی ہیں)، تو یہ کچھ بھی نہیں بھیجتا اور اسٹارٹ اپ پر ایک وارننگ لاگ کرتا ہے۔

نئے سرور میں کوئی push notification سرور نہیں ہوتا، اس لیے جب تک آپ اپنے push proxy کا ایڈریس سیٹ نہیں کرتے، یہ کوئی push notifications نہیں بھیجتا۔ اس سے پہلے، موبائل ایپ کام کرتی ہے لیکن کوئی اطلاعات نہیں موصول ہوتیں۔

push proxy چلائیں

push proxy push-proxy ریپوزٹری میں موجود ہے۔ اس کا README بتاتا ہے کہ دو کوالیفیکیشنز کیسے حاصل کریں، جو موبائل ایپ کے بلڈ کو پبلش کرنے والے اکاؤنٹس سے آتی ہیں:

  • Android: Firebase پروجیکٹ کا سروس اکاؤنٹ فائل جسے آپ کا Android بلڈ استعمال کرتا ہے۔
  • iOS: Apple ڈویلپر اکاؤنٹ کا APNs Authentication key (AuthKey_<KEY ID>.p8) جو آپ کے 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 آپ کے بلڈ کا iOS bundle identifier ہے۔ ApplePushUseDevelopment صرف Xcode سے انسٹال شدہ بلڈز کے لیے true ہوتا ہے۔ کالز آئی فونز پر VoIP pushes کے ذریعے رینگ کرتی ہیں، جو اسی key کو استعمال کرتی ہیں اور یہاں مزید کچھ درکار نہیں ہوتا۔

سائٹ پر کمپوز فائل کے لیے تیار شدہ اضافہ موجود ہے: 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

چیک کرنے کے لیے: موبائل ایپ کے ساتھ سائن ان کریں، اسے بیک گراؤنڈ میں رکھیں اور کسی دوسرے اکاؤنٹ سے آپ کا تذکرہ کروائیں۔ اگر کچھ نہیں آتا، تو Antimatter کے لاگ اور پروکسی کے لاگ میں push کی تلاش کریں: وہ بتاتے ہیں کہ کیا ڈیوائس کی قسم نامعلوم ہے، کوئی کلے رد کر دیا گیا ہے، یا ڈیوائس کسی دوسرے ایپ بلڈ سے تعلق رکھتی ہے۔

اطلاعات میں کیا شامل ہے

سسٹم کنسول › سائٹ کی ترتیبات › اطلاعات › پش اطلاعات کا مواد (EmailSettings.PushNotificationContents):

آپشنقیمت
صرف بھیجنے والے کے نام کے ساتھ عمومی تفصیلgeneric_no_channel
بھیجنے والے اور چینل کے ناموں کے ساتھ عمومی تفصیلgeneric
نوٹیفیکیشن پی لوڈ میں بھیجا گیا مکمل پیغام کا مواد (ڈیفالٹ)full
وصول ہوتے وقت سرور سے حاصل کردہ مکمل پیغام کا موادid_loaded

id_loaded کے ساتھ، پروکسی کے ذریعے گزرنے والی نوٹیفیکیشن میں Apple اور Google صرف ایک id لے جاتے ہیں، اور ایپ پیغام کو آپ کے سرور سے حاصل کرتی ہے: پیغام کا متن کبھی ان کی سروسز سے نہیں گزرتا۔ جب پیغامات خفیہ ہوں تو یہ بہترین انتخاب ہے۔

بڑے چینل کی اطلاع کی حد، پش نوٹیفیکیشن سرور کے صفحے پر، (TeamSettings.MaxNotificationsPerChannel، ڈیفالٹ 1000) وہ زیادہ سے زیادہ اعداد و شمار ہے جو چینل کے ارکان ہو سکتے ہیں تاکہ @here، @all اور @channel کام کر سکیں۔ بڑے چینلز میں، ان تذکروں اور ٹائپنگ انڈیکیٹرز کو بند کر دیا جاتا ہے۔