· kaynak Hacker News – Front Page (native)
Stalwart 1.0: açık kaynaklı JMAP posta sunucusu beş yıl sonra ilk kararlı sürümünü çıkardı
Açık kaynaklı Rust posta sunucusu Stalwart, beş yılın ardından v1.0'ı yayınladı; yeniden yazılan SIMD ayrıştırıcıları, yeni bir arama motoru ve yükseltmeleri sorunlu hale getiren veritabanı şeması sonlandırıldı.

Ayrıştırma kütüphanesinden kararlı sürüme beş yıl
Açık kaynaklı posta ve iş birliği sunucusu Stalwart, ilk kararlı sürümü olan 1.0'ı yayınladı. 26 Ekim 2026 tarihinde yayımlanan proje duyurusuna göre bu yolculuk, e-posta ayrıştırmak için küçük bir Rust kütüphanesi olan mail-parser'a yapılan ilk commit ile 3 Ekim 2021'de başladı. Beş yıl içinde bu kütüphane; JMAP, IMAP, POP3 ve SMTP konuşan, CalDAV, CardDAV ve WebDAV destekli, yerleşik spam filtresi, kümeleme desteği ve yaklaşık yarım düzine depolama arka ucu barındıran eksiksiz bir sunucuya dönüştü.
Ekip, 1.0 sürümünün bilinçli olarak özellik odaklı bir sürüm olmadığını söylüyor. İki hedefi vardı: sunucunun her parçasını hızlı yapmak ve bunu sayılarla kanıtlamak; ayrıca veritabanı şemasını sonlandırmak, böylece gelecekteki yükseltmelerin yalnızca yeni sürümü kurmaktan ibaret olması, önceki bazı sürümlerin gerektirdiği sorunlu taşıma işlemlerinin yaşanmaması. Yalnızca bir özellik sürüme girebildi: tam metin arama artık PDF ve ofis belgelerinin içindeki metni dizine ekleyebiliyor.
SIMD ve SWAR ile yeniden yazılan ayrıştırıcılar
Çalışmanın büyük kısmı bir profiler gözetiminde gerçekleşti: 1.300'den fazla dosyaya dokunan yaklaşık 200 commit, çoğu bir şeyi daha hızlı veya daha hafif yapmaya odaklıydı. Temel gözlem şuydu: bir posta sunucusu, zamanının şaşırtıcı derecede büyük bir kısmını belirli baytları — MIME sınırlarını, başlık satırlarının sonlarını, IMAP etiketlerini — genellikle aynı anda bir bayt tarayarak aramakla geçiriyor.
Sürüm bunu iki teknikle ele alıyor. SIMD, modern işlemcilerin geniş vektör kayıtlarını (x86-64 üzerinde SSE2, SSSE3 ve AVX2; ARM üzerinde NEON) kullanarak tek bir komutla 16 veya 32 baytı karşılaştırıyor ya da dönüştürüyor; SWAR ise aynı fikri sıradan 64 bit aritmetikle uyguluyor ve herhangi bir CPU'da aynı anda sekiz baytı test ediyor. Stalwart'ın duyurusu, yeniden yazılan mail-parser 1.0'ın Rust'ın mailparse crate'inden üç kat, Dovecot'un kendi ayrıştırıcısından dokuz kat, tam bir ayrıştırmada ise libEtPan!, VMime ve GMime'den 15 ila 31 kat daha hızlı olduğunu iddia ediyor — bu rakamlar projenin kendi benchmark'larından geliyor. Yeni bir kodlama kütüphanesi olan encodify, Base64, Base32 ve quoted-printable için SIMD çekirdekleri ekliyor ve MIME ile sarmalanmış bir Base64 ekiği bir AMD EPYC sunucusunda standart Rust base64 crate'inden bildirildiğine göre 22 kat daha hızlı çözüyor.
Ayrıştırıcıların üzerinde, IMAP komut ayrıştırıcısı artık tablo tabanlı ve baytların bütün dizilerini tarıyor; SMTP ayrıştırıcısı, JMAP'ın arkasındaki JSON ayrıştırıcısı, spam filtresi tokenizer'ları ve HTML'den metne dönüştürücü ise SWAR taraması kullanıyor. Yöneticilerin yönlendirme ve filtreleme kararları için kullandığı ifade dili artık geri dönüştürülen bir bellek arenasında değerlendirilen kompakt bytecode'a derleniyor.
Yeniden düzenlenen depolama, önbellekleme ve arama
Her istek ardından veritabanını bekliyorsa hızlı ayrıştırmanın bir önemi kalmaz; bu nedenle tanımlayıcılar artık onları kullanan yazma işlemi içinde atanıyor, oku-değiştir-yaz güncellemeleri arka uçta merge işlemi olarak çalışıyor ve depolanan nesneler posta, takvim ve kişi verileriyle eğitilmiş sözlüklerle zstd kullanılarak sıkıştırılıyor. Her arka uç ayrı ayrı ayarlandı: RocksDB'de bloom filtreleri ve column family'ler (sıcak sayaçlar 256'ya kadar yuvaya yayılmış şekilde), FoundationDB'de önceden okunan okumalar ve SQLite'ta ayarlanmış WAL ayarları.
Yeniden tasarlanan önbellek alt sistemi, her hesabın ileti dizinini kompakt paketlenmiş biçimde bellekte tutuyor; böylece IMAP sıralama, iş parçalama, bayrak getirme ve ileti özellikleri üzerindeki aramalar az ya da hiç veritabanı okumasıyla yanıtlanıyor. Çok büyük hesaplar kendi bütçelenmiş katmanını alıyor ve önbellek anlık görüntüleri yeniden inşa edilmek yerine yerel diske, Redis'e ya da blob deposuna taşınabiliyor.
Tam metin arama motoru da temelden yeniden inşa edildi. Eski tasarımda kelime başına bir bitmap saklanıyor ve kelime konumu kavramı yoktu; yeni motor kayıtları 65.536 belgelik bloklarda saklıyor ve her ileti için kelime konumlarını tutarak gerçek ifade aramalarını mümkün kılıyor. Proje, 250.000 iletilik bir posta kutusunda her iletinin gövdesini kapsayan tam metin aramasının artık 4 milisaniyenin altında döndüğünü söylüyor.
Yüzlerce vCPU üzerinde stres testleri
Çalışmayı doğrulamak için ekip, 30'dan fazla bölgeye yayılan, birkaç yüz vCPU üzerinde paralel çalışan 18 tam laboratuvara kadar ölçeklenen, Microsoft Azure üzerinde özel bir benchmark ve stres testi laboratuvarı kurdu. 550'den fazla test hücresine yayılan 35 tür test; EventSource ve WebSocket üzerinden JMAP push dahil tüm büyük protokolleri, karışık yük altında üç düğümlü kümeyi, 5 milyona kadar iletilik posta kutularını, tek bir sunucuda 100.000 hesabı, 10 milyon iletilik posta kuyruklarını, milyonluk DMARC ve TLS raporu selini ve saniyede 20.000 yeni bağlantı, toplu oturum açma ve düşmanca iletiler gibi kötüye kullanım senaryolarını kapsıyor.
Neden önemli
Kendi sunucunuzda e-posta barındırmak geleneksel olarak Postfix, Dovecot ve benzerlerini bir araya getirmek ya da ağır groupware çözümlerine geçmek anlamına geliyordu. Stalwart, modern protokol yığınını — IMAP'ın JSON tabanlı alternatifi olan JMAP dahil — küçük bir makinede SQLite'tan kümelenmiş FoundationDB dağıtımlarına kadar ölçeklenen tek bir sunucuda birleştiriyor. Donmuş veritabanı şeması, kendi kendine barındırmanın en korkutucu operasyonel risklerinden birini ortadan kaldırıyor: postalarınızın tek kopyasını bozan bir yükseltme. Performans rakamları projenin kendi ölçümleri ve dağıtımlar büyüdükçe bağımsız doğrulamaya ihtiyaç duyacak; ancak yeni özellikler yerine kararlılığı önceliklendiren bir 1.0, kendi posta sunucusunu işleten ya da işletmeyi düşünen herkes için güçlü bir sinyal.
- #open-source
- #jmap
- #rust
- #self-hosting
İlgili yazılar
- PaperPilot, yerelde WASM uygulaması veya MCP sunucusu olarak çalışan saf Rust tabanlı bir PDF motoru
- Raven: DKIM ve DMARC Destekli Açık Kaynak Go SMTP Toolkit'i Geri Bildirim Arıyor
- NSD 4.15.3, yetkili DNS sunucularında komut çalıştırmaya imkân veren dört zone ayrıştırma üzerine yazma hatasını gideriyor