ای میل اور پش اطلاعات
انتیمٹر مدعو ناموں، پاس ورڈ ری سیٹ، تصدیق اور چھوٹے گئے پیغامات کے لیے ای میل بھیجتا ہے، اور پش پراکسی کے ذریعے موبائل ایپ کو پش اطلاعات بھیجتا ہے۔ یہ دونوں چیزیں اس وقت تک کام نہیں کرتی جب تک آپ انہیں ترتیب نہ دیں۔
خارجہ ای میل (SMTP)
انتیمٹر آپ کے فراہم کردہ SMTP سرور کے ذریعے ای میل بھیجتا ہے: آپ کی تنظیم کا میل سرور، یا ٹرانزیکشنل ای میل سروس۔ اس کے بغیر، لوگ بھولے ہوئے پاس ورڈ ری سیٹ نہیں کر سکتے، ای میل مدعو نام اور تصدیق نہیں پہنچتی، اور کوئی بھی چھوٹے گئے پیغامات کی ای میل اطلاعات نہیں پاتا۔
اسے سسٹم کنسول › ماحول › SMTP میں ترتیب دیں، یا متغیروں کے ساتھ:
| ترتیب | کلید اور متغیر | ڈیفالٹ |
|---|---|---|
| SMTP سرور | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| SMTP سرور پورٹ | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| 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.FeedbackEmail | test@example.com: اسے تبدیل کریں |
| اطلاعات کے لیے Reply-To ایڈریس | EmailSettings.ReplyToAddress | test@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 پیکجز دیکھیں۔
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 کام کر سکیں۔ بڑے چینلز میں، ان تذکروں اور ٹائپنگ انڈیکیٹرز کو بند کر دیا جاتا ہے۔