Filter spam self-hosted
Spam Scanner berjalan di server Anda sendiri dan menyimpan email di sana. Model pengklasifikasinya ada di dalam paket, tidak ada telemetri atau pemeriksaan pembaruan, dan secara default satu-satunya yang dikirim adalah kueri DNS untuk nama host setiap tautan.
Apa yang keluar dari server#
Secara default, hanya nama host tautan dalam pesan. Nama itu dicari di resolver penyaring milik Cloudflare (1.1.1.2 dan 1.1.1.3) sebagai kueri DNS biasa, dan tidak ada bagian pesan atau alamatnya yang dikirim. --no-cloudflare juga mematikan ini.
Setiap pemeriksaan lain yang memakai jaringan mati sampai Anda menyalakannya:
| Pemeriksaan | Nyalakan dengan | Yang dikirim |
|---|---|---|
| SPF, DKIM, DMARC, ARC | --auth | Kueri DNS untuk catatan pengirim |
| Daftar blokir DNS | --dnsbl, --uribl | Alamat IP klien dan domain tautan, sebagai kueri DNS |
| ClamAV | --clamav | Lampiran, ke clamd Anda sendiri |
| Model bahasa | --llm | Ringkasan pesan, ke server yang Anda tentukan |
Pemindaian tidak dicatat atau disimpan. Keamanan dan privasi
Pasang di server#
npm install --global spamscannerAtau biner mandiri, dengan Node.js dan model di dalamnya:
curl -fsSL https://github.com/spamscanner/spamscanner/releases/latest/download/install.sh | bashSkrip pemasangan memeriksa biner terhadap file SHA256SUMS dari rilis sebelum memasangnya, dan setiap biner memiliki atestasi asal build bertanda tangan yang diperiksa oleh gh attestation verify. Biner tersedia untuk Linux (x64 dan arm64), macOS, dan Windows. Biner Linux membutuhkan glibc, jadi di Alpine pasang dengan npm. Memulai
Tidak ada pemeriksaan pembaruan. Untuk memperbarui, jalankan lagi perintah pemasangan: kedua perintah memasang rilis terbaru.
Jalankan sebagai layanan#
Server milterMail filter: protokol dari Sendmail, juga dipakai Postfix, yang memungkinkan program terpisah memeriksa setiap pesan selama sesi SMTP., HTTP, TCP, dan spamdDaemon SpamAssassin. Protokolnya digunakan oleh spamc, Exim, Haraka, dan klien SpamAssassin lainnya. mendengarkan di 127.0.0.1 kecuali --host menyatakan lain. Jalankan sebagai pengguna tanpa hak istimewa, misalnya di bawah 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=yesUnit lengkap dan penyiapannya ada di panduan Postfix. Tidak ada server yang memakai TLS, jadi untuk menjangkaunya dari mesin lain, gunakan jaringan privat, terowongan SSH, atau reverse proxy dengan TLS.
Hubungkan server email Anda#
| Server email | Perintah | Port |
|---|---|---|
| Postfix atau Sendmail | spamscanner milter | 7831 |
| Postfix, tanpa pernah menolak email | spamscanner filter, filter konten | tidak ada |
| Exim, Haraka, atau spamc | spamscanner spamd | 783 |
| Apa pun yang memakai HTTP | spamscanner http | 7832 |
| Klien TCP sederhana | spamscanner server | 7830 |
| Server email yang ditulis dengan Node.js | import SpamScanner from 'spamscanner' | tidak ada |
Server dapat menambahkan header X-Spam-Flag, X-Spam-Score, dan X-Spam-Status ke pesan, dan pustaka mengembalikan skor serta setiap uji yang terpicu. Panduan: filter spam Postfix, server email lain, dan API HTTP.
Jaga model bahasa tetap lokal#
Model bahasa bersifat opsional dan hanya membaca kasus yang meragukan: spam yang jelas dan hamEmail yang diinginkan: kebalikan dari spam. yang jelas tidak pernah sampai kepadanya. Dengan OllamaProgram yang mengunduh dan menjalankan model bahasa terbuka di mesin Anda sendiri, dengan HTTP API., model berjalan di server yang sama, jadi tidak ada pesan yang keluar:
ollama pull qwen3.5:4b
spamscanner milter --llm ollama --llm-model qwen3.5:4bqwen3.5:4b berjalan di CPU. Dengan penyedia ter-hosting, data pribadi dihapus dari pesan sebelum dikirim. Model bahasa
Latih dengan email Anda sendiri#
Model bawaan dilatih dengan dataset publik. Model yang dilatih dengan email yang diterima server Anda bekerja lebih baik, dan tetap berada di server itu:
spamscanner train --spam ~/Maildir/.Junk --ham ~/Maildir/cur --out /var/lib/spamscanner/model.json
SPAMSCANNER_MODEL=/var/lib/spamscanner/model.json spamscanner milterFile model menyimpan hitungan fitur yang di-hash, bukan kata atau teks pesan. Pelatihan
Persyaratan#
Node.js 18 atau lebih baru di Linux, macOS, atau Windows, atau tidak ada apa pun dengan biner mandiri. ClamAVMesin antivirus sumber terbuka. Daemonnya, clamd, memindai file yang dikirim melalui soket. dan Ollama bersifat opsional dan berjalan sebagai layanan sendiri.