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ôle | Pour l’activer | Ce qu’il envoie |
|---|---|---|
| SPF, DKIM, DMARC, ARC | --auth | Des requêtes DNS sur les enregistrements de l’expéditeur |
| Listes de blocage DNS | --dnsbl, --uribl | L’adresse IP du client et les domaines des liens, en requêtes DNS |
| ClamAV | --clamav | Les pièces jointes, à votre propre clamd |
| Un modèle de langage | --llm | Un 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#
npm install --global spamscannerOu le binaire autonome, avec Node.js et le modèle intégrés :
curl -fsSL https://github.com/spamscanner/spamscanner/releases/latest/download/install.sh | bashLe 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 :
[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=yesL’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 messagerie | Commande | Port |
|---|---|---|
| Postfix ou Sendmail | spamscanner milter | 7831 |
| Postfix, sans jamais refuser de courrier | spamscanner filter, un filtre de contenu | aucun |
| Exim, Haraka ou spamc | spamscanner spamd | 783 |
| Tout ce qui parle HTTP | spamscanner http | 7832 |
| Un client TCP simple | spamscanner server | 7830 |
| Un serveur de messagerie écrit en Node.js | import 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 :
ollama pull qwen3.5:4b
spamscanner milter --llm ollama --llm-model qwen3.5:4bqwen3.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 :
spamscanner train --spam ~/Maildir/.Junk --ham ~/Maildir/cur --out /var/lib/spamscanner/model.json
SPAMSCANNER_MODEL=/var/lib/spamscanner/model.json spamscanner milterUn 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.