- C 50.6%
- C++ 27.6%
- Lua 16.1%
- RobotFramework 1.3%
- CMake 1.2%
- Other 3.1%
Workers kept writing training data to the last-loaded ANN's redis key (set.ann.redis_key) even when a newer, more specific profile was already registered in the ZLIST. If that new profile had no ANN data yet (e.g. controller created a placeholder after a symbols change), load_new_ann silently left set.ann untouched, so vectors kept piling up under the old key while the controller waited for the new key's spam/ham sets to fill — a deadlock visible as repeated "more specific ann is available" log lines without any retrain ever happening. Track the best-known profile in set.training_profile, updated on every process_existing_ann tick whenever sel_elt is picked. ann_push_task_result now routes target_key and the vectors_len script call through (set.training_profile or set.ann).redis_key, so training data lands on the newest profile immediately. set.ann is left alone so inference keeps using the previously loaded ANN until a fresh one is trained. |
||
|---|---|---|
| .claude | ||
| .cursor/rules | ||
| .github | ||
| clang-plugin | ||
| cmake | ||
| conf | ||
| contrib | ||
| debian | ||
| doc | ||
| docker | ||
| freebsd | ||
| interface | ||
| local.d | ||
| lualib | ||
| rpm | ||
| rules | ||
| src | ||
| test | ||
| utils | ||
| .clang-format | ||
| .gitignore | ||
| .luacheckrc | ||
| .overcommit.yml | ||
| .stylelintrc.json | ||
| .tidyallrc | ||
| AUTHORS.md | ||
| blas-config.h.in | ||
| ChangeLog | ||
| CLAUDE.md | ||
| CMakeLists.txt | ||
| config.h.in | ||
| CONTRIBUTING.md | ||
| dist.sh | ||
| eslint.config.mjs | ||
| LICENSE.md | ||
| lua_style.md | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| rspamd.service | ||
| set-version.sh | ||
Introduction
Rspamd is an advanced spam filtering system and email processing framework that allows evaluation of messages by a number of rules including regular expressions, statistical analysis and custom services such as URL black lists. Each message is analysed by Rspamd and given a verdict that might be used by MTA for further processing (e.g. to reject a message, or add a special header indicating spam) along with other information, such as possible DKIM signature or modifications suggested for a message.
Rspamd can act as a Milter allowing direct interaction with popular MTA systems, such as Postfix or Sendmail.
Rspamd is designed to process hundreds of messages per second simultaneously, and provides a number of useful features including a comprehensive Lua API that allows access to messages processing in various aspects as well as asynchronous network API to access external resources, such as DNS, HTTP or even generic TCP/UDP services.
Getting Started
A good starting point to study how to install and configure Rspamd is the quick start guide.
Rspamd is packaged for the major Linux distributions, and is also available via FreeBSD ports, NetBSD pkgsrc and OpenBSD ports.
We advice to use packages provided by Rspamd project if available for your OS instead of packages that might be provided by some Linux distributives, as they are usually out of date and does not provide the desired spam filtering quality nor supported by Rspamd project.
Spam filtering features
Rspamd is shipped with various spam filtering modules and features enabled just out of the box. The full list of built-in modules could be found in the Rspamd documentation.
If that is not enough, Rspamd provides an extensive Lua API to write your own rules and plugins: https://docs.rspamd.com/developers/writing_rules/
License
This project is licensed under the Apache 2.0 License - see the LICENSE.md file for details
Contributing
Please read CONTRIBUTING.md for details on the process for submitting pull requests to us.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in rspamd by you, as defined in the APACHE 2.0 license, shall be licensed as above, without any additional terms or conditions.
Authors
- Vsevolod Stakhov - vstakhov
See also the list of contributors who participated in this project.
References
- Home site: https://rspamd.com
- Development: https://github.com/rspamd/rspamd
- Documentation site: https://docs.rspamd.com
- Documentation site repository: https://github.com/rspamd/docs.rspamd.com
- Multimaps repository: https://github.com/rspamd/maps
