Egen-hostat spamfilter
Spam Scanner körs på din egen server och behåller e-posten där. Klassificerarens modell finns i paketet, det finns ingen telemetri eller uppdateringskontroll, och som standard skickar det bara en DNS-fråga för värdnamnet i varje länk.
Vad som lämnar servern#
Som standard bara värdnamnen i länkarna i ett meddelande. De slås upp hos Cloudflares filtrerande resolvrar (1.1.1.2 och 1.1.1.3) som vanliga DNS-frågor, och ingen del av meddelandet eller dess adresser skickas. --no-cloudflare stänger av även detta.
Alla andra kontroller som använder nätverket är avstängda tills du slår på dem:
| Kontroll | Slå på med | Vad den skickar |
|---|---|---|
| SPF, DKIM, DMARC, ARC | --auth | DNS-frågor om avsändarens poster |
| DNS-blocklistor | --dnsbl, --uribl | Klientens IP-adress och länkarnas domäner, som DNS-frågor |
| ClamAV | --clamav | Bilagor, till din egen clamd |
| En språkmodell | --llm | En sammanfattning av meddelandet, till servern du anger |
Skanningar loggas inte och sparas inte. Säkerhet och integritet
Installera på en server#
npm install --global spamscannerEller den fristående binärfilen, med Node.js och modellen inbyggda:
curl -fsSL https://github.com/spamscanner/spamscanner/releases/latest/download/install.sh | bashInstallationsskriptet kontrollerar binärfilen mot releasens SHA256SUMS-fil innan den installeras, och varje binärfil har en signerad attestering av byggets ursprung som gh attestation verify kontrollerar. Binärfilerna finns för Linux (x64 och arm64), macOS och Windows. Linux-binärfilerna kräver glibc, så installera med npm på Alpine. Kom igång
Det finns ingen uppdateringskontroll. Kör installationskommandot igen för att uppdatera: båda kommandona installerar den senaste releasen.
Kör det som tjänst#
Milter-, HTTP-, TCP- och spamd-servrarna lyssnar på 127.0.0.1 om inte --host säger något annat. Kör dem som en användare utan behörigheter, till exempel under systemd:
[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=yesDen fullständiga enheten och dess installation finns i Postfix-guiden. Ingen av servrarna talar TLS; för att nå en från en annan maskin, använd ett privat nätverk, en SSH-tunnel eller en omvänd proxy med TLS.
Koppla din e-postserver#
| E-postserver | Kommando | Port |
|---|---|---|
| Postfix eller Sendmail | spamscanner milter | 7831 |
| Postfix, utan att någonsin avvisa e-post | spamscanner filter, ett innehållsfilter | ingen |
| Exim, Haraka eller spamc | spamscanner spamd | 783 |
| Allt som talar HTTP | spamscanner http | 7832 |
| En enkel TCP-klient | spamscanner server | 7830 |
| En e-postserver skriven i Node.js | import SpamScanner from 'spamscanner' | ingen |
Servrarna kan lägga till rubrikerna X-Spam-Flag, X-Spam-Score och X-Spam-Status i meddelandet, och biblioteket returnerar poängen och varje test som slog till. Guider: spamfilter för Postfix, andra e-postservrar och HTTP-API:t.
Håll språkmodellerna lokala#
En språkmodell är valfri och läser bara gränsfall: tydlig spam och tydlig hamÖnskad e-post: motsatsen till spam. når den aldrig. Med OllamaEtt program som laddar ner och kör öppna språkmodeller på din egen dator, med ett HTTP-API. körs den på samma server, så inget meddelande lämnar den:
ollama pull qwen3.5:4b
spamscanner milter --llm ollama --llm-model qwen3.5:4bqwen3.5:4b körs på en CPU. Med en hostad leverantör tas personuppgifter bort ur meddelandet innan det skickas. Språkmodeller
Träna det på din egen e-post#
Den medföljande modellen är tränad på offentliga dataset. En modell som tränats på den e-post din server tar emot fungerar bättre, och den stannar på servern:
spamscanner train --spam ~/Maildir/.Junk --ham ~/Maildir/cur --out /var/lib/spamscanner/model.json
SPAMSCANNER_MODEL=/var/lib/spamscanner/model.json spamscanner milterEn modellfil innehåller hashade antal av egenskaper, inte ord eller meddelandetext. Träning
Krav#
Node.js 18 eller senare på Linux, macOS eller Windows, eller ingenting med en fristående binärfil. ClamAVEn antivirusmotor med öppen källkod. Dess daemon, clamd, skannar filer som skickas över en socket. och Ollama är valfria och körs som egna tjänster.