Kommandolinje

Text
spamscanner <command> [options]
KommandoHvad den gør
scan [file|-]Scan en besked fra en fil eller standardinput
filter -f <sender> -- <recipients...>Postfix-indholdsfilter: scan standardinput, tilføj headere, send den videre
milterMilter til Postfix og Sendmail, port 7831
httpHTTP API, port 7832
serverAlmindelig TCP-server, port 7830
spamdSpamAssassin-kompatibel spamd-server, port 783
trainTræn en model fra mbox-filer, Maildirs, mapper eller datasæt
evalMål en model på mærket post
learn spam|ham [file|-] --model <file>Lær en model én besked
llm-testTjek indstillingerne for sprogmodellen med tre eksempelbeskeder
modelsVis anbefalede åbne modeller
version, help

scan#

Shell
spamscanner scan message.eml
spamscanner scan - < message.eml
spamscanner scan message.eml --json
spamscanner scan message.eml --headers > tagged.eml
spamscanner scan message.eml --subject-tag "[SPAM]" > tagged.eml
IndstillingBetydning
--jsonUdskriv hele resultatet som JSON
--headersUdskriv beskeden med X-Spam-*-headere tilføjet
--subject-tag <tag>Sæt også et præfiks foran emnet på spam
--verboseVis alle test og klassifikatorens stærkeste spor
--threshold <n>Score, hvor post er spam (standard 5)
--reject-threshold <n>Score, hvor post afvises (standard 15)
--model <file>En modelfil i stedet for den medfølgende
--no-classifierBrug ikke klassifikatoren
--config <file>En JSON-fil med biblioteksindstillinger
--allow-language <codes>Accepterede sprog, for eksempel en,de,fr

Afslutningskoder: 0 hamØnsket post: det modsatte af spam., 1 spam, 2 fejl.

SMTP-session#

IndstillingBetydning
--ip <address>IP-adressen på den klient, der sendte beskeden
--hostname <name>Klientens verificerede reverse DNS-navn
--helo <name>Det navn, den angav i HELO eller EHLO
--from <address>Afsender i konvolutten (MAIL FROM)
--to <address>Modtager i konvolutten; gentag for flere

Tjek#

IndstillingBetydning
--authTjek SPF, DKIM, DMARC og ARC (kræver --ip)
--dnsbl <zone>IP-blokeringsliste, for eksempel zen.spamhaus.org; kan gentages
--uribl <zone>Domæneblokeringsliste for links, for eksempel dbl.spamhaus.org; kan gentages
--dns-server <ip>Navneserver til DNS-tjek; kan gentages
--no-cloudflareSpørg ikke Cloudflares filtrerende resolvere om links
--clamav [socket]Scan vedhæftede filer med clamd, på dens standardsocket eller den angivne
--allowlist <value>Acceptér altid denne IP-adresse, dette domæne eller denne adresse; kan gentages
--denylist <value>Afvis altid denne IP-adresse, dette domæne eller denne adresse; kan gentages

Sprogmodel#

IndstillingBetydning
--llm <provider>ollama, clef-flash, jev, openai, anthropic og andre (liste)
--llm-model <name>Model, for eksempel qwen3.5:4b eller claude-haiku-4-5
--llm-method <method>decision (en sandsynlighed for hver dom i ét trin; standard, hvor det er muligt) eller generate (metoder)
--llm-account <id>Cloudflare-konto-ID til clef og clef-flash
--llm-url <url>Basis-URL, for eksempel http://10.0.0.5:11434
--llm-host, --llm-port, --llm-path, --llm-protocolÆndr én del af udbyderens URL
--llm-api-key <key>API-nøgle; se også miljøvariablerne nedenfor
--llm-auth <type>bearer, x-api-key, api-key, basic, header eller none
--llm-auth-header <name>Header til nøglen, med --llm-auth header
--llm-username, --llm-passwordTil --llm-auth basic
--llm-header "Name: value"Ekstra header i forespørgslen; kan gentages
--llm-mode <mode>auto (kun tvivlstilfælde, standard) eller always
--llm-timeout <ms>Standard 30000
--llm-policy <text>Ekstra regler for modellen, for eksempel »Vi sender aldrig fakturaer«
--llm-redact, --no-llm-redactFjern personoplysninger først; slået til som standard for eksterne udbydere

filter#

Et Postfix-indholdsfilter. Det læser en besked fra standardinput, tilføjer X-Spam-*-headere og sender den videre til sendmail med samme konvolut.

Shell
spamscanner filter -f "$sender" -- "$recipient"
IndstillingBetydning
--sendmail <path>Standard /usr/sbin/sendmail
--subject-tag <tag>Sæt et præfiks foran emnet på spam
--rejectSend post ved afvisningsgrænsen retur i stedet for at sende den videre
--discardKassér post ved afvisningsgrænsen i stedet for at sende den videre

