HestiaCP – integracja z RSPAMD

HestiaCP – integracja z RSPAMD

Cześć. Wyobraź sobie sytuację, w której masz swój pierwszy serwer pod hostowanie swoich projektów. W tym wypadku zastosowany jest panel HestiaCP. Ten panel oferuje ogrom możliwości pod względem konfiguracji ale Ty korzystasz głównie z WWW i poczty.

No właśnie – poczta. Dostajesz coraz więcej SPAMu przez co niestety odczuwasz, że obecna konfiguracja nie spełnia Twoich oczekiwań. Sprawdzasz więc informacje o tym co wykorzystuje HestiaCP – czyli Exim 4, Spamassasin, Dovecot. Gdzieś też obiło Ci się o uszy, że jest coś takiego jak RSPAMD ale dziwnie – Hestia nie posiada wsparcia dla tego oprogramowania. Lubisz „majsterkowanie” więc zaczynasz działać.

Tak właśnie wyglądało to u mnie przez ostatnie kilka tygodni. Otrzymywałem dość dużą ilość SPAMu przez co stwierdziłem, że muszę coś z tym zrobić. Zacząłem od czytania o różnicach między SpamAssasin i RSPAMD. Byłem zszokowany, że w sumie mimo restrykcyjnej (w moim odczuciu) konfiguracji SA – dalej otrzymywałem niechciane wiadomości. Dodatkowo – brakowało mi też wygodnego GUI do kontroli wychodzącego i przychodzącego ruchu. Korzystając z HestiaCP na codzień stwierdziłem, że muszę coś z tym zrobić i rozpocząłem integrację.

Jak to zrobiłem?

  1. Zainstalowałem RSPAMD korzystając z APT
    apt-get install rspamd
  2. Do RSPAMD zintegrowany jest także REDIS (możesz go później wykorzystać także do innych celów) więc po instalacji paczek – zmieniłem jego konfigurację pod lepszą obsługę ze strony RSPAMD w /etc/redis/redis.conf:
    maxmemory 500mb
    maxmemory-policy volatile-ttl

    (ustawienie volatille-ttl usuwa klucze o najkrotszym czasie wygasania)
  3. Zrestartowałem REDIS oraz odblokowałem start REDISa i RSPAMD w systemctl:
    systemctl restart redis.service
    systemctl enable redis.service
    systemctl enable rspamd.service
  4. Teraz pora na konfigurację EXIM. Przechodzę więc do pliku /etc/exim4/exim4.conf.template, który najpierw kopiuję.
    cp /etc/exim4/exim4.conf.template /etc/exim4/exim4.conf.template.dist
    Dodaję zmienną odpowiadającą za RSPAMD na początku pliku, pod SPAMASSASIN, który ustawiam na „no”.
    Powinno to wyglądać tak:
    SPAMASSASIN = no
    RSPAMD = yes
  5. Zmieniłem też aplikację, do której łączy się Exim pod względem sprawdzania SPAMu zmieniając SPAMASSASIN na RSPAMD. Zamiast:
    .ifdef SPAMASSASIN
    spamd_address = 127.0.0.1 783
    .endif

    dałem:
    .ifdef RSPAMD
    spamd_address = 127.0.0.1 11333 variant=rspamd
    .endif
  6. Edytuję też acl_check_rcpt, podmieniamy SPAMASSASIN na RSPAMD, czyli zmieniam:
    Konfiguracja acl_check_rcpt w Exim dla Spam Assassinna:
    Konfiguracja acl_check_rcpt w Exim dla RSPAMD
  7. Po tym zapisuję konfigurację i restartuję Exim:
    systemctl restart exim4.service
  8. Przechodzę też do konfiguracji WebGUI wpisując w konsoli:
    rspamadm configwizard
    otrzymując taki „ekran powitalny”:
    Ekran powitalny konfiguracji RSPAMD
  9. Klikam „Y” na pytanie czy chcę kontynuować.
  10. Ustawiam hasło
    Konfiguracja hasła dla WebGUI RSPAMD
  11. Ustawiam serwery REDIS korzystając z domyślnych ustawień (na ten moment nie utworzyłem nowej bazy danych tylko pod RSPAMD):
    Konfiguracja Redis dla RSPAMD
  12. Wyłączam podpisywanie DKIM (w tym momencie jeszcze nie jest to potrzebne):
    Konfiguracja podpisywania DKIM
  13. Na koniec otrzymuję podsumowanie konfiguracji:
    Podsumowanie konfiguracji RSPAMD
  14. Zapisuję konfigurację i restartuję rspamd:
    systemctl reload rspamd.service
  15. Na koniec dodaję sobie możliwość wejścia do WebGUI. Kopiuję więc domyślny szablon nginx dla stron WWW:
    cp /usr/local/hestia/data/templates/web/nginx/default.tpl /usr/local/hestia/data/templates/web/nginx/rspamd.tpl
    cp /usr/local/hestia/data/templates/web/nginx/default.stpl /usr/local/hestia/data/templates/web/nginx/rspamd.stpl
  16. W tym szablonie dodaję odnośnik wczytujący nam RSPAMD po /rspamd/ pod location @fallback:
    location /rspamd/ {
    proxy_pass http://localhost:11334/;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    Te konfigurację zapisuję zarówno w redis.tpl jak i redis.stpl aby wszystko działało jak trzeba.
    Tak wygląda to w przypadku mojej konfiguracji:
  17. Zmieniam szablon głównej domeny serwerowej na rspamd:
    v-change-web-domain-proxy-tpl admin serwer.example.com redis yes
    Przy czym argument „yes” na samym końcu restartuje serwer WWW.

Gotowe. Rspamd został właśnie przystosowany do obsługi poczty w HestiaCP.

BARDZO WAŻNE: Ta konfiguracja nie jest oficjalnie wspierana przez twórcę HestiaCP. Edytując pliki konfiguracyjne możesz wykluczyć swój serwer z oficjalnych aktualizacji udostępnianych przez twórcę oprogramowania.