Rspamd — zaawansowany filtr antyspamowy dla Postfix
Opublikowano: 10 kwietnia 2026 · Kategoria: Hosting
SpamAssassin przez lata był standardem w filtracji spamu na serwerach Linux, ale jego wydajność (poniżej 50 wiadomości/sekundę) stała się problemem nawet dla mniejszych serwerów pocztowych. Rspamd to nowoczesna alternatywa napisana w C: przetwarza tysiące wiadomości na sekundę, ma wbudowany DKIM signing, filtr Bayes z Redis backendem i czytelny interfejs webowy. Ten artykuł pokazuje integrację Rspamd z Postfixem przez milter, konfigurację kluczowych modułów ochrony i trening filtru Bayes.
Instalacja Rspamd
Rspamd dystrybuuje oficjalne pakiety dla Ubuntu i Debian przez własne repozytorium. Wymaga Redis jako backend dla filtra Bayes i przechowywania statystyk:
# Dodaj repozytorium Rspamd curl https://rspamd.com/apt-stable/gpg.key | \ sudo gpg --dearmor -o /usr/share/keyrings/rspamd.gpg echo "deb [signed-by=/usr/share/keyrings/rspamd.gpg] https://rspamd.com/apt-stable/ $(lsb_release -cs) main" | \ sudo tee /etc/apt/sources.list.d/rspamd.list # Instaluj Rspamd i Redis sudo apt update sudo apt install -y rspamd redis-server # Uruchom usługi sudo systemctl enable --now rspamd redis-server # Sprawdz status sudo systemctl status rspamd rspamc stat # statystyki (baza Bayes, polaczenia)
Integracja z Postfixem przez milter
Milter (mail filter) to protokół pozwalający zewnętrznym programom przetwarzać wiadomości
przechodzące przez Postfix. Rspamd wystawia socket milter domyślnie w
/var/run/rspamd/rspamd.sock:
# /etc/postfix/main.cf - dodaj te linie
smtpd_milters = unix:/var/run/rspamd/rspamd.sock
non_smtpd_milters = unix:/var/run/rspamd/rspamd.sock
milter_default_action = accept # fallback gdy Rspamd niedostepny
milter_protocol = 6
# Zrestartuj Postfix
sudo systemctl restart postfix
# Test - wyslij email i sprawdz logi
sudo tail -f /var/log/mail.log | grep rspamd
# Powinnien pojawic sie wpis: "rspamd: action=no action, score=X.XX"
# Konfiguracja progow w /etc/rspamd/local.d/actions.conf
actions {
reject = 15; # >= 15 punktow: odrzuc wiadomosc
add_header = 6; # >= 6: dodaj X-Spam nagłówek
greylist = 4; # >= 4: greylisting
} DKIM signing — podpisywanie wychodzących emaili
DKIM (DomainKeys Identified Mail) to podpis kryptograficzny dodawany do każdego wychodzącego emaila. Weryfikuje, że wiadomość pochodzi z Twojej domeny i nie była modyfikowana w transporcie:
# Utwórz katalog na klucze DKIM
sudo mkdir -p /etc/rspamd/dkim
# Wygeneruj parę kluczy RSA 2048-bit
sudo rspamadm dkim_keygen \
-s default \
-d example.com \
-b 2048 \
-k /etc/rspamd/dkim/example.com.default.key \
> /tmp/dkim_record.txt
# Wyswietl rekord DNS do dodania
cat /tmp/dkim_record.txt
# default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgk..."
# Dodaj ten rekord TXT w panelu DNS swojej domeny
# Konfiguracja /etc/rspamd/local.d/dkim_signing.conf
path = "/etc/rspamd/dkim/${domain}.${selector}.key";
selector_map = "/etc/rspamd/dkim_selectors.map";
# Lub prosta konfiguracja dla jednej domeny:
# domain {
# example.com {
# path = "/etc/rspamd/dkim/example.com.default.key";
# selector = "default";
# }
# }
sudo systemctl restart rspamd
# Weryfikacja - wyslij email i sprawdz naglowek DKIM-Signature SPF, DMARC i moduły ochrony
Rspamd weryfikuje SPF i DMARC automatycznie przez moduły. Poniżej konfiguracja i whitelist dla zaufanych nadawców:
# Modul SPF - /etc/rspamd/local.d/spf.conf (domyslnie aktywny) # SPF_FAIL daje -5 punktow, SPF_PASS daje +1 # Modul DMARC - /etc/rspamd/local.d/dmarc.conf reporting = false; # nie wysylaj raportow DMARC (dla serwera prywatnego) # Whitelist - /etc/rspamd/local.d/whitelist.conf # Zaufane IP (zawsze 0 punktow) local_wl_ip = "10.0.0.0/8"; local_wl_ip = "192.168.0.0/16"; # Zaufane domeny nadawcow whitelist_from = [ "trusted-partner.com", "[email protected]", ]; # Blacklist IP - /etc/rspamd/local.d/rbl.conf # Zewnetrzne listy RBL (Real-time Blackhole List) rbls { spamhaus { symbol = "SPAMHAUS_ZEN"; rbl = "zen.spamhaus.org"; ipv4 = true; ipv6 = true; returncodes { SPAMHAUS_ZEN = "127.0.0.0/8"; } } }
Web interface i monitoring
Rspamd ma wbudowany interfejs webowy dostępny na porcie 11334. Wymaga hasła — zalecane jest przekierowanie przez Nginx z uwierzytelnieniem lub dostęp tylko przez tunel SSH:
| Cecha | Rspamd | SpamAssassin |
|---|---|---|
| Język implementacji | C + Lua | Perl |
| Wydajność | 10 000+ msg/s | ~40 msg/s |
| DKIM signing | Tak (wbudowany) | Nie (trzeba osobnego) |
| Web UI | Tak (wbudowany) | Nie |
| Redis backend | Tak (Bayes + statystyki) | Opcjonalnie |
| Reguły community | Rspamd rules | Bardzo bogata baza |
| Aktywny rozwój | Tak | Wolny |
# Ustaw haslo do web UI
rspamadm pw -q > /etc/rspamd/local.d/worker-controller.inc
# Wpisz haslo dwukrotnie, zostanie zapisane jako hash
# /etc/rspamd/local.d/worker-controller.inc (edytuj recznie):
password = "$2$HASH_HASLA";
enable_password = "$2$HASH_HASLA_ADMINA";
# Nginx proxy do web UI (opcjonalnie)
location /rspamd/ {
proxy_pass http://127.0.0.1:11334/;
proxy_set_header Host $host;
auth_basic "Rspamd";
auth_basic_user_file /etc/nginx/.htpasswd_rspamd;
}
# Ssh tunnel dla lokalnego dostepu (bezpieczniejsze)
# Na swoim komputerze:
# ssh -L 11334:localhost:11334 user@server -N
# Potem otworz http://localhost:11334 w przegladarce