Stalwart 1.0: перший стабільний випуск поштового сервера

Stalwart досяг версії 1.0: перший стабільний випуск

Після п’яти років розробки, Stalwart, відкритий поштовий та колабораційний сервер, написаний на Rust, досяг версії 1.0. Це знаменує перший стабільний випуск, оголошений як “Найшвидший поштовий сервер на планеті”.

Особливості нового релізу Stalwart

Для тих, хто не знайомий, це комплексний поштовий сервер, що підтримує SMTP, IMAP, POP3 та JMAP. Як було зазначено раніше, проект також розширився до більш широкої колабораційної платформи, додавши підтримку календарів, контактів та спільного використання файлів через CalDAV, CardDAV та WebDAV.

Покращення продуктивності в версії 1.0

Одне з головних покращень у версії 1.0 полягає у переписуванні кількох основних парсерів з використанням технологій SIMD і SWAR. Це дозволяє серверу обробляти кілька байтів одночасно, замість їх послідовного перегляду.

Бібліотека mail-parser проекту була переписана з нуля. Розробники повідомляють про продуктивність до трьох разів швидше, ніж у бібліотеки mailparse на Rust, та у дев’ять разів швидше, ніж у парсера Dovecot. Нова бібліотека кодування, encodify, також прискорює обробку Base64 та quoted-printable.

Поліпшення бази даних і оптимізації

Продуктивність бази даних також покращилася. Stalwart тепер зменшує непотрібні операції зберігання, використовує більш ефективні транзакції та застосовує стиснення zstd, оптимізоване для пошти, календарів і контактів.

Розробники впровадили специфічні оптимізації для цих платформ: RocksDB, PostgreSQL, MySQL, SQLite і FoundationDB. Додатково, переосмислена система кешування дозволяє багатьом загальним операціям IMAP, таким як сортування, тредінг та отримання позначок повідомлень, виконуватися з мінімальним доступом до бази даних.

Покращений пошук та тестування продуктивності

Ще одне помітне покращення – це повністю переписаний пошуковий механізм повного тексту. Тепер він підтримує пошук за фразами, кореневу морфологію та відповідність префіксів, з використанням стиснених індексів для підвищення ефективності. За даними бенчмарків проекту, пошук 250,000 повідомлень займає менше ніж чотири мілісекунди.

Команда Stalwart провела великі тести продуктивності на Postfix 3.11 і Dovecot 2.4, використовуючи ідентичні сервери Azure з восьмома vCPUs AMD EPYC Zen 5, 32 ГБ оперативної пам’яті та локальним NVMe зберіганням.

У цих тестах Stalwart перевершив поєднання Postfix/Dovecot у 35 із 38 порівнянь. Наприклад, він обробляв 5,445 вхідних SMTP повідомлень на секунду в порівнянні з 723 у Postfix. Також Stalwart показав кращу продуктивність у 14 з 15 загальних IMAP операцій, з покращеннями від 1.4 до 19 разів.

Нові функції та зміни в базі даних

Окрім продуктивності, версія 1.0 вводить індексацію вмісту документів. Stalwart може витягувати та шукати текст у файлах PDF, Microsoft Office, OpenDocument, EPUB та RTF, незалежно від того, чи зберігаються вони як вкладення електронної пошти або в його інтегрованому файловому сховищі.

Інші нововведення включають підтримку метаданих JMAP та IMAP, підписів DKIM2 у післяквантовому режимі, комбінуючи ML-DSA-44 та Ed25519, розширені можливості OAuth та OpenID Connect. Випуск також покращує аутентифікацію, конфігурацію зберігання та захист від підробки запитів з боку сервера.

Нарешті, важливою зміною є остаточне оформлення схеми бази даних. Розробники стверджують, що майбутні випуски повинні підтримувати оновлення без порушення, без потреби в міграції бази даних, як у деяких попередніх версіях.

Міграція до версії 1.0

Однак оновлення існуючих установок до версії 1.0 все ще вимагає одноразової міграції, оскільки новий реліз не може безпосередньо відкривати бази даних, створені попередніми версіями.

Для установок, що працюють на Stalwart 0.16.27, новий інструмент stalwart-migrate переносить дані інкрементально, у той час як старий сервер продовжує працювати, мінімізуючи час простою.

Для отримання додаткової інформації відвідайте офіційне оголошення або ознайомтеся з проектом на GitHub.