Przejdź do treści

Serwer poczty na FreeBSD 13 (cz. 7): antyspam i antywirus — SpamAssassin, ClamAV, Maia-Mailguard

Postfix i PostfixAdmin działają (część 6). Teraz ochrona poczty: filtr antyspamowy SpamAssassin (z bazą MySQL), antywirus ClamAV oraz Maia‑Mailguard — webowy panel kwarantanny oparty o amavisd‑new, dający użytkownikom kontrolę nad filtrowaniem ich poczty.

📅 Wersje z epoki (2021). Listy RBL, reguły i sieci (np. 37.187.124.0/24) pochodzą z projektu — dostosuj do własnej infrastruktury.

SpamAssassin i ClamAV

Oba pakiety zainstalowały się razem z Maia‑Mailguard (część 5).

Zainstalowany SpamAssassin.

Konfiguracja SpamAssassina to edycja /usr/local/etc/mail/spamassassin/local.cf — łączymy go z bazą maia (Bayes + lista AWL):

ifplugin Mail::SpamAssassin::BayesStore::MySQL
  bayes_sql_dsn DBI:mysql:maia
  bayes_sql_username vscan
  bayes_sql_password hasło
  auto_whitelist_factory
endif
ifplugin Mail::SpamAssassin::SQLBasedAddrList
  user_awl_dsn DBI:mysql:maia
  user_awl_sql_username vscan
  user_awl_sql_password hasło
  bayes_auto_expire 0
endif
internal_networks 37.187.124.0/24
trusted_networks 37.187.124.0/24

Konfiguracja SpamAssassina.

Następnie konfigurujemy raportowanie spamu przez Razor:

Komendy Razora.

Konfiguracja ClamAV sprowadza się do dodania usług do startu systemu, zmiany uprawnień katalogów i uruchomienia demonów:

Konfiguracja i uruchomienie ClamAV.

Maia-Mailguard

Maia zainstalowała się jeszcze przy konfiguracji Dovecota. Aby działała poprawnie, w php.ini dodajemy ścieżkę PEAR i restartujemy Apache:

include_path = ".:/usr/local/share/pear"

Następnie poprawiamy shebang skryptów Perla:

cd /usr/local/share/maia/scripts/
sed -i.bak 's|/usr/bin/perl.*$|/usr/bin/env perl|' *.pl
rm -f *.bak

W /usr/local/etc/maia/maia.conf wprowadzamy ustawienia bazy danych:

Ustawienia Maia-Mailguard (maia.conf).

Uruchamiamy skrypt testujący konfigurację i wymagania:

/usr/local/share/maia/scripts/configtest.pl

Sprawdzenie wymagań Maia-Mailguard.

Aktualizujemy reguły SpamAssassina:

sa-update
su - vscan
/usr/local/share/maia/scripts/load-sa-rules.pl --debug
exit

Aktualizacja reguł SpamAssassina.

Konfigurujemy aplikację webową Maia (przede wszystkim ustawienia bazy danych), dodajemy jej konfigurację do Apache i restartujemy serwer:

Ustawienia aplikacji Maia-Mailguard.

Konfiguracja Maia-Mailguard w Apache.

W /usr/local/etc/maia/maiad.conf ustawiamy m.in. nazwę hosta, po czym dodajemy Maię do startu systemu i uruchamiamy demona:

Edycja pliku maiad.conf.

Dodanie Maia-Mailguard do startu systemu i uruchomienie demona.

Wpięcie filtra w Postfix

Kierujemy pocztę przez filtr amavis. W /usr/local/etc/postfix/main.cf:

# Maia-Mailguard
content_filter=smtp-amavis:[127.0.0.1]:10024

Edycja pliku main.cf (content_filter).

W /usr/local/etc/postfix/master.cf dodajemy usługę smtp-amavis oraz reinjekcję na porcie 10025:

smtp-amavis unix - - n - 2 smtp
  -o smtp_data_done_timeout=2400
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes
  -o max_use=20
127.0.0.1:10025 inet n - n - - smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o smtpd_restriction_classes=
  -o smtpd_delay_reject=no
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks_style=host
  -o mynetworks=127.0.0.0/8
  -o strict_rfc821_envelopes=yes
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings

Edycja pliku master.cf (smtp-amavis).

Na koniec dodajemy do crontaba użytkownika vscan skrypty m.in. do aktualizacji reguł SpamAssassina:

Reguły crontab użytkownika vscan.

Co dalej

W części 8 (ostatniej) instalujemy webmail Roundcube, dokładamy ochronę Fail2Ban, uruchamiamy wszystko i przeprowadzamy testy całego systemu pocztowego — plus podsumowanie serii.