]> git.ipfire.org Git - thirdparty/rspamd.git/commit
[Performance] Optimize url_suspect for high URL volume messages
authorVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 21 Nov 2025 11:31:14 +0000 (11:31 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 21 Nov 2025 11:42:52 +0000 (11:42 +0000)
commitcf92faaa2c2a5af130ab475d2ff4a030a71c68a8
tree165a3a2e48069a8cd959a3b54cf0b4c2c1db20bb
parentb9f84dff495d6100e6af0ba26e4d6042245442ed
[Performance] Optimize url_suspect for high URL volume messages

Performance improvements for messages with many URLs:

1. O(1) TLD lookups: Convert builtin_suspicious list to hash set on init,
   eliminates O(n*m) iteration (500k+ checks for 100k URLs × 5 TLDs)

2. Use rspamd_text for URL checks: get_text(true) returns opaque rspamd_text
   without string copying, use text:find() for RTL detection

3. Use rspamd_ip API: parse_addr() + is_local() for IP checks instead of
   pattern matching

4. Add max_urls limit (10000) for DoS protection

These optimizations significantly reduce memory allocation and CPU usage.
conf/modules.d/url_suspect.conf
src/plugins/lua/url_suspect.lua
test/functional/cases/001_merged/400_url_suspect.robot