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:

KontrollSlå på medVad den skickar
SPF, DKIM, DMARC, ARC--authDNS-frågor om avsändarens poster
DNS-blocklistor--dnsbl, --uriblKlientens IP-adress och länkarnas domäner, som DNS-frågor
ClamAV--clamavBilagor, till din egen clamd
En språkmodell--llmEn sammanfattning av meddelandet, till servern du anger

Skanningar loggas inte och sparas inte. Säkerhet och integritet

Installera på en server#

Shell
npm install --global spamscanner

Eller den fristående binärfilen, med Node.js och modellen inbyggda:

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

Installationsskriptet 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:

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 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-postserverKommandoPort
Postfix eller Sendmailspamscanner milter7831
Postfix, utan att någonsin avvisa e-postspamscanner filter, ett innehållsfilteringen
Exim, Haraka eller spamcspamscanner spamd783
Allt som talar HTTPspamscanner http7832
En enkel TCP-klientspamscanner server7830
En e-postserver skriven i Node.jsimport 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:

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

qwen3.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:

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 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.

Redigera den här sidan på GitHub · Markdown ·