SpamAssassin client, that lets you check if an email is spam or ham.
npm install spamassassin-client   
SpamAssassin client, that lets you check if an email is spam or ham.
This library aims at being as correct and lightweight as possible, built as an alternative to all other SpamAssassin client libraries which are 10+ years old, unmaintained and buggy.
All functions in this library return Promise objects. TypeScript definitions are also provided.
🇸🇮 Crafted in Ljubljana, Slovenia.
![]() | ![]() |
| Crisp | Yournotify |
_👋 You use spamassassin-client and you want to be listed there? Contact me._
Include spamassassin-client in your package.json dependencies.
Alternatively, you can run npm install spamassassin-client --save.
#### 1. Create a client
``javascript
var SpamAssassinClient = require("spamassassin-client").SpamAssassinClient;
var spamAssassin = new SpamAssassinClient({
host : "127.0.0.1"
});
`
#### 2. Check an email
`javascript`
spamAssassin.check(message)
.then(function(result) {
// (Handle result here)
})
.catch(function(error) {
// (Handle error here)
});
If you need to test this library on your local computer, while using a remote SpamAssassin instance, you can easily open a SSH tunnel to this instance:
`sh`
ssh -L 127.0.0.1:783:[remote_spamd_ip]:783 root@[remote_ssh_hostname]
You will need root permissions to bind to 783 on your local machine, so you might need to sudo.
_👉 Make sure to replace [remote_spamd_ip] and [remote_ssh_hostname] with the IP address SpamAssassin is listening on, and your server hostname._
Those options can be passed when constructing a new SpamAssassinClient instance:
* host: the hostname or IP address of the SpamAssassin server (_defaults to 127.0.0.1_);port
* : the port of the SpamAssassin server (_defaults to 783_);timeout
* : the timeout in seconds of the socket connection to the SpamAssassin server (_defaults to 10_);
Those methods can be called on a SpamAssassinClient instance:
* spamAssassin.check(message): checks an email for spam, returns Promise<{ score, spam }>;spamAssassin.symbols(message)
* : checks an email for spam and get its symbols, returns Promise<{ score, spam, symbols }>;spamAssassin.report(message)
* : checks an email for spam and generate a report, returns Promise<{ score, spam, report }>;spamAssassin.ping()
* : checks for the SpamAssassin connection health, returns Promise<{}>;
Note that all methods also return the code and message properties. Also, it is preferred to pass a Buffer type as the input value for the message parameter, although a string` also works.