Spamfilter-Bibliothek für Node.js
npm install spamscannerimport SpamScanner from 'spamscanner';
const scanner = new SpamScanner();
const result = await scanner.scan(rawMessage);
if (result.isSpam) {
console.log(result.score, result.tests.map(test => test.name));
}scan() nimmt einen Buffer, einen String, ein Uint8Array oder einen lesbaren Stream entgegen, sodass der SMTP-Stream aus smtp-server direkt übergeben werden kann. CommonJS funktioniert mit require('spamscanner'), und TypeScript-Typen sind enthalten.
Mit smtp-server#
import {SMTPServer} from 'smtp-server';
import SpamScanner from 'spamscanner';
const scanner = new SpamScanner({authentication: true});
const server = new SMTPServer({
async onData(stream, session, callback) {
const result = await scanner.scan(stream, {
session: {
remoteAddress: session.remoteAddress,
helo: session.hostNameAppearsAs,
envelope: session.envelope,
},
});
if (result.action === 'reject') {
return callback(Object.assign(new Error('Message rejected as spam'), {responseCode: 451}));
}
callback();
},
});Was das Ergebnis aussagt#
Jedes Ergebnis hat einen Score, eine Aktion (accept, tag oder reject) und die ausgelösten Tests, jeweils mit Punkten und einer Begründung. Die detaillierten Ergebnisse enthalten die Wahrscheinlichkeit und die stärksten Hinweise des Klassifikators, jeden Phishing- und Anhangsbefund, die Authentifizierungsergebnisse und die Sprache.
Anlernen#
await scanner.learn(rawMessage, 'spam');
scanner.saveModel('./model.json');
const trained = new SpamScanner({classifier: './model.json'});Mehr#
- Auch die Server werden exportiert:
MilterServer,createHttpServer,createSpamdServer. - Sprachmodelle:
new SpamScanner({llm: {provider: 'ollama', model: 'qwen3.5:4b'}}). - Getestet unter Node.js 18, 20, 22 und 24, mit 100 % Testabdeckung.