Даступная сістэма фільтрацыі спаму Rspamd 2.0

Прадстаўлены рэліз сістэмы фільтрацыі спаму Rspamd 2.0, якая прадстаўляе сродкі для ацэнкі паведамленняў па розных крытэрыях, уключаючы правілы, статыстычныя метады і чорныя спісы, на аснове якіх фармуецца выніковая вага паведамлення, які выкарыстоўваецца для прыняцця рашэння аб неабходнасці блакіроўкі. Rspamd падтрымлівае практычна ўсе магчымасці, рэалізаваныя ў SpamAssassin, і мае шэраг асаблівасцяў, якія дазваляюць фільтраваць пошту ў сярэднім у 10 разоў хутчэй, чым SpamAssassin, а таксама забяспечваць лепшую якасць фільтрацыі. Код сістэмы напісаны на мове Сі і распаўсюджваецца пад ліцэнзіяй Apache 2.0.

Rspamd пабудаваны з выкарыстаннем падзейна-арыентаванай архітэктуры (Event-driven) і першапачаткова разлічаны на ўжыванне ў высоканагружаных сістэмах, дазваляючы апрацоўваць сотні паведамленняў у секунду. Правілы для выяўлення прыкмет спаму адрозніваюцца высокай гнуткасцю і ў найпростым выглядзе могуць утрымоўваць рэгулярныя выразы, а ў больш складаных сітуацыях могуць афармляцца на мове Lua. Пашырэнне функцыянальнасці і даданне новых тыпаў праверак рэалізуецца праз модулі, якія могуць стварацца на мовах Сі і Lua. Напрыклад, даступныя модулі для праверкі адпраўніка з выкарыстаннем SPF, пацверджанні дамена адпраўніка праз DKIM, фармаванні запытаў у спісы DNSBL. Для спрашчэння наладкі, стварэння правіл і адсочвання статыстыкі даецца адміністрацыйны web-інтэрфейс.

Асноўныя навіны:

  • Ажыццёўлены пераход на новую схему нумарацыі выпускаў. Так як першае чысло ў нумары версіі не змянялася ўжо некалькі гадоў, а рэальным індыкатарам версіі выступае другі лік, вырашана замест схемы "xyz" перайсці на фармат "yz";
  • Для цыклу апрацоўкі падзей замест Libevent задзейнічана бібліятэка libev, пазбаўленая ад некаторых абмежаванняў libevent і якая дазваляе дабіцца больш высокай прадукцыйнасці. Выкарыстанне
    libev дало магчымасць спрасціць код, палепшыць апрацоўку сігналаў і таймаўтаў, а таксама ўніфікаваць адсочванне змяненняў файлаў пры дапамозе механізму inotify (не ўсе пастаўляемыя для падтрымліваемых платформ выпускі libevent маглі працаваць з inotify);

  • Спынена падтрымка модуля класіфікацыі паведамленняў, які выкарыстоўвае бібліятэку глыбіннага машыннага навучання Torch. У якасці прычыны называецца залішняя ўскладненасць Torch і вялікая працаёмкасць суправаджэння ў актуальным стане. У якасці замены для класіфікацыі з выкарыстаннем метадаў машыннага навучання прапанаваны поўнасцю перапісаны модуль Нейронная, у якім для забеспячэння працы нейронавай сеткі выкарыстоўваецца бібліятэка можа, Якая ўключае ўсяго 4000 радкоў кода на мове Сі. У новай рэалізацыі вырашаны многія праблемы з узнікненнем узаемных блакіровак падчас навучання;
  • модуль RBL замяніў сабой модулі SURBL і Emails, што дазволіла ўніфікаваць апрацоўку ўсіх праверак па чорных спісах. Магчымасці RBL пашыраны падтрымкай дадатковых тыпаў, такіх як селектары, і сродкамі для спрошчанага пашырэння існуючых правіл. Правілы блакіроўкі email на аснове map-спісаў замест DNS RBL больш не падтрымліваюцца, замест іх рэкамендуецца выкарыстоўваць multimap з селектарамі;
  • Для вызначэння тыпаў файлаў па змесце задзейнічана новая бібліятэка Lua Magic, якая выкарыстоўвае Lua і Hyperscan замест libmagic.
    У якасці прычыны стварэння ўласнай бібліятэкі згадваецца жаданне дабіцца больш высокай прадукцыйнасці, пазбавіцца ад збояў пры выяўленні файлаў docx, атрымаць больш прыдатны API і дадаць новыя віды эўрыстыкі, не абмежаваныя жорсткімі правіламі;

  • Палепшаны модуль для захоўвання дадзеных у СКБД Clickhouse. Дададзеныя палі LowCardinality і істотна аптымізавана спажыванне памяці;
  • Пашыраны магчымасці модуля Multimap, у якім з'явілася падтрымка камбінаваных и залежных супастаўленняў;
  • У модулі Maillist палепшана вызначэнне спісаў рассылання;
  • У працоўных працэсах з'явілася магчымасць адпраўкі ў асноўны працэс heartbeat-паведамленняў, якія пацвярджаюць працу ў штатным рэжыме. Пры адсутнасці падобных паведамленняў на працягу вызначанага часу асноўны працэс можа прымусова завяршыць працоўны працэс. Па змаўчанні гэты рэжым пакуль адключаны;
  • Дададзена серыя новых сканараў на мове Lua. Напрыклад, дададзены модулі для сканавання паведамленняў у антывірусных пакетах Kaspersky ScanEngine, Trend Micro IWSVA (праз icap) і
    F-Secure Internet Gatekeeper (праз icap), а таксама прапанаваны вонкавыя сканары для Razor, oletools і P0F;

  • Дададзена магчымасць змены паведамленняў праз Lua API. Для занясення змен у MIME-блокі прапанаваны модуль lib_mime;
  • Забяспечана паасобная апрацоўка налад, усталяваных праз "Settings-Id:", напрыклад, зараз можна прывязваць правілы толькі да вызначаных ідэнтыфікатараў налад;
  • Праведзены аптымізацыі прадукцыйнасці Lua-рухавічка, дэкадавання base64 і вызначэння мовы для тэксту. Дададзена падтрымка кэшавання складаных супастаўленняў (maps). Рэалізавана падтрымка
    HTTP keep-alive.

Крыніца: opennet.ru

Дадаць каментар