Selbst gehosteter Spamfilter

Spam Scanner läuft auf Ihrem eigenen Server und behält die E-Mails dort. Das Modell des Klassifikators ist im Paket enthalten, es gibt keine Telemetrie und keine Update-Prüfung, und standardmäßig sendet er nur eine DNS-Abfrage für den Hostnamen jedes Links.

Was den Server verlässt#

Standardmäßig nur die Hostnamen der Links in einer Nachricht. Sie werden als gewöhnliche DNS-Abfragen bei den Filter-Resolvern von Cloudflare (1.1.1.2 und 1.1.1.3) nachgeschlagen, und kein Teil der Nachricht oder ihrer Adressen wird gesendet. --no-cloudflare schaltet auch das ab.

Jede andere Prüfung, die das Netz nutzt, ist aus, bis Sie sie einschalten:

PrüfungEinschalten mitWas sie sendet
SPF, DKIM, DMARC, ARC--authDNS-Abfragen nach den Einträgen des Absenders
DNS-Blocklisten--dnsbl, --uriblDie IP-Adresse des Clients und Link-Domains, als DNS-Abfragen
ClamAV--clamavAnhänge, an Ihr eigenes clamd
Ein Sprachmodell--llmEine Zusammenfassung der Nachricht, an den von Ihnen genannten Server

Scans werden weder protokolliert noch gespeichert. Sicherheit und Datenschutz

Auf einem Server installieren#

Shell
npm install --global spamscanner

Oder die eigenständige Binärdatei, mit Node.js und dem Modell eingebaut:

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

Das Installationsskript prüft die Binärdatei vor der Installation anhand der Datei SHA256SUMS des Releases, und jede Binärdatei hat eine signierte Build-Provenienz-Attestierung, die gh attestation verify prüft. Binärdateien gibt es für Linux (x64 und arm64), macOS und Windows. Die Linux-Binärdateien benötigen glibc, installieren Sie auf Alpine daher mit npm. Erste Schritte

Es gibt keine Update-Prüfung. Zum Aktualisieren führen Sie den Installationsbefehl erneut aus: Beide Befehle installieren das neueste Release.

Als Dienst betreiben#

Die Milter-, HTTP-, TCP- und spamd-Server lauschen auf 127.0.0.1, sofern --host nichts anderes angibt. Betreiben Sie sie als Benutzer ohne Privilegien, zum Beispiel unter 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

Die vollständige Unit und ihre Einrichtung stehen in der Postfix-Anleitung. Keiner der Server spricht TLS. Um einen von einem anderen Rechner aus zu erreichen, nutzen Sie ein privates Netz, einen SSH-Tunnel oder einen Reverse Proxy mit TLS.

Ihren Mailserver anbinden#

MailserverBefehlPort
Postfix oder Sendmailspamscanner milter7831
Postfix, ohne je E-Mails abzuweisenspamscanner filter, ein Content-Filterkeiner
Exim, Haraka oder spamcspamscanner spamd783
Alles, was HTTP sprichtspamscanner http7832
Ein einfacher TCP-Clientspamscanner server7830
Ein in Node.js geschriebener Mailserverimport SpamScanner from 'spamscanner'keiner

Die Server können der Nachricht die Header X-Spam-Flag, X-Spam-Score und X-Spam-Status hinzufügen, und die Bibliothek liefert den Score und jeden ausgelösten Test. Anleitungen: Spamfilter für Postfix, andere Mailserver und die HTTP-API.

Sprachmodelle lokal halten#

Ein Sprachmodell ist optional und liest nur knappe Fälle: Eindeutiger Spam und eindeutiger Ham erreichen es nie. Mit OllamaEin Programm, das offene Sprachmodelle auf dem eigenen Rechner herunterlädt und ausführt, mit einer HTTP-API. läuft es auf demselben Server, sodass keine Nachricht ihn verlässt:

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

qwen3.5:4b läuft auf einer CPU. Nutzen Sie stattdessen einen gehosteten Anbieter, werden personenbezogene Daten vor dem Senden aus der Nachricht entfernt. Sprachmodelle

Mit Ihren eigenen E-Mails trainieren#

Das mitgelieferte Modell ist mit öffentlichen Datensätzen trainiert. Ein Modell, das mit den E-Mails trainiert ist, die Ihr Server empfängt, ist besser, und es bleibt auf diesem Server:

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

Eine Modelldatei enthält gehashte Merkmalszählungen, keine Wörter und keinen Nachrichtentext. Training

Voraussetzungen#

Node.js 18 oder neuer unter Linux, macOS oder Windows, oder mit einer eigenständigen Binärdatei gar nichts. ClamAVEine Open-Source-Antiviren-Engine. Ihr Daemon clamd prüft Dateien, die über einen Socket gesendet werden. und Ollama sind optional und laufen als eigene Dienste.

Diese Seite auf GitHub bearbeiten · Markdown ·