Kommandolinje
Text Kopier
spamscanner <command> [options]
Kommando Hva den gjør scan [file|-]Skanner en melding fra en fil eller standard inndata
filter -f <sender> -- <recipients...>Innholdsfilter for Postfix: skanner standard inndata, legger til hoder, sender videre
milterMilter for Postfix og Sendmail, port 7831
httpHTTP API, port 7832
serverEnkel TCP-server, port 7830
spamdSpamAssassin-kompatibel spamd-server, port 783
trainTrener en modell fra mbox-filer, Maildir-mapper, mapper eller datasett
evalMåler en modell på merket e-post
learn spam|ham [file|-] --model <file>Lærer en modell opp på én melding
llm-testSjekker innstillingene for språkmodellen med tre eksempelmeldinger
modelsLister opp anbefalte åpne modeller
version, help
scan#
Shell Kopier
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
Alternativ Betydning --jsonSkriv ut hele resultatet som JSON
--headersSkriv ut meldingen med X-Spam-*-hoder lagt til
--subject-tag <tag>Sett i tillegg et prefiks foran emnet på spam
--verboseVis alle tester og klassifisererens sterkeste indisier
--threshold <n>Poengsum der e-post er spam (standard 5)
--reject-threshold <n>Poengsum der e-post avvises (standard 15)
--model <file>En modellfil i stedet for den medfølgende
--no-classifierIkke bruk klassifisereren
--config <file>En JSON-fil med bibliotekalternativer
--allow-language <codes>Godtatte språk, for eksempel en,de,fr
Avslutningskoder: 0 hamØnsket e-post: det motsatte av spam. , 1 spam, 2 feil.
SMTP-økt#
Alternativ Betydning --ip <address>IP-adressen til klienten som sendte meldingen
--hostname <name>Klientens verifiserte navn fra omvendt DNS
--helo <name>Navnet den oppga i HELO eller EHLO
--from <address>Konvoluttavsender (MAIL FROM)
--to <address>Konvoluttmottaker; gjenta for flere
Sjekker#
Alternativ Betydning --authSjekk SPF, DKIM, DMARC og ARC (krever --ip)
--dnsbl <zone>IP-blokkeringsliste, for eksempel zen.spamhaus.org; kan gjentas
--uribl <zone>Domeneblokkeringsliste for lenker, for eksempel dbl.spamhaus.org; kan gjentas
--dns-server <ip>Navneserver for DNS-sjekker; kan gjentas
--no-cloudflareIkke spør Cloudflares filtrerende resolvere om lenker
--clamav [socket]Skann vedlegg med clamd, på standard-socketen eller den som oppgis
--allowlist <value>Godta alltid denne IP-adressen, dette domenet eller denne adressen; kan gjentas
--denylist <value>Avvis alltid denne IP-adressen, dette domenet eller denne adressen; kan gjentas
Språkmodell#
Alternativ Betydning --llm <provider>ollama, clef-flash, jev, openai, anthropic og andre (liste )
--llm-model <name>Modell, for eksempel qwen3.5:4b eller claude-haiku-4-5
--llm-method <method>decision (en sannsynlighet for hver vurdering, i ett steg; standard der det er tilgjengelig) eller generate (metoder )
--llm-account <id>Cloudflare-konto-ID, for clef og clef-flash
--llm-url <url>Basis-URL, for eksempel http://10.0.0.5:11434
--llm-host, --llm-port, --llm-path, --llm-protocolEndre én del av leverandørens URL
--llm-api-key <key>API-nøkkel; se også miljøvariablene nedenfor
--llm-auth <type>bearer, x-api-key, api-key, basic, header eller none
--llm-auth-header <name>Hode for nøkkelen, med --llm-auth header
--llm-username, --llm-passwordFor --llm-auth basic
--llm-header "Name: value"Ekstra hode i forespørselen; kan gjentas
--llm-mode <mode>auto (bare vanskelige tilfeller, standard) eller always
--llm-timeout <ms>Standard 30000
--llm-policy <text>Ekstra regler for modellen, for eksempel «Vi sender aldri fakturaer»
--llm-redact, --no-llm-redactFjern personopplysninger først; på som standard for eksterne leverandører
filter#
Et innholdsfilter for Postfix . Det leser en melding fra standard inndata, legger til X-Spam-*-hoder og sender den til sendmail med den samme konvolutten.
Shell Kopier
spamscanner filter -f "$sender" -- "$recipient"
Alternativ Betydning --sendmail <path>Standard /usr/sbin/sendmail
--subject-tag <tag>Sett et prefiks foran emnet på spam
--rejectReturner e-post ved avvisningsterskelen i stedet for å sende den videre
--discardForkast e-post ved avvisningsterskelen i stedet for å sende den videre
Avslutningskodene følger konvensjonene til sendmail, som Postfix leser: 0 levert (eller forkastet), 64 ingen mottakere oppgitt, 69 avvist som spam (Postfix returnerer den), 75 enhver feil, slik at Postfix beholder meldingen og prøver igjen senere.
milter, http, server og spamd#
Shell Kopier
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 porten SpamAssassin-klienter bruker som standard. Porter under 1024 krever root eller egenskapen CAP_NET_BIND_SERVICE; bruk en annen port, for eksempel --port 7833, og oppgi den til klienten.
Alternativ Betydning --port <n>TCP-port
--host <ip>Adressen det skal lyttes på (standard 127.0.0.1)
--socket <path>Lytt på en Unix-socket i stedet
--rejectMilter: avvis e-post ved avvisningsterskelen
--reject-code <n>Milter: 451, prøv igjen senere (standard), eller 550
--quarantineMilter: hold spam tilbake i e-postserverens karantene
--name <hostname>Milter: navnet på denne serveren i Authentication-Results
--token <secret>HTTP: krev Authorization: Bearer <secret>; nødvendig for /learn
--allow-tellspamd: godta TELL-forespørsler (spamc -L spam) for å lære
--out <file>HTTP og spamd: lagre det som læres, i denne modellfilen
--subject-tag <tag>Milter og spamd: sett et prefiks foran emnet på spam
--verboseMilter: logg hver skanning. TCP-server: svar med én tekstlinje
Skannealternativene ovenfor gjelder også for serverne. Milteren , HTTP API-et, TCP-serveren og spamd .
train, eval og learn#
Shell Kopier
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
Alternativ Betydning --spam <path>Spam: en mbox-fil, en Maildir eller en mappe med .eml-filer; kan gjentas
--ham <path>Ham, på samme måte; kan gjentas
--dataset <file>En CSV- eller JSON Lines-fil med kolonner for tekst og etikett; kan gjentas
--text-column <name>, --label-column <name>Kolonnenavn, når de ikke oppdages automatisk
--out <file>Hvor modellen skal skrives (standard spamscanner-model.json)
--mergeStart fra den medfølgende modellen (eller --model) i stedet for en tom modell
learn oppdaterer modellfilen på stedet og oppretter den fra den medfølgende modellen første gang. Trening
llm-test og models#
Shell Kopier
spamscanner models
spamscanner llm-test --llm ollama --llm-model qwen3.5 :4b
llm-test sender én vanlig melding og to svindelforsøk, på engelsk og italiensk, til modellen, skriver ut vurderingene, tiden hver av dem tok, metoden som ble brukt og maskinvaren, og avslutter med 0 bare hvis alle tre er riktige.
Konfigurasjonsfil#
--config file.json (eller miljøvariabelen SPAMSCANNER_CONFIG) laster inn bibliotekalternativer . Alternativer på kommandolinjen overstyrer filen.
JSON Kopier
{
"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#
Variabel Betydning SPAMSCANNER_CONFIGKonfigurasjonsfil
SPAMSCANNER_MODELModellfil som brukes i stedet for den medfølgende
SPAMSCANNER_TOKENToken for HTTP API-et
SPAMSCANNER_LLM_API_KEYAPI-nøkkel for enhver leverandør av språkmodeller
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 leverandørs egen nøkkel
NODE_DEBUG=spamscanner*Feilsøkingslogging