Spamfilterbibliotek för Node.js

Shell
npm install spamscanner
JavaScript
import 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() tar emot en Buffer, en sträng, en Uint8Array eller en läsbar ström, så SMTP-strömmen från smtp-server kan skickas rakt in. CommonJS fungerar med require('spamscanner'), och TypeScript-typer ingår.

Med smtp-server#

JavaScript
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();
  },
});

Vad resultatet säger#

Varje resultat har en poäng, en åtgärd (accept, tag eller reject) och de tester som slog till, vart och ett med poäng och en orsak. De detaljerade resultaten innehåller klassificerarens sannolikhet och starkaste ledtrådar, alla fynd om nätfiske och bilagor, autentiseringsresultat och språket.

Lär upp det#

JavaScript
await scanner.learn(rawMessage, 'spam');
scanner.saveModel('./model.json');

const trained = new SpamScanner({classifier: './model.json'});

Mer#

  • Servrarna exporteras också: MilterServer, createHttpServer, createSpamdServer.
  • Språkmodeller: new SpamScanner({llm: {provider: 'ollama', model: 'qwen3.5:4b'}}).
  • Testat på Node.js 18, 20, 22 och 24, med 100 % testtäckning.

API-referens

Redigera den här sidan på GitHub · Markdown ·