Description
Bulwark est un proxy/filtre anti-spam écrit en Go conçu pour s'intercaler entre un MTA (Postfix, Stalwart, Exim) et le serveur de boîtes (Dovecot). Il agit comme une couche de décision spam/ham moderne, légère et performante.
Fonctionnalités :
- Filtrage spam/phishing : basé sur règles + scoring (à vérifier avec la doc à jour)
- Analyse des headers : SPF, DKIM, DMARC, reverse DNS
- Listes RBL/DNSBL : consultation temps réel des listes noires connues
- Quarantaine : emails suspects mis de côté, consultables via interface
- API REST : soumission de feedback (ham/spam) pour entraînement
- Métriques Prometheus : export pour monitoring (Grafana)
- Performances : Go = faible empreinte mémoire, haute concurrence
Forces :
- Binaire unique Go : déploiement simple, pas de runtime à installer
- Performances : conçu pour gérer de gros volumes
- Moderne : API, métriques, conteneurisation native
- Open source : auditable, pas de dépendance cloud
Faiblesses :
- Communauté plus petite que Rspamd/SpamAssassin
- Moins de documentation mature
- Pas de webmail : c'est uniquement un filtre, à coupler
- Projet récent : moins battle-tested que Rspamd (15+ ans)
- Configuration : peut nécessiter ajustement fin
Installation
Via Docker
# docker-compose.yml
version: '3.8'
services:
bulwark:
image: ghcr.io/gomail/bulwark:latest
container_name: bulwark
restart: unless-stopped
environment:
- BULWARK_LISTEN=:8080
- BULWARK_QUARANTINE_DIR=/var/quarantine
volumes:
- ./config:/etc/bulwark
- ./quarantine:/var/quarantine
ports:
- "8080:8080"
Installation manuelle
# Prérequis : Go 1.20+ pour build, ou binaire pré-compilé git clone https://github.com/gomail/bulwark.git cd bulwark go build -o bulwark cmd/bulwark/main.go sudo mv bulwark /usr/local/bin/ # Config dans /etc/bulwark/bulwark.yaml sudo systemctl enable --now bulwark
Configuration
- Intégration Postfix : configurer Postfix pour relayer via
smtpd_milterounon_smtpd_miltervers Bulwark - RBL : activer les listes noires (Spamhaus, Spamcop, etc.) via DNS
- Quarantaine : définir la politique (suppression, mise en quarantaine, tag)
- Métriques : exposer
/metricsen Prometheus - Feedback loop : brancher une API pour entraînement incrémental
Alternatives
- Rspamd — Anti-spam de référence, écrit en C/Lua, très mature
- SpamAssassin — Le classique, plus lent mais éprouvé
- MailScanner — Ancien, encore utilisé en entreprise
- ClamAV + milter-greylist — Couche supplémentaire anti-malware/greylisting
Sécurité
- Couche en amont : ne pas exposer Bulwark directement sur internet
- mTLS : recommandé entre MTA et Bulwark en production
- Quarantaine chiffrée : chiffrer le répertoire de quarantaine
- Mises à jour RBL : Bulwark doit pouvoir interroger les listes, DNS sécurisé (DoT/DoH) recommandé
- Logs : ne pas logger en clair les corps d'emails (RGPD)
- Rate limiting : sur l'API de feedback
