E-posta ve push bildirimleri
Antimatter, davetler, şifre sıfırlamaları, doğrulama ve kaçırılan iletiler için e-posta gönderir ve bir push proxy aracılığıyla mobil uygulamaya push bildirimleri iletir. Bunları yapılandırmadan önce ne biri ne diğeri çalışır.
Giden e-posta (SMTP)
Antimatter, e-postayı sizin sağladığınız bir SMTP sunucusu üzerinden gönderir: kuruluşunuzun e-posta sunucusu veya bir işlem e-posta (transactional email) hizmeti. Bu yapılandırma olmadan, kişiler unuttukları şifrelerini sıfırlayamaz, e-posta davetleri ve doğrulama iletileri ulaşmaz ve kaçırılan iletiler için kimse e-posta bildirimi alamaz.
Bunu Sistem Konsolu › Ortam › SMTP bölümünde yapılandırın veya değişkenlerle ayarlayın:
| Ayar | Anahtar ve değişken | Varsayılan |
|---|---|---|
| SMTP sunucusu | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| SMTP sunucusunun bağlantı noktası | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| SMTP kimlik doğrulaması kullanılsın | EmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTH | Bağlantı güvenliği yoksa kapalı, varsa açık |
| SMTP sunucu kullanıcı adı | EmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAME | boş |
| SMTP sunucu parolası | EmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORD | boş |
| Bağlantı güvenliği | EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITY | Yok (boş); veya TLS ya da STARTTLS |
| Sunucu sertifika doğrulaması atlansın | EmailSettings.SkipServerCertificateVerification | Kapalı. Üretim ortamında kapalı bırakın. |
Sağlayıcınızın belirttiği gibi 587 numaralı bağlantı noktasında STARTTLS veya 465 numaralı bağlantı noktasında TLS kullanın. Ardından aynı sayfada Bağlantıyı sına düğmesine tıklayın: Antimatter kendi adresinize bir test e-postası gönderir.
Docker Compose ile tipik bir yapılandırma, compose.yaml dosyasının yanındaki compose.override.yaml içinde:
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 değerini .env dosyasına yerleştirin. Sitein compose dosyası sunucuyu İnternet erişimine sahip olan varsayılan ağa yerleştirir, böylece dışarıdaki bir SMTP sunucusuna erişebilir.
Gönderen ve bildirim e-posta ayarları
Sistem Konsolu › Site yapılandırması › Bildirimler bölümünde:
| Ayar | Anahtar | Varsayılan |
|---|---|---|
| E-posta bildirimleri kullanılsın | EmailSettings.SendEmailNotifications | açık |
| Bildirim kimden adı | EmailSettings.FeedbackName | boş |
| Bildirim kimden adresi | EmailSettings.FeedbackEmail | test@example.com: değiştirin |
| Bildirim yanıt e-posta adresi | EmailSettings.ReplyToAddress | test@example.com: değiştirin |
| Destek e-posta adresi | SupportSettings.SupportEmail | boş |
| Bildirim alt bilgi e-posta adresi | EmailSettings.FeedbackOrganization | boş |
| E-posta bildirimi içerikleri | EmailSettings.EmailNotificationContentsType | Tam ileti içeriğini gönderin (full) veya yalnızca gönderenin adını içeren genel bir açıklama kullanın (generic) |
| Toplu e-posta işleme kullanılsın | EmailSettings.EnableEmailBatching | Kapalı. Açık olduğunda, kişiler her bir iletinin ayrı bir e-posta olarak gelmesi yerine, kaçırılan iletilerin 15 dakikada bir veya saatte bir tek bir e-postada gruplandırılmasını seçebilir. |
| E-posta Bildirimlerinde Kanal Adını Kullan | EmailSettings.UseChannelInEmailNotifications | kapalı |
| Ön izleme kipi bildirimi görüntülensin | EmailSettings.EnablePreviewModeBanner | Açık: e-posta bildirimleri kapalıyken, e-posta yapılandırılmadığını yöneticilere bildiren bir banner görüntülenir |
Gönderen adresi, SMTP sunucunuzun göndermesine izin verilen bir adres olmalıdır; alan adı için SPF ve DKIM yapılandırması yapın, aksi halde e-postalar spam klasörlerine düşebilir.
E-posta ile ilgili oturum açma ayarları (yeni hesapların adreslerini doğrulaması gerekip gerekmediği, davetlerin e-posta ile gönderilip gönderilemeyeceği) Oturum açma ve hesaplar bölümündedir.
Mobil uygulamaya itme bildirimleri
Push bildirimlerin çalışma şekli
Antimatter, Apple veya Google ile asla doğrudan iletişim kurmaz. Her bildirim için, mobil uygulamanın kimlik bilgilerini barındıran ve bildirimleri iPhone'lar için Apple'a (APNs), Android telefonlar için ise Google'a (Firebase Cloud Messaging) ileten bir push vekiline (push proxy) çağrı yapar. Apple ve Google, bir bildirimi yalnızca ilgili uygulamanın kimlik bilgileriyle gönderildiğinde iletir. Bu nedenle bir push vekili, kimlik bilgilerini barındırdığı tek bir mobil uygulama sürümüyle çalışır.
- Antimatter, herkese açık bir push vekili çalıştırmaz. Kullanıcılarınızın yüklediği mobil uygulama sürümünün kimlik bilgileriyle Antimatter push vekilini kendiniz çalıştırırsınız.
- Antimatter, test veya barındırılan Mattermost push hizmetlerine asla bildirim göndermez; bunlar yalnızca Mattermost'un kendi mobil uygulamalarına iletir. Sunucu bu adreslerden birine (örneğin eski Mattermost yapılandırmalarının kullandığı
https://push-test.mattermost.com) ayarlanırsa, hiçbir şey göndermez ve başlangıçta bir uyarı kaydeder.
Yeni bir sunucuda push bildirim sunucusu bulunmaz; bu nedenle push vekilinizin adresini ayarlayana kadar push bildirimleri gönderilmez. Bu arada mobil uygulama çalışır ancak bildirim almaz.
Push vekilini çalıştırma
Push vekili push-proxy deposundadır. README dosyası, mobil uygulamanızın sürümünü yayımlayan hesaplardan gelen iki kimlik bilgisini nasıl alacağınızı açıklar:
- Android: Android sürümünüzün kullandığı Firebase projesinin bir hizmet hesabı dosyası.
- iOS: iOS sürümünüzü yayımlayan Apple geliştirici hesabının bir APNs kimlik doğrulama anahtarı (
AuthKey_<KEY ID>.p8), anahtar ID'si ve takım ID'si ile birlikte.
Bunları vekilin yapılandırma dosyasıyla birlikte compose.yaml dosyasının yanına koyun:
push-proxy/
config/antimatter-push-proxy.json
certs/AuthKey_ABCDE12345.p8
certs/firebase-service-account.json
push-proxy/config/antimatter-push-proxy.json, paket tanımlayıcınız (bundle identifier), anahtar ID'niz ve takım ID'niz ile:
{
"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, sürümünüzün iOS paket tanımlayıcısıdır. ApplePushUseDevelopment, yalnızca Xcode'dan yüklenen sürümler için true olmalıdır. Aramalar, aynı anahtarı kullanan VoIP push'ları aracılığıyla iPhone'lar üzerinde çalar ve burada başka bir şey gerektirmez.
Site, compose dosyasına eklenebilecek hazır bir bölüm içerir: compose.push.example.yaml. Bu bölüm, yayınlanan ghcr.io/antimatterchat/push-proxy:latest görüntüsünü çalıştırır.
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
Başlangıçta proxy, kurduğu her push hedefinin adını günlüğe yazar ve kimlik bilgilerini yükleyemediği her hedef için bir hata kaydeder. Proxy hiçbir port yayımlamaz; yalnızca Antimatter, compose ağı üzerinden ona erişir.
Docker kullanmıyorsanız, bunun yerine push proxy'nin .deb veya .rpm paketini yükleyin: GIF servisi ve push proxy paketleri bölümüne bakın.
Antimatter'i proxy'ye yönlendirin
Sistem Konsolu › Ortam › Anında bildirim sunucusu bölümünde Anında bildirimler kullanılsın seçeneğini Push bildirimlerini kendi push proxy’niz üzerinden gönderin olarak, Anında bildirim sunucusu alanını ise http://push-proxy:8066 (başka bir yerde çalışıyorsa proxy'nin HTTPS adresi) olarak ayarlayın. Bu seçenekle ve adres olmadan sayfa kaydedilemez. Anında bildirim göndermeyi durdurmak için Anında bildirimler gönderilmesin seçeneğini işaretleyin. Ya da antimatter servisinde değişkenlerle:
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
Kontrol etmek için: mobil uygulamayla oturum açın, uygulamayı arka plana alın ve başka bir hesabın sizi bahsetme ile etiketlemesini sağlayın. Hiçbir şey gelmezse, Antimatter günlüğünde ve proxy günlüğünde push araması yapın: cihaz türünün bilinmediğini, bir anahtarın reddedildiğini veya cihazın başka bir uygulama derlemesine ait olduğunu belirtirler.
Bildirimlerin içeriği
Sistem Konsolu › Site yapılandırması › Bildirimler › Anında bildirim içerikleri (EmailSettings.PushNotificationContents):
| Seçenek | Değer |
|---|---|
| Yalnızca gönderen adıyla genel açıklama | generic_no_channel |
| Gönderen ve kanal adlarıyla genel açıklama | generic |
| Bildirim yükünde gönderilen tam ileti içeriği (varsayılan) | full |
| Alım sırasında sunucudan getirilen tam ileti içeriği | id_loaded |
id_loaded ile, proxy üzerinden geçen bildirim Apple ve Google'da yalnızca bir kimlik taşır ve uygulama iletinizi sunucunuzdan getirir: ileti metni asla bu servislerin üzerinden geçmez. İletiler gizliyse en iyi seçenektir.
Anında bildirim sunucusu sayfasındaki Büyük kanal bildirim eşiği (TeamSettings.MaxNotificationsPerChannel, varsayılan 1000), @here, @all ve @channel bahsetmelerinin çalışabilmesi için bir kanalın sahip olabileceği en büyük üye sayısıdır. Daha büyük kanallarda bu bahsetmeler ve yazma göstergeleri devre dışı bırakılır.