Швейцарская компания Proton AG, развивающая сервисы Proton Mail и Proton VPN, представила IMAP-библиотеку Gluon, предназначенную для создания собственных IMAP-серверов. Библиотека поддерживает протокол IMAP4rev1 (RFC-3501) и задействована в новой версии сервиса Proton Bridge. При разработке основное внимание уделяется корректности реализации, стабильности, надёжности, удобству для разработчиков и высокой производительности. Код библиотеки написан на языке Go и распространяется под лицензией MIT.
В качестве причины создания новой реализации протокола IMAP упоминается желание получить одновременно надёжное и высокопроизводительное решение, способное работать с большими почтовыми ящиками. По оценке разработчиков Proton Mail существующие открытые IMAP-библиотеки либо испытывали проблемы с сопровождением, либо не масштабировались.
В Gluon также обеспечена корректная работа одновременно с несколькими клиентами, например, когда пользователь одновременно просматривает почту через Web-интерфейс и при помощи отдельного почтового клиента. Сложность организации подобной работы связана с тем, что IMAP-клиенты для идентификации почтовых сообщений обычно используют порядковые номера сообщений в mailbox, но когда один клиент удаляет сообщение, порядковые номера сдвигаются и другой клиент должен учитывать этот сдвиг. При подобной ситуации сервер отправляет клиентам уведомление об изменении, но до подтверждения приёма уведомления сервер должен обеспечить корректную интерпретацию номеров сообщений в передаваемых командах.
Для решения подобной проблемы, а также для организации обработки нескольких параллельных соединений от одного клиента, в Gluon реализован механизм снапшотов. Суть данного механизма в том, что Gluon закрепляет за каждым клиентом свой снапшот почтового ящика (mailbox). В каждом снапшоте отражается связанное с клиентом уникальное представление mailbox, сохраняющее своё состояние и гарантирующее неизменность порядковых номеров, независимо от действий, выполненных другими клиентами.
Gluon отслеживает два состояния почтового ящика - постоянное и сессионное. Постоянное состояние отражает реальное положение сообщений в выбранном почтовом ящике, а сессионное состояние отражает представление каждого клиента о содержимом почтового ящика. Состояние IMAP хранится в СУБД, поддерживающей SQL. Бета-тестирование сервиса Proton Mail Bridge, переведённого на Gluon, показало значительное (1000%) увеличение скорости работы с IMAP.
Комментарии
Каким образом библиотека Gluon от Proton AG улучшает создание IMAP-серверов?
Рейтинг: 4 (4 голосов)
Дата: 06.03.2023 18:01Ой, ну конечно, снапшоты! Как же без них! А вы уверены, что это не очередная техническая "магия", которую кто-то придумал, чтобы скрыть реальные проблемы масштабирования? Где доказательства стабильности и эффективности такой системы? И как насчет производительности — ведь каждое обновление снапшота требует ресурсов. Сомневаюсь, что это универсальное решение.
Рейтинг: 5 (1 голосов)
Дата: 06.03.2023 11:14