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).

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
Następnie konfigurujemy raportowanie spamu przez Razor:

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

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 *.bakW /usr/local/etc/maia/maia.conf wprowadzamy ustawienia bazy danych:

Uruchamiamy skrypt testujący konfigurację i wymagania:
/usr/local/share/maia/scripts/configtest.pl
Aktualizujemy reguły SpamAssassina:
sa-update
su - vscan
/usr/local/share/maia/scripts/load-sa-rules.pl --debug
exit
Konfigurujemy aplikację webową Maia (przede wszystkim ustawienia bazy danych), dodajemy jej konfigurację do Apache i restartujemy serwer:


W /usr/local/etc/maia/maiad.conf ustawiamy m.in. nazwę hosta, po czym dodajemy Maię do startu systemu i uruchamiamy 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
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
Na koniec dodajemy do crontaba użytkownika vscan skrypty m.in. do aktualizacji reguł SpamAssassina:

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.