pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/mail/rspamd
Module Name: pkgsrc
Committed By: wiz
Date: Sun Nov 2 21:17:43 UTC 2025
Modified Files:
pkgsrc/mail/rspamd: Makefile PLIST cfgfiles.mk distinfo
pkgsrc/mail/rspamd/patches: patch-src_plugins_lua_dmarc.lua
Added Files:
pkgsrc/mail/rspamd/patches: patch-src_lua_lua__util.c
Log Message:
rspamd: update to 3.13.2.
3.13.2
What's Changed
[Feature] Add user/domain context support for LLM-based classification by @vstakhov in #5647
Implement Metadefender hash lookup module by @vstakhov in #5656
Add vault kv version 2 support by @vstakhov in #5654
Fix duplicate symbol in once_received plugin by @vstakhov in #5658
[Fix] Enforce server-controlled HTTP map refresh intervals by @vstakhov in #5660
[Fix] Propagate unused Redis Sentinel options by @fatalbanana in #5597
Fix rspamd dkim key loading for ed25519 by @vstakhov in #5664
Fix dkim relaxed bodyhash calculation for spaces by @vstakhov in #5662
Feat: Added rua address exclusion in dmarc.lua by @croessner in #5653
[Feature] Add separate encryption keys for read/write operations in fuzzy_check by @vstakhov in #5665
3.13.1
Added
Archive module: Full support for encrypted ZIP archives, including both ZipCrypto and AES encryption; both reading and writing of AES-encrypted ZIP archives is supported with updated Lua bindings
using libarchive for flexible compatibility with all standard ZIP encryption schemes
Encrypted maps: Support for encrypted maps to enable new map distribution scenarios
Redis TLS: Configurable TLS connections in Redis backend for improved compatibility in secure environments
Improved
MIME encoding refactoring: Major overhauls and multiple fixes for MIME encoding logic, including improved handling and decoding of UTF-8 in MIME headers, resulting in more robust email processing
and better compatibility
Learning system: Numerous fixes to learn checks and autolearn flag handling, prevention of duplicate message learning, and extended multiclass learning test coverage
Map helpers alignment: Map helpers now enforced to be aligned to 64 bytes to prevent unaligned memory access errors on certain platforms
CLI enhancements: Enhanced secretbox CLI and additional security test coverage
Platform compatibility: Improved compatibility with Lua versions above 5.1 and better support for 32-bit platforms
Fixed
Critical fixes: Fixed bug when converting zero-length strings to numbers
XML parsing: Fixed XML prolog detection in lua_magic module
Build issues: Fixed build issues on 32-bit platforms
Empty input handling: Addressed issues with empty input handling in lua_magic
Test stability: Improved stability of automated testing with multiple miscellaneous test fixes
Compatibility: Minor compatibility improvements and bugfixes (buffer allocation, missing cmath include, etc.)
This release introduces archive module extensibility with full encrypted archive support including AES, new map distribution capabilities, secure integration options with Redis TLS, robust email and
message processing improvements, and bugfixes for broader platform compatibility. This is recommended as a major stability and feature update.
3.13.0
Highlights & Major Features Since 3.12.1
1. Multiclass Bayes Classification ([#5547](#5547))
Bayesian classifiers now support multi-class differentiation—labels like spam, ham, transactional, newsletters, phishing, and more (2-20 classes supported).
Efficient: all classes for a message handled in a single Redis call.
Backward compatible with old config (is_spam); new config enables named classes and labels.
Autolearn and Lua API support multiclass workflows.
Fully class-aware Redis caching.
Examples:
rspamc learn_class:transactional receipt.eml or rspamc learn_class:newsletter newsletter.eml
Lua API: task:get_multiclass_result() gives class probabilities and confidence.
2. Neural Module Overhaul ([#5579](#5579))
Complete rework into a provider-based architecture: combines symbols, LLM embeddings (OpenAI, etc.), and planned providers (Bayes/FastText, in the future).
Pluggable fusion—multiple feature types can be combined for richer, more accurate classification.
Trained normalization (unit/zscore/none), used consistently at training/inference.
Redis-backed caching for LLM embeddings to control cost/latency.
Configurable via providers, versioned for safe upgrades, fully backwards compatible.
3. Multimap Selectors & Regex Enhancements ([#5615](#5615))
Powerful, SA-style “selector” rules in multimap module for regex filtering on message fields.
Dedicated selector field, integrated with Hyperscan and regex cache.
Example: selector FROM_CORP from:domain =~ /corp\.example$/i
4. MIME & HTML Feature Extraction ([#5619](#5619), [#5608](#5608))
MIME parser detects part types automatically.
HTML parser project extracts more features for downstream modules.
5. HTTP, DNS, Upstream Improvements ([#5614](#5614), [#5603](#5603), [#5601](#5601))
Flexible HTTP timeout config and handling.
Upstream reliability: probe mode, less need for forced revive.
DNS nameserver resolution moved to getaddrinfo.
6. Modernization & Maintenance ([#5592](#5592), [#5598](#5598), [#5580](#5580), others)
Standardized on C++20; builds, test, and CI improvements (ARM support, modern fallback maps).
Regular code cleaning, bugfixes, and RPM tweaks.
7. WebUI & UX ([#5606](#5606), [#5607](#5607))
E2E scan test flows in WebUI.
Bootstrap upgrade, Bayes class management from the web interface.
8. GPT & LLM Integrations ([#5612](#5612), [#5572](#5572))
Improved handling of GPT model parameters and prompts.
Initial support for OpenAI GPT-5 and other models.
Notable Bugfixes & Maintenance
DCC plugin rewritten ([#5602](#5602)), optimized.
DKIM relaxed body canonicalization ([#5593](#5593)), multimap, WebUI and configuration reliability increased.
Numerous minor bugfixes, build and CI improvements.
Projects & Modules Affected
Core: Multiclass Bayes, Neural/LLM fusion
Filtering: Multimap selectors, regex & Hyperscan
Protocols: HTTP, DNS
Web: WebUI, Bootstrap
Plugins: DCC, DKIM, GPT, Neural
To generate a diff of this commit:
cvs rdiff -u -r1.127 -r1.128 pkgsrc/mail/rspamd/Makefile
cvs rdiff -u -r1.36 -r1.37 pkgsrc/mail/rspamd/PLIST
cvs rdiff -u -r1.15 -r1.16 pkgsrc/mail/rspamd/cfgfiles.mk
cvs rdiff -u -r1.67 -r1.68 pkgsrc/mail/rspamd/distinfo
cvs rdiff -u -r0 -r1.4 pkgsrc/mail/rspamd/patches/patch-src_lua_lua__util.c
cvs rdiff -u -r1.1 -r1.2 \
pkgsrc/mail/rspamd/patches/patch-src_plugins_lua_dmarc.lua
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/mail/rspamd/Makefile
diff -u pkgsrc/mail/rspamd/Makefile:1.127 pkgsrc/mail/rspamd/Makefile:1.128
--- pkgsrc/mail/rspamd/Makefile:1.127 Thu Oct 23 20:38:12 2025
+++ pkgsrc/mail/rspamd/Makefile Sun Nov 2 21:17:43 2025
@@ -1,9 +1,8 @@
-# $NetBSD: Makefile,v 1.127 2025/10/23 20:38:12 wiz Exp $
+# $NetBSD: Makefile,v 1.128 2025/11/02 21:17:43 wiz Exp $
#
# When updating this, run 'make cfgfiles'.
-DISTNAME= rspamd-3.12.1
-PKGREVISION= 1
+DISTNAME= rspamd-3.13.2
CATEGORIES= mail
MASTER_SITES= ${MASTER_SITE_GITHUB:=rspamd/}
Index: pkgsrc/mail/rspamd/PLIST
diff -u pkgsrc/mail/rspamd/PLIST:1.36 pkgsrc/mail/rspamd/PLIST:1.37
--- pkgsrc/mail/rspamd/PLIST:1.36 Sun Jun 15 16:02:01 2025
+++ pkgsrc/mail/rspamd/PLIST Sun Nov 2 21:17:43 2025
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.36 2025/06/15 16:02:01 taca Exp $
+@comment $NetBSD: PLIST,v 1.37 2025/11/02 21:17:43 wiz Exp $
bin/rspamadm
bin/rspamadm-${PKGVERSION}
bin/rspamc
@@ -15,11 +15,11 @@ man/man1/rspamadm.1
man/man1/rspamc.1
man/man8/rspamd.8
share/examples/rspamd/actions.conf
-share/examples/rspamd/cgp.inc
share/examples/rspamd/common.conf
share/examples/rspamd/composites.conf
share/examples/rspamd/groups.conf
share/examples/rspamd/lang_detection.inc
+share/examples/rspamd/local.d/antivirus.conf.example
share/examples/rspamd/local.d/module.conf.example
share/examples/rspamd/logging.inc
share/examples/rspamd/lua.local.d/module.lua.example
@@ -160,6 +160,8 @@ share/rspamd/lualib/ansicolors.lua
share/rspamd/lualib/argparse.lua
share/rspamd/lualib/fun.lua
share/rspamd/lualib/global_functions.lua
+share/rspamd/lualib/llm_common.lua
+share/rspamd/lualib/llm_context.lua
share/rspamd/lualib/lpegre.lua
share/rspamd/lualib/lua_auth_results.lua
share/rspamd/lualib/lua_aws.lua
@@ -173,6 +175,7 @@ share/rspamd/lualib/lua_content/ical.lua
share/rspamd/lualib/lua_content/init.lua
share/rspamd/lualib/lua_content/pdf.lua
share/rspamd/lualib/lua_content/vcard.lua
+share/rspamd/lualib/lua_cta.lua
share/rspamd/lualib/lua_dkim_tools.lua
share/rspamd/lualib/lua_ffi/common.lua
share/rspamd/lualib/lua_ffi/dkim.lua
@@ -201,6 +204,7 @@ share/rspamd/lualib/lua_scanners/icap.lu
share/rspamd/lualib/lua_scanners/init.lua
share/rspamd/lualib/lua_scanners/kaspersky_av.lua
share/rspamd/lualib/lua_scanners/kaspersky_se.lua
+share/rspamd/lualib/lua_scanners/metadefender.lua
share/rspamd/lualib/lua_scanners/oletools.lua
share/rspamd/lualib/lua_scanners/p0f.lua
share/rspamd/lualib/lua_scanners/pyzor.lua
@@ -225,6 +229,8 @@ share/rspamd/lualib/lua_verdict.lua
share/rspamd/lualib/lupa.lua
share/rspamd/lualib/plugins/dmarc.lua
share/rspamd/lualib/plugins/neural.lua
+share/rspamd/lualib/plugins/neural/providers/llm.lua
+share/rspamd/lualib/plugins/neural/providers/symbols.lua
share/rspamd/lualib/plugins/ratelimit.lua
share/rspamd/lualib/plugins/rbl.lua
share/rspamd/lualib/plugins_stats.lua
Index: pkgsrc/mail/rspamd/cfgfiles.mk
diff -u pkgsrc/mail/rspamd/cfgfiles.mk:1.15 pkgsrc/mail/rspamd/cfgfiles.mk:1.16
--- pkgsrc/mail/rspamd/cfgfiles.mk:1.15 Tue Jul 1 14:54:25 2025
+++ pkgsrc/mail/rspamd/cfgfiles.mk Sun Nov 2 21:17:43 2025
@@ -1,4 +1,3 @@
-# $NetBSD: cfgfiles.mk,v 1.15 2025/07/01 14:54:25 schmonz Exp $
+# $NetBSD: cfgfiles.mk,v 1.16 2025/11/02 21:17:43 wiz Exp $
# Do not edit, regenerate using 'make cfgfiles'
-CFGFILES= actions.conf cgp.inc common.conf composites.conf groups.conf lang_detection.inc local.d/module.conf.example logging.inc lua.local.d/module.lua.example maps.d/dmarc_whitelist.inc
maps.d/exe_clickbait.inc maps.d/maillist.inc maps.d/mid.inc maps.d/mime_types.inc maps.d/redirectors.inc maps.d/spf_dkim_whitelist.inc maps.d/surbl-whitelist.inc metrics.conf modules.conf
modules.d/antivirus.conf modules.d/arc.conf modules.d/asn.conf modules.d/aws_s3.conf modules.d/bayes_expiry.conf modules.d/bimi.conf modules.d/chartable.conf modules.d/clickhouse.conf
modules.d/contextal.conf modules.d/dcc.conf modules.d/dkim_signing.conf modules.d/dkim.conf modules.d/dmarc.conf modules.d/elastic.conf modules.d/emails.conf modules.d/external_relay.conf
modules.d/external_services.conf modules.d/force_actions.conf modules.d/forged_recipients.conf modules.d/fuzzy_check.conf modules.d/gpt.conf modules.d/greylist.conf modules.d/hfilter.conf
modules.d/history_redis.conf modules.d/http_headers.conf modu
les.d/known_senders.conf modules.d/maillist.conf modules.d/metadata_exporter.conf modules.d/metric_exporter.conf modules.d/mid.conf modules.d/milter_headers.conf modules.d/mime_types.conf
modules.d/multimap.conf modules.d/mx_check.conf modules.d/neural.conf modules.d/once_received.conf modules.d/p0f.conf modules.d/phishing.conf modules.d/ratelimit.conf modules.d/rbl.conf
modules.d/redis.conf modules.d/regexp.conf modules.d/replies.conf modules.d/reputation.conf modules.d/rspamd_update.conf modules.d/spamassassin.conf modules.d/spamtrap.conf modules.d/spf.conf
modules.d/surbl.conf modules.d/trie.conf modules.d/url_redirector.conf modules.d/whitelist.conf modules.local.d/module.conf.example options.inc override.d/module.conf.example rspamd.conf
scores.d/content_group.conf scores.d/fuzzy_group.conf scores.d/headers_group.conf scores.d/hfilter_group.conf scores.d/mime_types_group.conf scores.d/mua_group.conf scores.d/phishing_group.conf
scores.d/policies_group.conf scores.d/rbl_group.co
nf scores.d/statistics_group.conf scores.d/subject_group.conf scores.d/surbl_group.conf scores.d/whitelist_group.conf settings.conf statistic.conf worker-controller.inc worker-fuzzy.inc
worker-normal.inc worker-proxy.inc
-
+CFGFILES= actions.conf common.conf composites.conf groups.conf lang_detection.inc local.d/antivirus.conf.example local.d/module.conf.example logging.inc lua.local.d/module.lua.example
maps.d/dmarc_whitelist.inc maps.d/exe_clickbait.inc maps.d/maillist.inc maps.d/mid.inc maps.d/mime_types.inc maps.d/redirectors.inc maps.d/spf_dkim_whitelist.inc maps.d/surbl-whitelist.inc
metrics.conf modules.conf modules.d/antivirus.conf modules.d/arc.conf modules.d/asn.conf modules.d/aws_s3.conf modules.d/bayes_expiry.conf modules.d/bimi.conf modules.d/chartable.conf
modules.d/clickhouse.conf modules.d/contextal.conf modules.d/dcc.conf modules.d/dkim.conf modules.d/dkim_signing.conf modules.d/dmarc.conf modules.d/elastic.conf modules.d/emails.conf
modules.d/external_relay.conf modules.d/external_services.conf modules.d/force_actions.conf modules.d/forged_recipients.conf modules.d/fuzzy_check.conf modules.d/gpt.conf modules.d/greylist.conf
modules.d/hfilter.conf modules.d/history_redis.conf modules.d
/http_headers.conf modules.d/known_senders.conf modules.d/maillist.conf modules.d/metadata_exporter.conf modules.d/metric_exporter.conf modules.d/mid.conf modules.d/milter_headers.conf
modules.d/mime_types.conf modules.d/multimap.conf modules.d/mx_check.conf modules.d/neural.conf modules.d/once_received.conf modules.d/p0f.conf modules.d/phishing.conf modules.d/ratelimit.conf
modules.d/rbl.conf modules.d/redis.conf modules.d/regexp.conf modules.d/replies.conf modules.d/reputation.conf modules.d/rspamd_update.conf modules.d/spamassassin.conf modules.d/spamtrap.conf
modules.d/spf.conf modules.d/surbl.conf modules.d/trie.conf modules.d/url_redirector.conf modules.d/whitelist.conf modules.local.d/module.conf.example options.inc override.d/module.conf.example
rspamd.conf scores.d/content_group.conf scores.d/fuzzy_group.conf scores.d/headers_group.conf scores.d/hfilter_group.conf scores.d/mime_types_group.conf scores.d/mua_group.conf
scores.d/phishing_group.conf scores.d/policies_group.con
f scores.d/rbl_group.conf scores.d/statistics_group.conf scores.d/subject_group.conf scores.d/surbl_group.conf scores.d/whitelist_group.conf settings.conf statistic.conf worker-controller.inc
worker-fuzzy.inc worker-normal.inc worker-proxy.inc
Index: pkgsrc/mail/rspamd/distinfo
diff -u pkgsrc/mail/rspamd/distinfo:1.67 pkgsrc/mail/rspamd/distinfo:1.68
--- pkgsrc/mail/rspamd/distinfo:1.67 Tue Jul 1 14:54:25 2025
+++ pkgsrc/mail/rspamd/distinfo Sun Nov 2 21:17:43 2025
@@ -1,13 +1,14 @@
-$NetBSD: distinfo,v 1.67 2025/07/01 14:54:25 schmonz Exp $
+$NetBSD: distinfo,v 1.68 2025/11/02 21:17:43 wiz Exp $
-BLAKE2s (rspamd-3.12.1.tar.gz) = b0d5c18c5e2b400088950e7828c849bebf1089fa29c15077cde48adfd1a6d43e
-SHA512 (rspamd-3.12.1.tar.gz) = 5e049f6aa872f9ded9ee7f580222edb83260a3a8dc14b74a0f95b88796d36690ac5e9b33b143560253111f79cc8cd5231fd2478661d8cfe92d75874cc472cf6c
-Size (rspamd-3.12.1.tar.gz) = 6482214 bytes
+BLAKE2s (rspamd-3.13.2.tar.gz) = e1ee82597db1781c24b0cc986f42586db7072f969511ad63144c0a33d7875cee
+SHA512 (rspamd-3.13.2.tar.gz) = ff8d9c59f6d0caabf563e2c07bff5adf8cb82dd0988d595900e0206a0315433c69ee425c50d4b5073c3d14f16615f11d7776986fe77b41daed7801e7522244ba
+Size (rspamd-3.13.2.tar.gz) = 6634719 bytes
SHA1 (patch-CMakeLists.txt) = 25a1264b573d5a1f7ff9a1ac7b8453c5d9cb0a06
SHA1 (patch-cmake_Toolset.cmake) = fbc4027fedb4261ce913701ebbb32d8395bc7783
SHA1 (patch-contrib_fpconv_fpconv.c) = b1ec2b07570674458e69020ccbf25f0374d894f6
SHA1 (patch-lualib_rspamadm_dmarc__report.lua) = 93ccb04512dd84ea83de44c394571ef2bebe6bd2
SHA1 (patch-src_libserver_symcache_symcache__impl.cxx) = 8a5c69ab343409427619a9cbc0dc080d548b9c53
SHA1 (patch-src_libstat_backends_redis__backend.cxx) = 4c60287a574066a841c76081cd88512a57f0b27f
-SHA1 (patch-src_plugins_lua_dmarc.lua) = 61b36989b16ad8fea25bafcfd96cd83f57a44bd3
+SHA1 (patch-src_lua_lua__util.c) = 97c68cd5e981afc290b3e1d624b086fb87cd7334
+SHA1 (patch-src_plugins_lua_dmarc.lua) = 972b78415e11bde2f8b224632291ba299d02656c
SHA1 (patch-src_rspamd.c) = 1903994d5970af57de9c5d522df3dd12576c8418
Index: pkgsrc/mail/rspamd/patches/patch-src_plugins_lua_dmarc.lua
diff -u pkgsrc/mail/rspamd/patches/patch-src_plugins_lua_dmarc.lua:1.1 pkgsrc/mail/rspamd/patches/patch-src_plugins_lua_dmarc.lua:1.2
--- pkgsrc/mail/rspamd/patches/patch-src_plugins_lua_dmarc.lua:1.1 Thu May 16 15:22:14 2024
+++ pkgsrc/mail/rspamd/patches/patch-src_plugins_lua_dmarc.lua Sun Nov 2 21:17:43 2025
@@ -1,18 +1,18 @@
-$NetBSD: patch-src_plugins_lua_dmarc.lua,v 1.1 2024/05/16 15:22:14 taca Exp $
+$NetBSD: patch-src_plugins_lua_dmarc.lua,v 1.2 2025/11/02 21:17:43 wiz Exp $
os.date() require integer as second argument but get_date() returns
float on NetBSD. So, convert return value of get_date() to integer.
This fix is provided from Yoshitaka Tokugawa <toku at tokugawa.org>.
---- src/plugins/lua/dmarc.lua.orig 2024-02-26 09:36:56.000000000 +0000
+--- src/plugins/lua/dmarc.lua.orig 2025-10-05 18:04:57.000000000 +0000
+++ src/plugins/lua/dmarc.lua
-@@ -310,7 +310,7 @@ local function dmarc_validate_policy(tas
+@@ -323,7 +323,7 @@ local function dmarc_validate_policy(tas
-- Prepare and send redis report element
local period = os.date('%Y%m%d',
-- task:get_date({ format = 'connect', gmt = false }))
-+ math.floor(task:get_date({ format = 'connect', gmt = false })))
+- task:get_date({ format = 'connect', gmt = false }))
++ math.floor(task:get_date({ format = 'connect', gmt = false })))
-- Dmarc domain key must include dmarc domain, rua and period
local dmarc_domain_key = table.concat(
Added files:
Index: pkgsrc/mail/rspamd/patches/patch-src_lua_lua__util.c
diff -u /dev/null pkgsrc/mail/rspamd/patches/patch-src_lua_lua__util.c:1.4
--- /dev/null Sun Nov 2 21:17:43 2025
+++ pkgsrc/mail/rspamd/patches/patch-src_lua_lua__util.c Sun Nov 2 21:17:43 2025
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_lua_lua__util.c,v 1.4 2025/11/02 21:17:43 wiz Exp $
+
+NetBSD's kinfo_proc is not the same as the other *BSDs.
+https://github.com/rspamd/rspamd/issues/5723
+
+--- src/lua/lua_util.c.orig 2025-10-05 18:04:57.000000000 +0000
++++ src/lua/lua_util.c
+@@ -2532,7 +2532,7 @@ lua_util_get_memory_usage(lua_State *L)
+ lua_pushinteger(L, info.virtual_size);
+ lua_settable(L, -3);
+ }
+-#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
++#elif defined(__FreeBSD__) || defined(__OpenBSD__)
+ struct kinfo_proc kp;
+ size_t len = sizeof(kp);
+ int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid()};
Home |
Main Index |
Thread Index |
Old Index