Gluon, библиотека IMAP с открытым исходным кодом от Proton Mail.

глюон-imap-библиотека

Gluon стремится восполнить этот пробел и преодолеть ограничения существующих библиотек IMAP с открытым исходным кодом.

швейцарская компания Протон АГ, которая разрабатывает сервисы Proton Mail и Proton VPN, недавно представила библиотеку Gluon IMAP, разработан пдля создания собственных IMAP-серверов. Библиотека примечательна тем, что поддерживает протокол IMAP4rev1 (RFC-3501) и включена в новую версию сервиса Proton Bridge.

Во время разработки основное внимание уделяется правильности реализации, стабильности, надежности, простоте использования для разработчиков и высокой производительности.

О Gluon IMAP

Упоминается, что причина создать новую реализацию протокола IMAP стремление к надежному и высокопроизводительному решению который может работать с большими почтовыми ящиками. По словам разработчиков Proton Mail, существующие библиотеки IMAP с открытым исходным кодом испытывали проблемы с обслуживанием или не масштабировались.

Нашим первым шагом в написании Gluon было создание парсера IMAP на основе синтаксиса, указанного в RFC3501 (новое окно). Мы использовали ANTLR4 (новое окно), популярный конструктор синтаксических анализаторов, чтобы создать синтаксический анализатор, который может анализировать команды и ответы IMAP в соответствии со спецификацией. Это позволило нам сосредоточиться на реализации логики протокола IMAP вместо разбора и проверки ввода.

Gluon также отлично работает с несколькими клиентами. одновременно, например, когда пользователь просматривает почту через веб-интерфейс и одновременно использует отдельный почтовый клиент.

Сложность организации такой работы связана с тем, что IMAP-клиенты обычно используют порядковые номера сообщений в почтовом ящике для идентификации почтовых сообщений, но когда один клиент удаляет сообщение, порядковые номера меняются и другой клиент должен принять это изменение во внимание. счет.

В такой ситуации сервер отправляет клиентам уведомление об изменении, но перед подтверждением уведомления сервер должен убедиться, что номера сообщений в переданных командах интерпретируются правильно.

Электронная почта должна быть надежной, но она также должна быть высокопроизводительной, особенно с учетом того, что размер типичного почтового ящика значительно вырос за последнее десятилетие. Многие реализации IMAP с открытым исходным кодом, как правило, оптимизируются для одного, а не для другого, что приводит к довольно большим ошибкам или компромиссам.

Для решения этой проблемы, а также организовать обработку нескольких параллельных подключений от клиента, Gluon реализует механизм моментальных снимков. Суть этого механизма в том, что Gluon назначает каждому клиенту свой снимок почтового ящика.

Каждый моментальный снимок отражает уникальное представление почтового ящика, связанного с клиентом, которое сохраняет его состояние и гарантирует, что порядковые номера остаются неизменными, независимо от действий, предпринимаемых другими клиентами.

Gluon отслеживает два состояния почтового ящика: постоянное и сеансовое. Постоянное состояние отражает фактическое положение сообщений в выбранном почтовом ящике, а состояние сеанса отражает представление каждого клиента о содержимом почтового ящика.

Чтобы синхронизировать статус за сессию между несколькими подключенными клиентами, Gluon использует систему «респондеров». Это типы, которые инкапсулируют изменение состояния и при выполнении преобразуются в ответы IMAP. 

Когда клиент выполняет действие (например, помечает сообщение как прочитанное), которое может изменить состояние другого клиента, серверная часть создает ответчик для действия и переводит его в затронутое состояние. Затронутое состояние остается неизменным до тех пор, пока ответчик не будет выполнен, после чего он будет обновлен, и клиенту будет отправлен соответствующий ответ IMAP. 

Такой подход позволяет Gluon эффективно управлять состоянием каждого сеанса, обеспечивая согласованность между несколькими клиентами.

Наконец, упоминается, что государство IMAP хранится в СУБД, поддерживающей SQL. Бета-тестирование сервиса Proton Mail Bridge, переведенного на Gluon, показало значительный (1000%) прирост скорости работы с IMAP. Код библиотеки написан на Go и распространяется под лицензией MIT.

Если вы хотите узнать больше об этом, вы можете ознакомиться с деталями По следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.