A TypeScript Node.js client for Rspamd.
Note: This package is currently in alpha and under active development. Use with caution in production environments.
pnpm add @dipakparmar/rspamd-client
import { RspamdClient } from '@dipakparmar/rspamd-client';
const client = new RspamdClient({
host: 'localhost',
port: 11333,
});
const rawEmail = fs.readFileSync('email.eml', 'utf8');
async function checkSpam() {
try {
const result = await client.check(rawEmail);
console.log('Check result:', result);
} catch (error) {
console.error('Error:', error);
}
}
checkSpam();
new RspamdClient(options?: Partial<RspamdClientOptions>)
host
(string): The Rspamd server host. Default: 'localhost'port
(number): The Rspamd server port. Default: 11333timeout
(number): Request timeout in milliseconds. Default: 5000https
(boolean): Use HTTPS for connections. Default: falsedebug
(boolean): Enable debug logging. Default: false
Checks a message for spam using Rspamd's /checkv2
endpoint.
Feature | Status |
---|---|
Basic /checkv2 functionality |
✅ Completed |
Error handling and timeouts | ✅ Completed |
Comprehensive testing | 🚧 In Progress |
Support for all worker endpoints | 🚧 In Progress |
Support for controller endpoints | 📅 Planned |
Improved documentation | 📅 Planned |
Performance optimizations | 📅 Planned |
Contributions are welcome! If you'd like to contribute to any of these features or have suggestions for new ones, please open an issue or submit a pull request.
/checkv2
(POST) - Checks message and returns action (Implemented)/ping
(GET) - Returns a pong HTTP reply (could be used for monitoring)
/fuzzyadd
(POST) - Adds message to fuzzy storage/fuzzydel
(POST) - Removes message from fuzzy storage/checkv2
(POST) - Checks message and returns action (same as normal worker)
Various GET endpoints are also available on the controller, including /stat
, /graph
, /history
, /actions
, /maps
, and more. For a full list and details, please refer to the Rspamd documentation.
Contributions, issues, and feature requests are welcome! Feel free to check issues page.
This project is AGPL-3.0 licensed.