Почтовый (многофункциональный) сервер Tegu (Роман Бородин, OSSDEVCONF-2021)
- Докладчик
- Роман Бородин
Лаборатория МБК занимается системной интеграцией на базе свободных и отечественных решений Linux. Мы построили большое количество информационных систем полностью корпоративного уровня (тысячи пользователей) на базе Линукс.
Однако, в процессе работы мы разумеется сталкиваемся с проблемами, для которых приходится искать решение. Одна из наших «болей» как интеграторов как раз и заключается в отсутствии почтового решения корпоративного уровня, способного конкурировать с лучшими импортными образцами.
Содержание
Видео
Презентация
Thesis
Преамбула
Вначале несколько строк о нашей компании. Во-первых, потому, что это наше первое выступление на конференции разработчиков СПО. А во-вторых, это позволит понять как мы пришли к разработке этого продукта.
Лаборатория МБК занимается системной интеграцией на базе свободных и отечественных решений Linux. Мы построили большое количество информационных систем полностью корпоративного уровня (тысячи пользователей) на базе Линукс. Сегодня в разных круг можно активно обсуждать и даже проводить робкие пилот-проекты на тему возможности миграции, а мы как раз те самые люди, которые на практике доказывают, что это а) возможно и б) в этом большой практический смысл. Впрочем, большинство здесь собравшихся разумеется знают это самостоятельно.
Однако, в процессе работы мы разумеется сталкиваемся с проблемами, для которых приходится искать решение. Одна из наших «болей» как интеграторов как раз и заключается в отсутствии почтового решения корпоративного уровня, способного конкурировать с лучшими импортными образцами.
Источники вдохновения
Сложность установки
Философия UNIX учит нас тому, что каждая программа должна выполнять одну единственную функцию, делать это хорошо и интегрироваться с другими программами посредством стандартных протоколов. Электронная почта — одна из первых глобальных служб, которые появились в интернете, она начала свою история в 1971 году. На тот момент ещё не было очевидно, что именно IMAP и SMTP победят и фактически останутся единственными для доставки почты. Как следствие сейчас мы имеет отдельные компоненты, из которых собираются современные свободные почтовые сервера.
Но на практике всё давно не так. Почта, календари, адресные книги, интерфейс-веб — всё это входит в состав одного сервиса, которые требуют пользователи. В своей программе мы постарались побороться с избыточностью числа компонентов, создав монолитный модуль.
Отсутствие должной поддержки служб каталогов
С интеграцией тоже всем привычные, но необоснованные проблемы. С одной стороны мы имеем данность, что серверы не в состоянии работать автономно (standalone) по собственной базе пользователей, с другой — интеграция с каталогами — это танец с бубном. Да, работает, но почему так сложно? И почему доступна интеграция только с одним каталогом? А если их несколько (что чаще всего и бывает на практике). В случае с Tegu вы можете использовать и собственную базу пользователей, для описания которой мы использовали открытый формат JSON, так и с каталогами разного типа. А точнее один сервер может работать с любым количеством источников авторизации в любой комбинации.
Такая архитектура позволила решить ещё один наболевший вопрос — делегирование административных полномочий. В нашем случае мы имеем не одного администратора, наделённого root-ом, а любое количество администраторов каталогов т.к. все настройки производятся именно через каталог.
Недостатки систем хранения
Ещё один исторически сложившийся, прекрасно себя зарекомендовавший, но мешающий жить, фактор — система хранения. Существует два наиболее популярных формата: mbox и maildir. Оба они хороши, тем, что не требуют дополнительного ПО для организации хранения, но на этом достоинства и заканчиваются.
Mbox с его блокировками файлов в принципе не пригоден для организации мультисерверной работы, maildir, осуществляющий доступ на уровне письма, в принципе пригоден, а в частности слишком неэффективен для поиска и массовых операций.
Наш сервер располагает двумя типами систем хранения. При этом один экземпляр Tegu в состоянии работать с несколькими хранилищами разного типа сразу.
Maildir без изменения стандарта модернизирован. Добавленный механизм кеширования позволил добиться кратного прироста производительности.
Второй способ — хранение почтовых сообщений и конфигурации сервера в базе данных PostgreSQL. Этот способ (и практика это доказала) позволяет получить ощутимый прирост производительности на высоконагруженных системах, а главное, выстроить грамотную масштабируемую системы на мультисерверных конфигурациях. Таким образом, мы получили возможность сколько угодно увеличивать мощность нашего сервера, при это обеспечивать его отказоустойчивость.
Отсутствие кластерных решений
В самом начале разработки мы ставили своей задачей создать не сервер рабочих групп типа Exim или Postfix, а сервер масштаба Яндекс. Сервер, в саму основу которого будет заложена возможность быстро и легко масштабироваться. Это нашло своё отражение и в архитектуре. В конфигурации кластера сервер хранит не только почту, но и всю свою конфигурацию в БД PostgreSQL. Это даёт возможность каждой из существующих вычислительных нод работать независимо друг от друга, принимая свою часть нагрузки. Что характерно, что и средства администрирования сервера могут быть задействованы через любую ноду. Внесённые изменения не нужно вручную или автоматически синхронизировать между нодами, они получают конфигурацию из единой базы данных (которая в свою очередь тоже может быть построена по кластерному принципу).
Лицензирование
С точки зрения компонентов исходного кода все редакции сервера Tegu написаны так, что исключены отдельные ветки программирования (бранчи).
Следовательно, изменения, сделанные в любом модуле, автоматически применяются ко всем редакциям сервера. Корневой компонент, доступный под лицензией GPL, лежит в основе коммерческих сборок линейки Tegu Professional / Tegu Advanced / Tegu Enterprise. Таким образом очевидно, что мы относимся к разработке свободной версии точно так же ответственно, как и к разработке коммерческих модулей.
Дорожная карта
Важнейшая задача нашей компании – это непрерывное совершенствование наших продуктов. Это важно как для наших клиентов, применяющих наше ПО в своих системах, так и для сообщества, которое принимает участие в программировании свободно распространяемой редакции почтового сервера.
Вот главные направления развития 2021-го года:
1. Взаимодействие с антивирусным ПО по протоколу Milter (выполнено)
В текущей конфигурации сервер использует антивирусную проверку в режиме прокси-сервера, установленного перед ним. Данный способ не требует усилий по интеграции, но в ряде случае может оказаться неудобным. Например, присутствием различных механизмов для администрирования, отсутствием консолидированной статистики. Мы планируем сделать интеграцию по протоколу Milter, что в числе прочего позволит реализовать многопоточность и в случае необходимости распределить нагрузку. Таким образом, наш сервер станет ещё более отказоустойчивым.
2. Встроенная процедура собственного резервного копирования, восстановления
На самом деле собственная процедура позволит в диалоговом режиме настроить полное и/или инкрементное резервное копирование, восстановление, а также миграцию хранилища с одного сервера на другой, либо с одного типа хранилища на другой. Это обусловлено тем, что вне зависимости от типа хранилища, формат бэкапа является универсальным.
3. Почтовое оповещение пользователей о критических событиях
Мы хотим сделать наш сервер более дружественным и предсказуемым для наших пользователей. Почтовое оповещение – это несколько сценариев, которые оповещают пользователя о состоянии его почты и почтового ящика. Например, приближение объёма к лимитирующей квоте, завершение выполнения рассылок, возможность восстановления из удалённого и т.п.
4. Публикация балансировщика Tiar
Балансировщик Tiar необходим в том случае, если в инфраструктуре пользователя нет балансирующего сетевого оборудования, но при этом Tegu эксплуатируется в мультисерверном (многонодовом) варианте.
Этот сервер будет опубликован под свободной лицензией GPL.
5. Поддержка механизма работы с сертификатами Let’s Encrypt
В настоящий момент системный администратор сервера Tegu должен сам озаботиться приобретением сертификатов для сетевых подключений. Особенную неприятность доставляет ситуация, когда сертификаты по забывчивости оказываются просроченными. Мы хотим автоматизировать создание и применение сертификатов Let’s Encrypt, которыми, при желании, может воспользоваться пользователь.
6. Правила обработки событий почтовых ящиков
В настоящий момент на сервере реализован механизм обработки входящей почты. Вы хорошо с ним знакомы. Однако мы хотим добавить ряд сценариев, которые выполняются не только в момент доставки, но в ряде других случаев. Например, заполненность ящика, удаление сообщения и пр. Нам кажется, что это может оказаться полезным.
7. Динамические папки на стороне сервера
Некоторые почтовые клиенты (Apple Mail, Evoluition) умеют создавать динамические папки, которые по сути являются запомненными фильтрами, которые отображаются в виде папок. Этот инструмент помогает быстро разобраться во всём обилии почты, а потому очень популярен.
Однако, далеко не все почтовые программы умеют создавать такие динамические папки. Наша задача заключается в том, что бы создать такую возможность на стороне сервера. В таком случае использовать эту функцию можно будет на любом клиенте.
Заключение
Мы будем благодарны вам за предложение по улучшению сервера и конечно приглашаем сообщество к совместной работе над сервером.
Примечания и ссылки
Plays:0
Comments:0