· kaynak dev.to (home feed)
Self-hosted Mattermost varsayılan olarak DM içeriklerinin tamamını Google ve Apple push servislerine gönderiyor
dev.to üzerinde yapılan pratik bir test, yeni kurulan self-hosted Mattermost sunucularının varsayılan olarak DM metinlerinin tamamını Mattermost'un test relay'i üzerinden Google ve Apple push servislerine gönderdiğini ortaya koyuyor; bu durum projenin dokümantasyonuyla çelişiyor.

dev.to'da yayımlanan pratik bir teste göre, Mattermost'un self-hosted sunucusunun taze bir kurulumu, doğrudan mesajların (DM) ve @bahsetmelerin tam metnini varsayılan olarak Google'ın ve Apple'ın push bildirim servislerine iletiyor. Bu bulgu, self-hosted kurulumlar için içeriksiz, genel bildirimleri varsayılan olarak tanımlayan Mattermost'un kendi dokümantasyonuyla çelişiyor.
Test ne gösterdi
Yazar, dışa doğru internet erişimi olmayan bir ağda Docker üzerinde yepyeni bir Mattermost 12.1 sunucusu çalıştırdı ve yalnızca push relay'inin adresini değiştirerek bildirimlerin yerel bir dinleyiciye ulaşmasını sağladı. Her doğrudan mesaj ve @bahsetme, tam mesaj gövdesini, gönderenin kullanıcı adını, kanal adını, istemci platformunu ve bir cihaz tanımlayıcısını içeren okunabilir JSON olarak paketlendi ve ardından Mattermost'un ücretsiz Test Push Notification Service'ine (TPNS) push-test.mattermost.com'a gönderildi. Bu relay, yükleri Android için Firebase Cloud Messaging'e veya iOS için Apple'ın push servisine iletirken, bu servisler de metni alıcının kilit ekranına yerleştiriyor.
Gönderiye göre bu, alıcı o konuşmayı zaten görüntülüyor olmadığı veya Rahatsız Etmeyin modu etkin olmadığı sürece, varsayılan olarak her DM ve @bahsetme için yaşanıyor.
Dokümantasyon ve kod anlaşamıyor
Mattermost'un mobil SSS'si, varsayılan sunucu ayarlarının mesaj içeriklerini bildirimlerin dışında tuttuğunu belirtiyor; ayarlar dokümantasyonu ise varsayılan olarak yalnızca gönderen ve kanalı içeren genel bir açıklama listeliyor. Test edilen sunucu ise push bildirimleri etkin, test relay'ine yönlendirilmiş ve içerik ayarı "full" konumunda geldi.
dev.to gönderisine göre bunun açıklaması, yeni kurulumlarda kullanıma hazır deneyimi iyileştirmek için "full"ı yerleşik varsayılan yapan Mayıs 2020 tarihli bir pull request. Sürüm 5.24'ten önce oluşturulan sunucuların yapılandırma dosyalarına "generic" açıkça yazılmıştı ve bu değeri korudular; daha yeni olanlar ise "full"ı devralıyor. Helm chart ve Mattermost'un resmi Docker kurulumu bu değeri geçersiz kılmıyor ve dokümantasyon hâlâ genel olduğunu söylüyor. Yöneticiler kendi sunucularını mmctl --local config get EmailSettings.PushNotificationContents komutuyla kontrol edebilir; "full" sonucu, mesaj gövdelerinin gönderildiği anlamına gelir.
Mesajı kim okuyabilir
Sunucudan relay'e bağlantı HTTPS olsa da, relay yükü düz JSON olarak alıyor ve gönderi, Mattermost'un kullanım koşullarını TPNS mesajlarının "şifrelenmeyeceğini" ve kullanıcıların "tüm riski üstlendiğini" söyleyerek aktarıyor. Mattermost'un kendi dokümantasyonu, her yeni kurulum buna işaret etse bile TPNS'yi üretim için önermiyor. Relay'in ötesinde ise metni, göndereni ve kanalı alan Google ve Apple var. Gönderi ayrıca Senatör Wyden'in Aralık 2023'teki açıklamasını, yabancı hükümetlerin her iki şirketten de push bildirim verilerini istediğini hatırlatıyor.
Diğer sohbet sunucuları karşılaştırıldığında
Yazar projeler arasındaki varsayılanları karşılaştırıyor: Rocket.Chat de mesajı düz metin olarak gönderiyor, bunu ekibi 2021'de proje forumunda doğrulamıştı; Element X istemcisiyle Matrix yalnızca bir event ID gönderiyor ve mesajı uygulamanın kendisinin getirmesine izin veriyor; Prosody (XMPP) mesaj ya da gönderen göndermiyor, en fazla "Yeni Mesaj!" yer tutucusu görünüyor; Zulip 12 ise yalnızca uygulamanın şifrelerini çözebileceği şifreli metni gönderiyor. Mattermost ve Rocket.Chat her ikisi de yalnızca ID gönderen modeli sunuyor ama bunu ücretli lisansların arkasına koyuyor. Yazar, ücretsiz Team Edition'da bu modu seçtiğini ve sunucunun sessizce bunun yerine genel varyantı gönderdiğini gözlemlediğini bildiriyor.
Nasıl kapatılır
Yöneticiler System Console'da Site Configuration, Notifications altında Push Notification Contents seçeneğini genel bir değere ayarlayabilir veya sunucuda mmctl --local config set EmailSettings.PushNotificationContents generic komutunu çalıştırabilir (ayar tuhaf bir şekilde EmailSettings altında yer alıyor). Docker'da MM_EMAILSETTINGS_PUSHNOTIFICATIONCONTENTS=generic ortam değişkeni aynı sonucu verir. Alıcılar daha sonra yalnızca bir mesaj geldiğini görür ve mesajı okumak için uygulamayı açmak zorundadır.
Relay'i kendiniz barındırmak sorunu tamamen çözmez, çünkü mağazadan dağıtılan mobil uygulamaların kullandığı Apple ve Google anahtarlarına yalnızca Mattermost'un relay'i sahiptir; bu yola gitmek kendi uygulamalarınızı derlemek anlamına da gelir. Gönderi ironik bir ayrıntıyla kapanıyor: Mattermost'un yönetici onboarding kontrol listesinin dördüncü adımı, tam içerikli push bildirimlerini etkinleştirmek.
Neden önemli
Mattermost genellikle tam da self-hosting'in konuşmaları üçüncü taraf altyapısından uzak tuttuğu için seçilir. Bu bulgu, varsayılan olarak düz metin sohbetlerin, yöneticilerin bilinçli olarak onay vermediği sunucularda en az üç ek taraf üzerinden — Mattermost'un test relay'i artı Google ve Apple — geçtiğini gösteriyor. Varsayılanı yanlış aktaran dokümantasyon, bilgilendirilmiş onayı zayıflatıyor: özenli operatörler bile genel bildirimleri dağıttıklarına inanabilir. Push bildirim verilerine belgelenmiş devlet ilgisi göz önüne alındığında ve Matrix ile Zulip gibi projeler yalnızca ID gönderen push'un pratik olduğunu gösterdiği bir ortamda, Mattermost'un dokümantasyonu ile kodu arasındaki bu fark, 2020 ortasından bu yana kurulmuş herhangi bir sunucuda denetlenmesi gereken bir gizlilik kusuru. Düzeltme tek bir yapılandırma satırı — ama yalnızca bakmayı bilen yöneticiler için.
- #mattermost
- #self-hosting
- #privacy
- #push-notifications
- #open-source