Konfiguracja Postscreen-ingu

Od wersji 2.8.x Postfix posiada wewnętrzny mechanizm ochrony przed spamem o nazwie postscreen. Mechanizm jest bardzo prosty: na początkowym etapie komunikacji SMTP zdalny serwer SMTP jest sprawdzany w bazach RBL. Jeżeli RBL zwróci informację, że rozmawiamy ze spammerem, to od razu połączenie TCP jest kończone. Tak więc nie są marnowane zasoby serwera na przyjmowanie spamów oraz ich sprawdzanie.

Oczywiście można dotarczyć postscreenowi własne bazy (głównie CIDR), które są sprawdzane na początku. Można w nich wpisać wyjątki, czy też umieścić adresy IP, z których nie chcemy przyjkmować poczty (np. Chiny, Korea). Więcej informacji jest dostępne pod adresem: http://www.postfix.org/POSTSCREEN_README.html.

Włączenie postscreeningu

W celu uruchomienia postscreeningu należy zmodyfikować pliki master.cf oraz main.cf. Dla master.cf są to zmiany:

smtp      inet  n       -       n       -       1       postscreen
#       -o soft_bounce=yes

zaś dla main.cf należy dopisać następującą konfigurację1:

## ======================================================================
##
##      POSTSCREENing
## Geylisting w oparciu o natywny mechanizm postfixa
##
## ======================================================================
##
postscreen_access_list =
        permit_mynetworks,
        cidr:/usr/local/etc/mail/local/postscreen-access.cidr,
        cidr:/usr/local/etc/mail/postscreen-access.cidr

postscreen_bare_newline_action = ignore
postscreen_bare_newline_enable = yes
postscreen_bare_newline_ttl = 30d
postscreen_blacklist_action = drop
postscreen_cache_cleanup_interval = 48h
postscreen_cache_map = btree:$data_directory/postscreen_cache
postscreen_cache_retention_time = 7d
postscreen_client_connection_count_limit = $smtpd_client_connection_count_limit
postscreen_command_count_limit = 20
postscreen_command_filter =
postscreen_command_time_limit = ${stress?10}${stress:300}s
postscreen_disable_vrfy_command = yes
postscreen_discard_ehlo_keyword_address_maps = $smtpd_discard_ehlo_keyword_address_maps
postscreen_discard_ehlo_keywords = $smtpd_discard_ehlo_keywords
postscreen_dnsbl_action = enforce
postscreen_dnsbl_reply_map = texthash:/usr/local/etc/mail/postscreen-dnsbl-reply.cf

postscreen_dnsbl_sites =
        zen.spamhaus.org*2
        bl.spamcop.net*1

postscreen_dnsbl_threshold = 2
postscreen_dnsbl_ttl = 1h
postscreen_dnsbl_whitelist_threshold = -2
postscreen_enforce_tls = $smtpd_enforce_tls
postscreen_expansion_filter = $smtpd_expansion_filter
postscreen_forbidden_commands = $smtpd_forbidden_commands
postscreen_greet_action = enforce
postscreen_greet_banner = pre-greet____please-wait
postscreen_greet_ttl = 1d
postscreen_greet_wait = ${stress?2}${stress:8}s
postscreen_helo_required = $smtpd_helo_required
postscreen_non_smtp_command_action = drop
postscreen_non_smtp_command_enable = yes
postscreen_non_smtp_command_ttl = 30d
postscreen_pipelining_action = enforce
postscreen_pipelining_enable = yes
postscreen_pipelining_ttl = 30d
postscreen_post_queue_limit = $default_process_limit
postscreen_pre_queue_limit = $default_process_limit
postscreen_reject_footer = $smtpd_reject_footer
postscreen_tls_security_level = $smtpd_tls_security_level
postscreen_upstream_proxy_protocol =
postscreen_upstream_proxy_timeout = 5s
postscreen_use_tls = $smtpd_use_tls
postscreen_watchdog_timeout = 10s
postscreen_whitelist_interfaces = static:all
proxy_write_maps = $smtp_sasl_auth_cache_name $lmtp_sasl_auth_cache_name $address_verify_map $postscreen_cache_map
postscreen_dnsbl_action = enforce
postscreen_greet_action = enforce
postscreen_non_smtp_command_enable = yes
postscreen_dnsbl_reply_map = texthash:/usr/local/etc/mail/postscreen-dnsbl-reply.cf
postscreen_cache_cleanup_interval = 24h

Utworzenie baz konfiguracyjnych dla postfixa

Kolejnym krokiem jest utworzenie baz konfiguracyjnych dla postfixa (warto skorzystać z gotowców poprzez unison):

cp ~wtp/scritps/postfix/postscreen-access.cidr /usr/local/etc/mail/
cp ~wtp/scritps/postfix/postscreen-dnsbl-reply /usr/local/etc/mail/
cp /tmp/ZACZYN.txt /usr/local/etc/mail/postscreen-access-local.cidr

W bazie lokal warto dodać adresy IP dla: localhost, sieci LAN, przyznanych adresacji publicznych, inne. Baza postscreen-access.cidr jest modyfikowana w repozytorium CVS, zatem aktualizacja plików mogłaby nadpisywać lokalne smaczki.

Po wykonaniu w/w modyfikacji oraz zmian pozostaje przeładować postfixa oraz podglądać logi jak zaczyna działać.

Jeżeli korzystamy z administracyjnego make'a

Jeżeli korzystamy ze skryptów make (katalog /var/db/admin-scripts/adm-mk/), to należy w lokalnym pliku __makefile.incl__ dodać bazy postscreena do sekcji:

   1 RELOAD= main.cf master.cf \
                access.pcre \
                body.pcre \
                client.cidr \
                filter_all.pcre \
                header.pcre \
                helo-access.pcre \
                postscreen-access.cidr \
                postscreen-access-local.cidr \
                postscreen-dnsbl-reply \

Zewnętrzne RBLe

W sprawdzaniu potencjalnych klientów serwera korzystam z serwisu ZEN.spamhaus.org. ZEN to połączenie wszystkich rodzajów RBLi Spamhaus-a w jedną całość. W zależności w ilu i/lub w jakich bazach występuje dany adres IP, zwracane są różne wartości adresu, np. 127.0.0.10, 127.0.0.4, 127.0.0.7 przez ZEN-a. Może to być użyteczne do statystyki, bo zasadniczo postscreen-a nie insteresuje, która konkretnie to baza włączyła alert, a ważne jest czy w ogóle.

Problem GPRSów

Jak można się domyślać, wszystkie sieci polskich operatorów komórkowych przyznawanych dla połączeń GPRS/EDGE/UMTS są na listach spamhaus-a. Dlatego też plik postscreen-access.cidr składa się głównie z adresacji (AS-ów) przypisanych do operatórów. Adresacje muszą być niestety przepuszczane. Istnieje ryzyko, że tą drogą może wedrzeć się zagrożenie. Ale innej rady nie ma - inaczej z mobilengo internetu NIE MA SZANS wysłać email.

Dostawcy hostingu

Analogiczny problem jest z dostawcami hostingu, np. Netart, home.pl, etc. Sieci adresowe przypisane do nich również są dopisane na liście wyjątków, skąd przyjmowana poczta elektorniczna nie podlega kontroli ze strony ZEN.


postfix,konfiguracja,postscreen,fitrowanie poczty


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

  1. Konfiguracja zapisana w pliku main.cf.tmpl w ramach skryptów administracyjnych. (1)

PostScreen (ostatnio edytowane 2015-07-15 19:21:09 przez wtps0n)