Afslutningskoderne følger sendmails konventioner, som Postfix læser: 0 leveret (eller kasseret), 64 ingen modtagere angivet, 69 afvist som spam (Postfix sender den retur), 75 enhver fejl, så Postfix beholder beskeden og prøver igen senere.

milter, http, server og spamd#

Shell
spamscanner milter --port 7831 --reject --subject-tag "[SPAM]"
spamscanner http --port 7832 --token "$SPAMSCANNER_TOKEN"
spamscanner server --port 7830
spamscanner spamd --port 783

Port 783 er den port, SpamAssassin-klienter bruger som standard. Porte under 1024 kræver root eller kapabiliteten CAP_NET_BIND_SERVICE; brug en anden port, for eksempel --port 7833, og fortæl klienten det.

IndstillingBetydning
--port <n>TCP-port
--host <ip>Adresse, der lyttes på (standard 127.0.0.1)
--socket <path>Lyt i stedet på en Unix-socket
--rejectMilter: afvis post ved afvisningsgrænsen
--reject-code <n>Milter: 451, prøv igen senere (standard), eller 550
--quarantineMilter: hold spam tilbage i mailserverens karantæne
--name <hostname>Milter: denne servers navn i Authentication-Results
--token <secret>HTTP: kræv Authorization: Bearer <secret>; nødvendigt for /learn
--allow-tellspamd: acceptér TELL-forespørgsler (spamc -L spam) til indlæring
--out <file>HTTP og spamd: gem det indlærte i denne modelfil
--subject-tag <tag>Milter og spamd: sæt et præfiks foran emnet på spam
--verboseMilter: log hver scanning. TCP-server: svar med én tekstlinje

Scanningsindstillingerne ovenfor gælder også for serverne. Milteren, HTTP API'et, TCP-serveren og spamd.

train, eval og learn#

Shell
spamscanner train --spam ~/Mail/Junk --ham ~/Mail/Archive --out my-model.json
spamscanner eval --model my-model.json --spam test/spam.mbox --ham test/ham.mbox
spamscanner learn spam message.eml --model my-model.json
IndstillingBetydning
--spam <path>Spam: en mbox-fil, en Maildir eller en mappe med .eml-filer; kan gentages
--ham <path>Ham, på samme måde; kan gentages
--dataset <file>En CSV- eller JSON Lines-fil med kolonner til tekst og etiket; kan gentages
--text-column <name>, --label-column <name>Kolonnenavne, når de ikke genkendes automatisk
--out <file>Hvor modellen skrives (standard spamscanner-model.json)
--mergeStart fra den medfølgende model (eller --model) i stedet for en tom model

learn opdaterer modelfilen på stedet og opretter den ud fra den medfølgende model første gang. Træning

llm-test og models#

Shell
spamscanner models
spamscanner llm-test --llm ollama --llm-model qwen3.5:4b

llm-test sender én almindelig besked og to svindelbeskeder, på engelsk og italiensk, til modellen, udskriver dens domme, den tid hver tog, den anvendte metode og hardwaren og afslutter kun med 0, hvis alle tre er rigtige.

Konfigurationsfil#

--config file.json (eller miljøvariablen SPAMSCANNER_CONFIG) indlæser biblioteksindstillinger. Indstillinger på kommandolinjen tilsidesætter filen.

JSON
{
  "threshold": 6,
  "authentication": true,
  "dnsbl": {"ip": ["zen.spamhaus.org"], "domain": ["dbl.spamhaus.org"]},
  "dns": {"servers": ["127.0.0.1"]},
  "clamav": {"socket": "/var/run/clamav/clamd.ctl"},
  "llm": {"provider": "ollama", "model": "qwen3.5:4b"},
  "scores": {"deceptiveLink": 4, "FROM_NAME_BRAND": 3}
}

Miljøvariabler#

VariabelBetydning
SPAMSCANNER_CONFIGKonfigurationsfil
SPAMSCANNER_MODELModelfil, der bruges i stedet for den medfølgende
SPAMSCANNER_TOKENToken til HTTP API'et
SPAMSCANNER_LLM_API_KEYAPI-nøgle til enhver udbyder af sprogmodeller
CLOUDFLARE_API_TOKEN og CLOUDFLARE_ACCOUNT_ID, TYPESAFE_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, MISTRAL_API_KEY, GROQ_API_KEY, OPENROUTER_API_KEY, DEEPSEEK_API_KEY, XAI_API_KEY, TOGETHER_API_KEY, FIREWORKS_API_KEY, CEREBRAS_API_KEY, HF_TOKEN, AZURE_OPENAI_API_KEYHver udbyders egen nøgle
NODE_DEBUG=spamscanner*Fejlsøgningslogning

Redigér denne side på GitHub · Markdown ·