Retour aux outils
CommunicationIntermédiaireOpen sourceAuto-hébergeable

Bulwark

**Solution anti-spam moderne** : à coupler en amont d'un serveur mail (Postfix, Stalwart) pour filtr

MAJ 2026-06-14
Bulwark
Site officiel Code source★ 0

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.

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

  1. Intégration Postfix : configurer Postfix pour relayer via smtpd_milter ou non_smtpd_milter vers Bulwark
  2. RBL : activer les listes noires (Spamhaus, Spamcop, etc.) via DNS
  3. Quarantaine : définir la politique (suppression, mise en quarantaine, tag)
  4. Métriques : exposer /metrics en Prometheus
  5. Feedback loop : brancher une API pour entraînement incrémental

Alternatives

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

Ressources