Изначально в качестве greylist использовались программы postgrey и policyd, при чем последний может хранить собранную статистику в SQL базе и зарекомендовал себя очень не плохо. Начиная с версии 2.8 в postfix появился демон postscreen, который принимает все входящие соединения, производит набор проверок и либо отбрасывает соединения, либо передает их дальше на реальный smtp-демон postfix. Основное назначение postscreen — борьба с «зомби» (они же спам-ботнет). Более подробно о принципе работы postscreen, его проверках и т.д. можно прочитать на официальной странице
В postfix версии 2.8.7 и ниже, при использовании postscreen наблюдается проблема, описанная в статье Postscreen и ошибка All server ports are busy. Решения этой проблемы в виде изменения/добавления каких-либо параметров или патча не удастся. Решением может послужить установка нового релиза демона postfix.
И так, перейдем к настройке
Для включения механизма серых списков необходимо в файле master.cf нужно закомментировать строку:
1 2 3 |
smtp inet n - n - - smtpd |
Затем раскомментировать строки:
1 2 3 4 5 6 |
smtp inet n - n - 1 postscreen smtpd pass - - n - - smtpd dnsblog unix - - n - 0 dnsblog tlsproxy unix - - n - 0 tlsproxy |
Далее в файле main.cf добавить следующее параметры
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
postscreen_access_list = permit_mynetworks, cidr:/etc/postfix/access/client_access.cidr # реакция postscreen на адрес, помещенный в черный список postscreen_blacklist_action = enforce # порог веса, выше которого соединения будут блокироваться postscreen_dnsbl_treshold = 3 # список dnsbl-серверов с весами postscreen_dnsbl_sites = b.barracudacentral.org=127.0.0.[2..11]*2 dialups.mail-abuse.org=127.0.0.[2..11]*2 bl.spamcop.net=127.0.0.[2..11]*2 zen.spamhaus.org=127.0.0.[2..11]*2 cbl.abuseat.org=127.0.0.[2..11]*2 sbl.spamhaus.org=127.0.0.[2..11]*2 cbl.abuseat.org=127.0.0.[2..11]*2 zombie.dnsbl.sorbs.net=127.0.0.[2..11]*2 work.rsbs.express.ru=127.0.0.[2..11]*2 dnsbl.sorbs.net=127.0.0.[2..11]*1 dsn.rfc-ignorant.org=127.0.0.[2..11]*2 dul.dnsbl.sorbs.net=127.0.0.[2..11]*2 sbl-xbl.spamhaus.org=127.0.0.[2..11]*2 ix.dnsbl.manitu.net=127.0.0.[2..11]*2 combined.rbl.msrbl.net=127.0.0.[2..11]*2 rabl.nuclearelephant.com=127.0.0.[2..11]*2 zen.spamhaus.org=127.0.0.[2..11]*3 b.barracudacentral.org=127.0.0.[2..11]*2 # реакция postscreen на адрес, получивший вес больше порога postscreen_dnsbl_action = enforce # сообщение о паузе перед началом SMTP-диалога postscreen_greet_banner = Greylist in progress. Please wait... # реакция postscreen на адреса, начавшие диалог до завершения паузы postscreen_greet_action = drop # настройка паузы перед началом SMTP-диалога postscreen_greet_wait = ${stress?4}${stress:7}s # размер очередей postscreen_post_queue_limit = 300 postscreen_pre_queue_limit = 300 |
В файле client_access.cidr можно указать постоянный белый/черный список IP-адресов в виде:
1 2 3 4 5 6 |
IP.AD.DR.ES1 permit IP.AD.DR.ES2 reject IP.AD.DR.ES3 dunno |
После чего необходимо перезапустить демон MTA