После 5 лет разработки Stalwart — сервер электронной почты и совместной работы с открытым исходным кодом, написанный на языке Rust, — достиг версии 1.0, что знаменует его первый стабильный релиз, объявленный как «Самый быстрый почтовый сервер на планете».
Для тех, кто не знаком с этим проектом, это универсальный почтовый сервер, поддерживающий протоколы SMTP, IMAP, POP3 и JMAP. Как сообщалось ранее, проект также расширился до полноценной платформы для совместной работы, добавив поддержку календарей, контактов и обмена файлами через CalDAV, CardDAV и WebDAV.
Одно из основных улучшений в версии 1.0 связано с переработкой нескольких основных парсеров с использованием технологий SIMD и SWAR, что позволяет серверу обрабатывать несколько байтов одновременно, а не анализировать их по отдельности.
Библиотека парсера почты проекта была переписана с нуля; по данным разработчиков, её производительность в три раза превосходит производительность библиотеки 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 с восемью виртуальными процессорами AMD EPYC Zen 5, 32 ГБ оперативной памяти и локальным хранилищем NVME.
В ходе этих тестов Stalwart превзошёл комбинацию Postfix/Dovecot в 35 из 38 сравнений. Например, он обрабатывал 5 445 входящих SMTP-сообщений в секунду по сравнению с 723 у postfix. Он также показал лучшие результаты в 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 по-прежнему требуется однократная миграция, поскольку новая версия не может напрямую открывать базы данных, созданные предыдущими версиями.
Для установок, работающих под управлением Stalwart 0.16.27, новый инструмент stalwart-migrate переносит данные постепенно, пока старый сервер продолжает работать, сводя к минимуму время простоя.
Для получения дополнительной информации см. официальное объявление или посетите репозиторий проекта на GitHub.
Комментарии (0)