vydání systému filtrace spamu , který poskytuje prostředky pro hodnocení zpráv podle různých kritérií, včetně pravidel, statistických metod a černých seznamů, na jejichž základě se určuje konečná váha zprávy, která se používá k rozhodnutí o potřebě blokování. Rspamd podporuje prakticky všechny funkce realizované ve SpamAssassin a má řadu vlastností, které umožňují filtrovat poštu v průměru desetkrát rychleji než SpamAssassin, a také zajišťují lepší kvalitu filtrace. Kód systému je napsán v jazyce C a pod licencí Apache 2.0.
Rspamd je postaven na základě událostmi řízené architektury a je původně navržen pro použití v vysoce zatížených systémech, což umožňuje zpracovávat stovky zpráv za sekundu. Pravidla pro odhalení známek spamu jsou velmi flexibilní a v nejjednodušších případech mohou obsahovat regulární výrazy, zatímco v složitějších situacích mohou být formulována v jazyce Lua. Rozšíření funkcionality a přidání nových typů kontrol je realizováno prostřednictvím modulů, které mohou být vytvářeny v jazycích C a Lua. Například jsou k dispozici moduly pro kontrolu odesílatele pomocí SPF, potvrzení domény odesílatele přes DKIM a vytváření dotazů na seznamy DNSBL. Pro usnadnění nastavení, vytváření pravidel a sledování statistik je k dispozici administrativní webové rozhraní.
Hlavní novinky:
- Byl proveden přechod na novou schéma číslování vydání. Protože první číslo v čísle verze se nezměnilo už několik let, a skutečným ukazatelem verze je druhé číslo, bylo rozhodnuto přejít z schématu „x.y.z“ na formát „y.z“;
- Pro cyklus zpracování událostí byla nově použita byla zvolena knihovna , zbavená některých omezení libevent a umožňující dosáhnout vyšší výkon. Použití
libev umožnilo zjednodušit kód, zlepšit zpracování signálů a časových limitů, a také unifikovat sledování změn souborů pomocí mechanismu inotify (ne všechny distribuované verze libevent pro podporované platformy mohly pracovat s inotify); - Podpora modulu pro klasifikaci zpráv, který využívá knihovnu hlubokého strojového učení Torch, byla ukončena. Důvodem je zbytečná složitost Torch a vysoká náročnost na údržbu aktuálnosti. Jako náhrada za klasifikaci pomocí metod strojového učení byl navržen zcela přepracovaný modul. , ve kterém je pro zajištění fungování neuronové sítě využita knihovna , zahrnující pouze 4000 řádků kódu v jazyce C. V nové implementaci byly vyřešeny mnohé problémy s vznikem vzájemných blokací během učení;
- Modul nahradil moduly SURBL a Emails, což umožnilo unifikaci zpracování všech kontrol v blacklistu. Možnosti RBL byly rozšířeny o podporu dalších typů, jako jsou selektory, a o prostředky pro zjednodušené rozšiřování existujících pravidel. Pravidla blokování emailů na základě mapovacích seznamů místo DNS RBL již nejsou podporována, místo nich se doporučuje používat multimap se selektory;
- Pro určení typů souborů podle obsahu byla využita nová knihovna Lua Magic, která používá Lua a Hyperscan místo libmagic.
Důvodem pro vytvoření vlastní knihovny je snaha dosáhnout vyšší výkonnosti, zbavit se chyb při zjišťování souborů docx, získat vhodnější API a přidat nové typy heuristiky, které nejsou omezeny striktními pravidly; - Vylepšen modul pro ukládání dat v SÚDB . Byla přidána pole LowCardinality a výrazně optimalizována spotřeba paměti;
- Rozšířeny možnosti modulu , ve kterém byla přidána podpora a přiřazení;
- V modulu Maillist bylo zlepšeno určení seznamů pro rozesílání;
- Ve pracovních postupech byla přidána možnost odesílání heartbeat zpráv do hlavního procesu, potvrzujících funkčnost v normálním režimu. Při absenci takových zpráv po určitou dobu může hlavní proces vynutit ukončení pracovního postupu. Tento režim je ve výchozím nastavení zatím vypnut;
- Byla přidána řada nových skenerů v jazyce Lua. Například byly přidány moduly pro skenování zpráv ve antivirových balících Kaspersky ScanEngine, Trend Micro IWSVA (přes icap) a
F-Secure Internet Gatekeeper (přes icap) a také byly nabídnuty externí skenery pro Razor, oletools a P0F; - Byla přidána možnost měnit zprávy prostřednictvím Lua API. Pro provádění změn v MIME blocích byl navržen modul ;
- Bylo zajištěno oddělené zpracování nastavení stanovených pomocí „Settings-Id:“, například nyní je možné přiřadit pravidla pouze k určitým identifikátorům nastavení;
- Provedena optimalizace výkonu Lua enginu, dekódování base64 a určení jazyka pro text. Byla přidána podpora kešování složitých mapování (maps). Implementována podpora
HTTP keep-alive.
Zdroj: opennet.ru
