Saját üzemeltetésű spamszűrő

A Spam Scanner a saját szerverén fut, és ott tartja a leveleket. Az osztályozó modellje a csomagban van, nincs telemetria és frissítéskeresés, alapértelmezés szerint pedig csak egy DNS-lekérdezést küld minden hivatkozás gépnevére.

Mi hagyja el a szervert#

Alapértelmezés szerint csak a levélben lévő hivatkozások gépnevei. Ezeket a Cloudflare szűrő feloldóinál (1.1.1.2 és 1.1.1.3) keresi ki szokásos DNS-lekérdezésekkel, a levélből és a címeiből semmit nem küld el. A --no-cloudflare ezt is kikapcsolja.

Minden más, hálózatot használó ellenőrzés ki van kapcsolva, amíg be nem kapcsolja:

EllenőrzésBekapcsolásMit küld
SPF, DKIM, DMARC, ARC--authDNS-lekérdezéseket a feladó rekordjaira
DNS-tiltólisták--dnsbl, --uriblAz ügyfél IP-címét és a hivatkozások domainjeit, DNS-lekérdezésként
ClamAV--clamavA mellékleteket, a saját clamd-jének
Nyelvi modell--llmA levél összefoglalóját, az Ön által megadott szervernek

A vizsgálatokat nem naplózza és nem tárolja. Biztonság és adatvédelem

Telepítés szerverre#

Shell
npm install --global spamscanner

Vagy az önálló bináris, beépített Node.js-szel és modellel:

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

A telepítőszkript a kiadás SHA256SUMS fájlja alapján ellenőrzi a binárist telepítés előtt, és minden binárisnak van aláírt builderedet-igazolása, amelyet a gh attestation verify ellenőriz. Binárisok vannak Linuxra (x64 és arm64), macOS-re és Windowsra. A linuxos binárisokhoz glibc kell, ezért Alpine-on npm-mel telepítsen. Első lépések

Nincs frissítéskeresés. A frissítéshez futtassa újra a telepítő parancsot: mindkét parancs a legújabb kiadást telepíti.

Futtatás szolgáltatásként#

A milter-, HTTP-, TCP- és spamd-szerverek a 127.0.0.1 címen figyelnek, hacsak a --host mást nem mond. Futtassa őket jogosultság nélküli felhasználóként, például systemd alatt:

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

A teljes egység és a beállítása a Postfix-útmutatóban található. Egyik szerver sem beszél TLS-t, ezért másik gépről privát hálózaton, SSH-alagúton vagy TLS-es fordított proxyn át érje el őket.

A levelezőszerver csatlakoztatása#

LevelezőszerverParancsPort
Postfix vagy Sendmailspamscanner milter7831
Postfix, levelek elutasítása nélkülspamscanner filter, tartalomszűrőnincs
Exim, Haraka vagy spamcspamscanner spamd783
Bármi, ami HTTP-t beszélspamscanner http7832
Egyszerű TCP-ügyfélspamscanner server7830
Node.js-ben írt levelezőszerverimport SpamScanner from 'spamscanner'nincs

A szerverek hozzáadhatják a levélhez az X-Spam-Flag, X-Spam-Score és X-Spam-Status fejléceket, a könyvtár pedig visszaadja a pontszámot és minden jelzett tesztet. Útmutatók: spamszűrő Postfixhez, más levelezőszerverek és a HTTP API.

Nyelvi modellek helyben#

A nyelvi modell nem kötelező, és csak a határesetekkel foglalkozik: az egyértelmű spam és az egyértelmű hamKért levél: a spam ellentéte. sosem jut el hozzá. Az Ollamával ugyanazon a szerveren fut, így egyetlen levél sem hagyja el:

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

A qwen3.5:4b CPU-n fut. Felhőben futó szolgáltató esetén a személyes adatokat küldés előtt eltávolítja a levélből. Nyelvi modellek

Tanítás a saját leveleivel#

A mellékelt modellt nyilvános adathalmazokon tanították. A szervere által fogadott leveleken tanított modell jobban teljesít, és azon a szerveren marad:

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

A modellfájl hash-elt jellemzőszámlálókat tartalmaz, nem szavakat vagy levélszöveget. Tanítás

Követelmények#

Node.js 18 vagy újabb Linuxon, macOS-en vagy Windowson, önálló binárissal pedig semmi. A ClamAVNyílt forráskódú víruskereső motor. A démonja, a clamd, a socketen küldött fájlokat vizsgálja. és az OllamaProgram, amely nyílt nyelvi modelleket tölt le és futtat a saját gépen, HTTP API-val. nem kötelező, és külön szolgáltatásként fut.

Az oldal szerkesztése a GitHubon · Markdown ·