Kom i gang

Spam Scanner krever Node.js 18 eller nyere, eller ingenting i det hele tatt med den frittstående binærfilen.

Installer#

Som kommandolinjeverktøy:

Shell
npm install --global spamscanner
spamscanner version

Som bibliotek i et Node.js-prosjekt:

Shell
npm install spamscanner

Som frittstående binærfil for Linux eller macOS, med Node.js og modellen innebygd:

Shell
curl -fsSL https://github.com/spamscanner/spamscanner/releases/latest/download/install.sh | bash

Binærfiler for Linux (x64 og arm64), macOS (Intel og Apple silicon) og Windows er lagt ved hver utgivelse.

Skann en melding#

Lagre en melding som en fil (de fleste e-postprogrammer kaller dette «Lagre som» eller «Vis original») og skann den:

Shell
spamscanner scan message.eml
Text
SPAM  score 16.3 (spam at 5.0, reject at 15.0)  action: reject  language: en
     +6.3  BAYES_999                    Classifier spam probability 99.9%
     +5.0  PHISHING_LOOKALIKE_DOMAIN    "paypa1-secure.top" imitates paypal by swapping characters
     +3.0  DECEPTIVE_LINK               A link shows "https://www.paypal.com/signin" but goes to paypa1-secure.top
     +2.0  FROM_NAME_BRAND              Display name says "paypal" but the message is from paypa1-secure.top

Avslutningskoden er 0 for hamØnsket e-post: det motsatte av spam., 1 for spam og 2 for en feil, så skript kan bruke den direkte. --json skriver ut hele resultatet, og --headers skriver ut meldingen med X-Spam-*-hoder lagt til.

Meldinger kan også komme fra standard inndata:

Shell
cat message.eml | spamscanner scan -

Bruk det fra Node.js#

JavaScript
import SpamScanner from 'spamscanner';
import {readFile} from 'node:fs/promises';

const scanner = new SpamScanner();
const result = await scanner.scan(await readFile('message.eml'));

console.log(result.isSpam, result.score, result.action);
for (const test of result.tests) {
  console.log(test.name, test.score, test.description);
}

CommonJS fungerer også:

JavaScript
const SpamScanner = require('spamscanner');

scan() tar imot den rå meldingen som en Buffer, en streng, en Uint8Array eller en lesbar strøm. En streng er alltid meldingstekst: Spam Scanner leser aldri en fil fordi en streng ser ut som en sti. Bruk scanner.scanFile(path) for filer.

Fortell det om SMTP-økten#

Klientens IP-adresse, det verifiserte vertsnavnet, HELO-navnet og konvolutten gjør resultatet mer nøyaktig: autentisering trenger IP-adressen, og regelen mot forfalskning av eget domene trenger mottakerne.

JavaScript
const result = await scanner.scan(raw, {
  session: {
    remoteAddress: '203.0.113.5',
    resolvedClientHostname: 'mail.example.com',
    helo: 'mail.example.com',
    envelope: {
      mailFrom: {address: 'alice@example.com'},
      rcptTo: [{address: 'bob@example.org'}],
    },
  },
});

Det samme fra kommandolinjen:

Shell
spamscanner scan message.eml --ip 203.0.113.5 --helo mail.example.com \
  --from alice@example.com --to bob@example.org --auth

Slå på flere sjekker#

Ingen av disse er på som standard, fordi hver av dem krever en tjeneste eller en beslutning:

SjekkBibliotekalternativKommandolinje
SPF, DKIM, DMARC, ARCauthentication: true--auth
IP-blokkeringslistednsbl: {ip: ['zen.spamhaus.org']}--dnsbl zen.spamhaus.org
Domeneblokkeringsliste for lenkerdnsbl: {domain: ['dbl.spamhaus.org']}--uribl dbl.spamhaus.org
ClamAVclamav: true eller clamav: {socket}--clamav [socket]
En språkmodellllm: {provider: 'ollama', model: 'qwen3.5:4b'}--llm ollama
Tillatelses- og blokkeringslisterallowlist: [...], denylist: [...]--allowlist, --denylist

Cloudflares filtrerende resolvere (1.1.1.2 for skadevare, 1.1.1.3 for voksent innhold) blir som standard spurt om vertene i lenker. Slå det av med phishing: {cloudflare: false} eller --no-cloudflare. Hva som forlater maskinen

Spamhaus og enkelte andre blokkeringslister svarer ikke på forespørsler sendt via offentlige resolvere som 8.8.8.8 eller 1.1.1.1. Bruk dem med en lokal mellomlagrende resolver, og sjekk bruksvilkårene deres for ditt volum.

Neste steg#

Rediger denne siden på GitHub · Markdown ·