релиз на система за филтриране на спам , която предоставя средства за оценка на съобщенията по различни критерии, включително правила, статистически методи и черни списъци, на базата на които се формира окончателният тегловен резултат на съобщението, използван за вземане на решение относно необходимостта от блокиране. Rspamd поддържа почти всички възможности, реализирани в SpamAssassin, и разполага с редица особенности, позволяващи филтриране на имейлите средно 10 пъти по-бързо от SpamAssassin, а също осигурява и по-добро качество на филтрацията. Кодът на системата е написан на езика C и се разпространява под лицензия Apache 2.0.
Rspamd е построен с използване на събитийно-ориентирана архитектура и първоначално е проектиран за работа в системи с висока натовареност, позволявайки обработка на стотици съобщения в секунда. Правилата за установяване на признаци за спам са с висока гъвкавост и в най-простия си вид могат да съдържат регулярни изрази, докато в по-сложни ситуации могат да бъдат оформени на езика Lua. Разширяване на функционалността и добавяне на нови типове проверки се реализират чрез модули, които може да бъдат създавани на езиците C и Lua. Например, достъпни са модули за проверка на подателя с използване на SPF, потвърждаване на домейна на подателя чрез DKIM, генериране на заявки в списъци DNSBL. За улесняване на настройките, създаване на правила и проследяване на статистиката се предоставя административен уеб интерфейс.
Основни нововъведения:
- Извършен е преход на нова схема за номериране на версиите. Тъй като първото число в номера на версията не е променяно от години, а реален индикатор за версията е второто число, решено е вместо схема „x.y.z“ да се премине на формат „y.z“;
- За цикъла на обработка на събития вместо е използвана библиотеката , премахната от някои ограничения на libevent и позволяваща постигане на по-висока производителност. Използването на
libev предостави възможност за опростяване на кода, подобряване на обработката на сигнали и таймаути, както и унифициране на проследяването на промените на файловете с помощта на механизма inotify (не всички версии на libevent, предоставяни за поддържаните платформи, можеха да работят с inotify); - Подкрепата за модула за класификация на съобщения, използващ библиотеката за дълбоко машинно обучение Torch, е преустановена. Причината за това е излишната сложност на Torch и голямото натоварване за поддържане в актуално състояние. За замяна, за класификация с използване на методи на машинно обучение е предложен напълно преработен модул. , в който за осигуряване на работа на неуралната мрежа се използва библиотеката , включваща само 4000 линии код на езика C. В новото реализиране са решени много проблеми с взаимните блокировки по време на обучение;
- Модулът замени модулите SURBL и Emails, което позволи унифициране на обработката на всички проверки по черните списъци. Възможностите на RBL са разширени с поддръжка на допълнителни типове, като селектори, и средства за опростено разширяване на съществуващите правила. Правилата за блокиране на имейли на базата на map-списъци вместо DNS RBL вече не се поддържат, вместо тях се препоръчва използването на multimap със селектори;
- За определяне на типовете файлове по съдържание е използвана нова библиотека Lua Magic, която използва Lua и Hyperscan вместо libmagic.
Причината за създаването на собствена библиотека е желанието за постигане на по-висока производителност, избавяне от сривове при идентифициране на файлове docx, получаване на по-подходящ API и добавяне на нови видове хедоника, не ограничени от строги правила; - Подобрен е модулът за съхранение на данни в СУБД . Добавени са полета LowCardinality и значително е оптимизирана консумацията на памет;
- Разширени са възможностите на модула , в който е добавена поддръжка на и сопоставления;
- В модула Maillist е подобрено определянето на списъците за разпространение;
- В работните процеси е предоставена възможност за изпращане на heartbeat-съобщения до основния процес, потвърждаващи работата в нормален режим. При отсъствие на подобни съобщения за определено време основният процес може принудително да прекрати работния процес. По подразбиране този режим все още е изключен;
- Добавена е серия нови скенери на езика Lua. Например, добавени са модули за сканиране на съобщения в антивирусните пакети Kaspersky ScanEngine, Trend Micro IWSVA (чрез icap) и
F-Secure Internet Gatekeeper (чрез icap), както и предложени са външни скенери за Razor, oletools и P0F; - Добавена е възможността за промяна на съобщения чрез Lua API. За внесение на промени в MIME-блоковете е предложен модул ;
- Осигурена е отделна обработка на настройките, зададени чрез „Settings-Id:“, например, вече е възможно да се свързват правила само с определени идентификатори на настройки;
- Извършени са оптимизации на производителността на Lua движка, декодиране на base64 и определяне на езика за текст. Добавена е поддръжка за кеширане на сложни сопоставяния (maps). Реализирана е поддръжка
HTTP keep-alive.
Източник: opennet.ru
