Selvdriftet spamfilter

Spam Scanner kjører på din egen server og holder e-posten der. Klassifikatorens modell ligger i pakken, det finnes ingen telemetri eller oppdateringssjekk, og som standard sender det bare et DNS-oppslag for vertsnavnet i hver lenke.

Hva som forlater serveren#

Som standard bare vertsnavnene i lenkene i en melding. De slås opp hos Cloudflares filtrerende resolvere (1.1.1.2 og 1.1.1.3) som vanlige DNS-spørringer, og ingen del av meldingen eller adressene sendes. --no-cloudflare slår også dette av.

Alle andre kontroller som bruker nettverket er av til du slår dem på:

KontrollSlå på medHva den sender
SPF, DKIM, DMARC, ARC--authDNS-spørringer etter avsenderens poster
DNS-blokkeringslister--dnsbl, --uriblKlientens IP-adresse og lenkenes domener, som DNS-spørringer
ClamAV--clamavVedlegg, til din egen clamd
En språkmodell--llmEt sammendrag av meldingen, til serveren du oppgir

Skanninger logges ikke og lagres ikke. Sikkerhet og personvern

Installer på en server#

Shell
npm install --global spamscanner

Eller den frittstående binærfilen, med Node.js og modellen innebygd:

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

Installasjonsskriptet kontrollerer binærfilen mot utgivelsens SHA256SUMS-fil før den installeres, og hver binærfil har en signert attestasjon av byggets opprinnelse som gh attestation verify kontrollerer. Det finnes binærfiler for Linux (x64 og arm64), macOS og Windows. Linux-filene krever glibc, så installer med npm på Alpine. Kom i gang

Det finnes ingen oppdateringssjekk. For å oppdatere kjører du installasjonskommandoen på nytt: begge kommandoene installerer den nyeste utgivelsen.

Kjør det som tjeneste#

Milter-, HTTP-, TCP- og spamd-serverne lytter på 127.0.0.1 med mindre --host sier noe annet. Kjør dem som en bruker uten rettigheter, for eksempel under systemd:

INI
[Service]
ExecStart=/usr/local/bin/spamscanner milter --port 7831 --auth --subject-tag [SPAM]
User=spamscanner
Group=spamscanner
Restart=on-failure
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
PrivateTmp=yes

Den fullstendige enheten og oppsettet står i Postfix-veiledningen. Ingen av serverne snakker TLS; for å nå en fra en annen maskin bruker du et privat nettverk, en SSH-tunnel eller en omvendt proxy med TLS.

Koble til e-postserveren din#

E-postserverKommandoPort
Postfix eller Sendmailspamscanner milter7831
Postfix, uten noen gang å avvise e-postspamscanner filter, et innholdsfilteringen
Exim, Haraka eller spamcspamscanner spamd783
Alt som snakker HTTPspamscanner http7832
En enkel TCP-klientspamscanner server7830
En e-postserver skrevet i Node.jsimport SpamScanner from 'spamscanner'ingen

Serverne kan legge til hodene X-Spam-Flag, X-Spam-Score og X-Spam-Status i meldingen, og biblioteket returnerer poengsummen og hver test som slo til. Veiledninger: spamfilter for Postfix, andre e-postservere og HTTP-API-et.

Hold språkmodellene lokale#

En språkmodell er valgfri og leser bare tvilstilfeller: tydelig spam og tydelig hamØnsket e-post: det motsatte av spam. når den aldri. Med OllamaEt program som laster ned og kjører åpne språkmodeller på din egen maskin, med et HTTP API. kjører den på samme server, så ingen melding forlater den:

Shell
ollama pull qwen3.5:4b
spamscanner milter --llm ollama --llm-model qwen3.5:4b

qwen3.5:4b kjører på en CPU. Med en ekstern leverandør fjernes personopplysninger fra meldingen før den sendes. Språkmodeller

Tren det på din egen e-post#

Den medfølgende modellen er trent på offentlige datasett. En modell som er trent på e-posten serveren din mottar, gjør det bedre, og den blir på serveren:

Shell
spamscanner train --spam ~/Maildir/.Junk --ham ~/Maildir/cur --out /var/lib/spamscanner/model.json
SPAMSCANNER_MODEL=/var/lib/spamscanner/model.json spamscanner milter

En modellfil inneholder hashede tellinger av kjennetegn, ikke ord eller meldingstekst. Trening

Krav#

Node.js 18 eller nyere på Linux, macOS eller Windows, eller ingenting med en frittstående binærfil. ClamAVEn antivirusmotor med åpen kildekode. Tjenesten clamd skanner filer som sendes over en socket. og Ollama er valgfrie og kjører som egne tjenester.

Rediger denne siden på GitHub · Markdown ·