Selvhostet spamfilter

Spam Scanner kører på din egen server og holder mailen der. Klassifikatorens model ligger i pakken, der er ingen telemetri eller opdateringstjek, og som standard sender det kun et DNS-opslag for værtsnavnet i hvert link.

Hvad der forlader serveren#

Som standard kun værtsnavnene i en beskeds links. De slås op hos Cloudflares filtrerende resolvere (1.1.1.2 og 1.1.1.3) som almindelige DNS-forespørgsler, og ingen del af beskeden eller dens adresser sendes. --no-cloudflare slår også det fra.

Alle andre tjek, der bruger netværket, er slået fra, indtil du slår dem til:

TjekSlå til medHvad det sender
SPF, DKIM, DMARC, ARC--authDNS-forespørgsler efter afsenderens poster
DNS-blokeringslister--dnsbl, --uriblKlientens IP-adresse og linkenes domæner, som DNS-forespørgsler
ClamAV--clamavVedhæftede filer, til din egen clamd
En sprogmodel--llmEt resumé af beskeden, til den server, du angiver

Scanninger logges og gemmes ikke. Sikkerhed og privatliv

Installér på en server#

Shell
npm install --global spamscanner

Eller den selvstændige binære fil, med Node.js og modellen indbygget:

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

Installationsscriptet tjekker den binære fil mod udgivelsens SHA256SUMS-fil, før den installeres, og hver binær fil har en signeret attestering af byggets oprindelse, som gh attestation verify tjekker. Der er binære filer til Linux (x64 og arm64), macOS og Windows. Linux-filerne kræver glibc, så installér med npm på Alpine. Kom i gang

Der er intet opdateringstjek. For at opdatere skal du køre installationskommandoen igen: begge kommandoer installerer den nyeste udgivelse.

Kør det som tjeneste#

Milter-, HTTP-, TCP- og spamd-serverne lytter på 127.0.0.1, medmindre --host siger andet. Kør dem som en bruger uden rettigheder, 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 fulde enhed og dens opsætning står i Postfix-guiden. Ingen af serverne taler TLS; for at nå en fra en anden maskine skal du bruge et privat netværk, en SSH-tunnel eller en reverse proxy med TLS.

Forbind din mailserver#

MailserverKommandoPort
Postfix eller Sendmailspamscanner milter7831
Postfix, uden nogensinde at afvise mailspamscanner filter, et indholdsfilteringen
Exim, Haraka eller spamcspamscanner spamd783
Alt, der taler HTTPspamscanner http7832
En enkel TCP-klientspamscanner server7830
En mailserver skrevet i Node.jsimport SpamScanner from 'spamscanner'ingen

Serverne kan tilføje headerne X-Spam-Flag, X-Spam-Score og X-Spam-Status til beskeden, og biblioteket returnerer scoren og hver test, der slog til. Guider: spamfilter til Postfix, andre mailservere og HTTP-API'et.

Hold sprogmodellerne lokale#

En sprogmodel er valgfri og læser kun tvivlstilfælde: tydelig spam og tydelig hamØnsket post: det modsatte af spam. når den aldrig. Med OllamaEt program, der henter og kører åbne sprogmodeller på din egen maskine, med et HTTP API. kører den på samme server, så ingen besked forlader den:

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

qwen3.5:4b kører på en CPU. Med en hostet udbyder fjernes personoplysninger fra beskeden, før den sendes. Sprogmodeller

Træn det på din egen mail#

Den medfølgende model er trænet på offentlige datasæt. En model, der er trænet på den mail, din server modtager, klarer sig bedre, og den bliver 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 modelfil indeholder hashede optællinger af kendetegn, ikke ord eller beskedtekst. Træning

Krav#

Node.js 18 eller nyere på Linux, macOS eller Windows, eller intet med en selvstændig binær fil. ClamAVEn antivirusmotor med åben kildekode. Dens dæmon, clamd, scanner filer, der sendes over en socket. og Ollama er valgfrie og kører som egne tjenester.

Redigér denne side på GitHub · Markdown ·