Представлен первый публичный релиз проекта spmfilter в рамках которого ведется разработка универсального фреймворка для создания высокопроизводительных почтовых фильтров, применимых для решения широкого спектра задач. Spmfilter состоит из базовой части и набора подключаемых плагинов, непосредственно обрабатывающих поступающие от почтового сервера сообщения.
Плагины могут принимать решение о блокировании доставки, изменять содержимое сообщений и привязанных к ним мета-данным, досрочно прерывать цепочку проверки (например, когда найден вирус нет смысла проверять сообщение другими плагинами). Код spmfilter написан на языке Си и распространяется под лицензией LGPLv3, для сборки используется Cmake. Готовые бинарные пакеты собраны для CentOS, RedHat Enterprise Linux и Fedora.
Особенности spmfilter:
- Встроенный SMTP-движок, позволяющий использовать spmfilter в сочетании с любым почтовым сервером;
- Все проверки вынесены на плечи плагинов, каждый из которых функционирует независимо. Из доступных плагинов можно отметить:
- smtpbcc - отправляет копию каждого входящего или исходящего сообщения на заданный smtp-хост;
- diskarchive - архивирует все сообщения на локальном диске;
- clamav - осуществляет проверку сообщения в ClamAV на предмет наличия вирусов;
- spamassassin - интегрирует поддержку SpamAssassin для выявления спама.
- Средства для слежения за работой плагинов: управляющий процесс следит за состоянием плагинов, которые запущены как серверные процессы, и в случае сбоя повторно запускает плагин;
- Для разработчиков плагинов доступно готовое API для парсинга заголовков и различных видов сообщений с учетом MIME-типа. Также API поддерживает и создание новых сообщений с заданным MIME-типом, например, для отправки уведомлений;
- Встроенный единый интерфейс для обращения к внешним базам данных. При создании плагинов нет необходимости заботиться о поддержании соединения к внешней базе, управляющий процесс поддерживает пулинг соединений, переключение на запасной сервер в случае сбоя и балансировку нагрузки. Из баз поддерживаются PostgreSQL, MySQL, SQLite, BerkeleyDB и LDAP;
- Код написан на языке Си и обеспечивает более высокую производительность, по сравнению с аналогами на скриптовых языках (например, amavisd-new);
- Надежность: крах одного плагина не повлияет на доставку почты, MTA будет возвращен статус 4xx, что приведет к тому, что сообщение будет отложено в очередь и попытка его проверки будет повторена через некоторое время;
- Поддержка IPv6 и TLS.
|