Własny filtr antyspamowy

Spam Scanner działa na Twoim serwerze i trzyma tam pocztę. Model klasyfikatora jest w pakiecie, nie ma telemetrii ani sprawdzania aktualizacji, a domyślnie jedyne, co wysyła, to zapytanie DNS o nazwę hosta każdego linku.

Co opuszcza serwer#

Domyślnie tylko nazwy hostów z linków w wiadomości. Są sprawdzane w filtrujących resolverach Cloudflare (1.1.1.2 i 1.1.1.3) zwykłymi zapytaniami DNS i żadna część wiadomości ani jej adresów nie jest wysyłana. --no-cloudflare wyłącza także to.

Każdy inny test korzystający z sieci jest wyłączony, dopóki go nie włączysz:

TestWłącz przezCo wysyła
SPF, DKIM, DMARC, ARC--authZapytania DNS o rekordy nadawcy
Listy blokowanych DNS--dnsbl, --uriblAdres IP klienta i domeny linków, jako zapytania DNS
ClamAV--clamavZałączniki, do Twojego clamd
Model językowy--llmStreszczenie wiadomości, do wskazanego przez Ciebie serwera

Skany nie są logowane ani zapisywane. Bezpieczeństwo i prywatność

Instalacja na serwerze#

Shell
npm install --global spamscanner

Albo samodzielny plik binarny z wbudowanym Node.js i modelem:

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

Skrypt instalacyjny sprawdza plik binarny z plikiem SHA256SUMS wydania przed instalacją, a każdy plik binarny ma podpisane poświadczenie pochodzenia kompilacji, które sprawdza gh attestation verify. Pliki binarne są dla Linuksa (x64 i arm64), macOS i Windows. Pliki dla Linuksa wymagają glibc, więc na Alpine instaluj przez npm. Pierwsze kroki

Nie ma sprawdzania aktualizacji. Aby zaktualizować, uruchom polecenie instalacji ponownie: oba polecenia instalują najnowsze wydanie.

Uruchamianie jako usługa#

Serwery milterMail filter: protokół z Sendmail, używany też przez Postfix, który pozwala osobnemu programowi sprawdzić każdą wiadomość w trakcie sesji SMTP., HTTP, TCP i spamdDemon SpamAssassin. Jego protokołem posługują się spamc, Exim, Haraka i inni klienci SpamAssassin. nasłuchują na 127.0.0.1, chyba że --host wskazuje inaczej. Uruchamiaj je jako użytkownik bez uprawnień, na przykład pod 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

Pełna jednostka i jej konfiguracja są w przewodniku po Postfixie. Żaden z serwerów nie obsługuje TLS, więc aby połączyć się z innej maszyny, użyj sieci prywatnej, tunelu SSH lub odwrotnego proxy z TLS.

Podłączenie serwera pocztowego#

Serwer pocztowyPoleceniePort
Postfix lub Sendmailspamscanner milter7831
Postfix, bez odrzucania pocztyspamscanner filter, filtr treścibrak
Exim, Haraka lub spamcspamscanner spamd783
Wszystko, co obsługuje HTTPspamscanner http7832
Prosty klient TCPspamscanner server7830
Serwer pocztowy napisany w Node.jsimport SpamScanner from 'spamscanner'brak

Serwery mogą dodać do wiadomości nagłówki X-Spam-Flag, X-Spam-Score i X-Spam-Status, a biblioteka zwraca wynik i każdy test, który zadziałał. Przewodniki: filtr antyspamowy dla Postfixa, inne serwery pocztowe i API HTTP.

Lokalne modele językowe#

Model językowy jest opcjonalny i czyta tylko przypadki graniczne: oczywisty spam i oczywisty hamPożądana poczta: przeciwieństwo spamu. nigdy do niego nie trafiają. Z Ollamą działa na tym samym serwerze, więc żadna wiadomość go nie opuszcza:

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

qwen3.5:4b działa na CPU. Przy dostawcy hostowanym dane osobowe są usuwane z wiadomości przed wysłaniem. Modele językowe

Trenowanie na własnej poczcie#

Dołączony model jest wytrenowany na publicznych zbiorach danych. Model wytrenowany na poczcie, którą odbiera Twój serwer, działa lepiej i zostaje na tym serwerze:

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

Plik modelu zawiera zahaszowane liczniki cech, a nie słowa ani tekst wiadomości. Trenowanie

Wymagania#

Node.js 18 lub nowszy na Linuksie, macOS albo Windows, a z samodzielnym plikiem binarnym nic. ClamAVOtwartoźródłowy silnik antywirusowy. Jego demon, clamd, skanuje pliki przesłane przez gniazdo. i OllamaProgram, który pobiera i uruchamia otwarte modele językowe na twoim własnym komputerze, z HTTP API. są opcjonalne i działają jako osobne usługi.

Edytuj tę stronę na GitHub · Markdown ·