Filtre antispam auto-hébergé

Spam Scanner fonctionne sur votre propre serveur et y garde le courrier. Le modèle du classifieur est inclus dans le paquet, il n’y a ni télémétrie ni vérification de mises à jour, et par défaut la seule chose qu’il envoie est une requête DNS pour le nom d’hôte de chaque lien.

Ce qui quitte le serveur#

Par défaut, seulement les noms d’hôte des liens d’un message. Ils sont recherchés sur les résolveurs filtrants de Cloudflare (1.1.1.2 et 1.1.1.3) par des requêtes DNS ordinaires, et aucune partie du message ni de ses adresses n’est envoyée. --no-cloudflare désactive aussi cela.

Tout autre contrôle qui utilise le réseau reste désactivé jusqu’à ce que vous l’activiez :

ContrôlePour l’activerCe qu’il envoie
SPF, DKIM, DMARC, ARC--authDes requêtes DNS sur les enregistrements de l’expéditeur
Listes de blocage DNS--dnsbl, --uriblL’adresse IP du client et les domaines des liens, en requêtes DNS
ClamAV--clamavLes pièces jointes, à votre propre clamd
Un modèle de langage--llmUn résumé du message, au serveur que vous indiquez

Les analyses ne sont ni journalisées ni conservées. Sécurité et confidentialité

Installer sur un serveur#

Shell
npm install --global spamscanner

Ou le binaire autonome, avec Node.js et le modèle intégrés :

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

Le script d’installation vérifie le binaire avec le fichier SHA256SUMS de la version avant de l’installer, et chaque binaire a une attestation de provenance de build signée que gh attestation verify contrôle. Les binaires couvrent Linux (x64 et arm64), macOS et Windows. Les binaires Linux ont besoin de glibc : sur Alpine, installez avec npm. Premiers pas

Il n’y a pas de vérification de mises à jour. Pour mettre à jour, relancez la commande d’installation : les deux commandes installent la dernière version.

Le faire tourner comme service#

Les serveurs milterMail filter : un protocole issu de Sendmail, également utilisé par Postfix, qui permet à un programme distinct d’inspecter chaque message pendant la session SMTP., HTTP, TCP et spamdLe démon de SpamAssassin. Son protocole est parlé par spamc, Exim, Haraka et d’autres clients SpamAssassin. écoutent sur 127.0.0.1 sauf si --host indique autre chose. Faites-les tourner sous un utilisateur sans privilèges, par exemple avec 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

L’unité complète et sa mise en place se trouvent dans le guide Postfix. Aucun des serveurs ne parle TLS : pour en joindre un depuis une autre machine, utilisez un réseau privé, un tunnel SSH ou un proxy inverse avec TLS.

Connecter votre serveur de messagerie#

Serveur de messagerieCommandePort
Postfix ou Sendmailspamscanner milter7831
Postfix, sans jamais refuser de courrierspamscanner filter, un filtre de contenuaucun
Exim, Haraka ou spamcspamscanner spamd783
Tout ce qui parle HTTPspamscanner http7832
Un client TCP simplespamscanner server7830
Un serveur de messagerie écrit en Node.jsimport SpamScanner from 'spamscanner'aucun

Les serveurs peuvent ajouter au message les en-têtes X-Spam-Flag, X-Spam-Score et X-Spam-Status, et la bibliothèque renvoie le score et chaque test déclenché. Guides : filtre antispam Postfix, autres serveurs de messagerie et l’API HTTP.

Garder les modèles de langage en local#

Un modèle de langage est facultatif et ne lit que les cas limites : le spam évident et le hamCourrier légitime : le contraire du spam. évident ne l’atteignent jamais. Avec OllamaUn programme qui télécharge et exécute des modèles de langage ouverts sur votre propre machine, avec une API HTTP., il tourne sur le même serveur, si bien qu’aucun message ne le quitte :

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

qwen3.5:4b tourne sur un CPU. Avec un fournisseur hébergé, les données personnelles sont retirées du message avant l’envoi. Modèles de langage

L’entraîner sur votre propre courrier#

Le modèle fourni est entraîné sur des jeux de données publics. Un modèle entraîné sur le courrier que reçoit votre serveur fait mieux, et il reste sur ce serveur :

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

Un fichier de modèle contient des comptes de caractéristiques hachées, pas de mots ni de texte de message. Entraînement

Prérequis#

Node.js 18 ou plus récent sous Linux, macOS ou Windows, ou rien du tout avec un binaire autonome. ClamAVUn moteur antivirus open source. Son démon, clamd, analyse les fichiers envoyés par un socket. et Ollama sont facultatifs et tournent comme services séparés.

Modifier cette page sur GitHub · Markdown ·