Postfix – wybrane zabezpieczenia przed spamem
SPAM, SPAM, SPAM…
Spam jest obecnie jednym z największych utrapień administratorów na całym świecie – co do tego chyba nie trzeba nikogo przekonywać. I jak to zwykle bywa, każdy nowy rodzaj spamu powoduje powstanie nowych metod zwalczania niechcianej poczty i na odwrót.. I tak to dorobiliśmy się takich metod jak:
- greylisting
- weryfikacja adresu nadawcy
- rekory SPF
- RBL-e
- metody oparte o analizę treści
- …itd., itp.
W tym artykule przyjglądniemy się konfiguracji trzech z nich…
Greylisting
Technika greylistingu polega na chwilowym odrzuceniu przesyłki przez MTA i opiera się na założeniu że porządny serwer pocztowy i tak spróbuje za chwilę, natomiast wirus czy automat spamowy – nie. Na pierwszy rzut oka nie wygląda to może zbyt sensownie – ale działa! Co więcej, jest to technika nie obciążająca serwera pocztowego a wymagająca jedynie przechowywania mapy adresów na serwerze pocztowym.
Włączenie tej metody ochrony przed spamem w postfixie jest bardzo prosta. Po pierwsze trzeba zainstalować pakiet postgrey, który w większości dystrybucji dostępny jest w głównym repozytorium. Jeśli jesteśmy szczęśliwymi posiadaczami dystrybucji „enterprajzowej” to być może będziemy musieli poszukać go w jednym z wielu dodatkowych repozytoriów.
Po zainstalowaniu pakietu należy uruchomić demona postgrey i upewnić się że będzie uruchamiany zawsze podczas startu systemu. Następnie można – a czasem nawet trzeba – dostosować parametry w pliku konfiguracyjnym /etc/sysconfig/postgrey ustawiając odpowiednio czas po którym postgrey przepuści wiadomość:
OPTIONS="--unix=/var/spool/postfix/postgrey/socket --delay=60"
Ostatni element to poinformowanie postfixa, że powinien skorzystać z usługi postgrey. Przy założeniu że przepuszczamy całość ruchu pocztowego przez postgreya, dodajemy następujący wpis do ustawień restrykcji:
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, ... check_policy_service unix:postgrey/socket, ...
Na koniec wypada dodać, że postfix pozwala na wybiórcze przesyłanie maili do postgreya za pośrednictwem tabeli access. Po więcej szczegółów odsyłam do tej strony
Weryfikacja adresu nadawcy
Podczas transakcji SMTP Postfix może przeprowadzić weryfikację adresu nadawcy symulując proces wysyłania odpowiedzi na adres nadawcy. Innymi słowy MTA łączy się z serwerem pocztowym odpowiednim dla domeny nadawcy i rozpoczyna równoległą transację SMTP. Jako odbiorcę fikcyjnej wiadomości podaje konto nadawcy weryfikowanej przesyłki i po wysłaniu poleceń MAIL FROM: oraz RCPT TO: zrywa transakcję. Jeśli zdalny serwer zaakceptował połączenie – nadawca jest zweryfikowany pomyślnie. Jeśli nie – Postfix odpowiada tą samą klasą błedu (tymczasowy/permanentny). Aby nie weryfikować ponownie adresów, Postfix przetrzymuje adresy wraz z informacją o wyniku weryfikacji w odpowiedniej mapie (zalecany typ btree)
Za konfigurację tej funkcjonalności odpowiadają następujące parametry konfiguracyjne:
- address_verify_map – wskazujący na położenie pliku z mapą
- reject_unverified_sender – dodawany do listy restrykcji
Poniżej przedstawiona jest przykładowa konfiguracja:
address_verify_map = hash:/var/log/postfix-verify
smtpd_recipient_restrictions = permit_mynetworks,
check_policy_service unix:postgrey/socket,
reject_unverified_sender,reject_unauth_destination,
check_policy_service unix:private/policy
Sender Policy Framework
Na koniec ostatnia technika, która w gruncie rzeczy jest bardzie zabezpieczeniem przed wysyłaniem spamu z naszej domeny niż blokadą przychodzącego spamu. Jej działanie opiera się bowiem na umieszczeniu w strefie DNS informacji o tym, z których hostów dozwolone jest wysyłanie poczty z naszej domeny.
Poniżej przedstawiony jest przykładowyrekord TXT informujący o tym, że zdomeny vnet.com możliwe jest wysyłanie poczty wyłącznie z hostów określonych jako MX dla vnet.com:
vnet.com. IN TXT "v=spf1 mx -all"
Postfix sam w sobie nie potrafi przeglądać rekordów SPF. Do tego celu służy zewnętrzne narzędzi, np. postfix-policyd-spf-perl. Jak wskazuje nazwa, jest to narzędzie napisane w perlu i wymaga zainstalowania modułu Mail::SPF.
Po zainstalowaniu wymaganego modułu należy zciągnąć pakiet ze strony www.openspf.org/Software, umieścić go w katalogu /usr/lib/postfix/ np. pod nazwą policyd-spf-perl i dodać następujący wpis do pliku master.cf:
policy unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/lib/postfix/policyd-spf-perl
Ostatni etap to dodanie do restrykcji frazy:
check_policy_service unix:private/policy
Po przeładowaniu Postfixa nasz MTA powinien już sprawdzać wpisy SPF z DNSu
