LINUX.ORG.RU

Postfix применение smtpd_restrictions, вопрос по контексту применения

 


0

1

Уважаемые коллеги, проясните пожалуйста вот такую ситуацию с конфигурированием ограничений в Postfix:

В сети очень много статей/рекомендаций на тему использования ограничивающих команд в конфине постфикса в опциях:
smtpd_recipient_restrictions =
smtpd_client_restrictions =
smtpd_sender_restrictions =
smtpd_data_restrictions =
smtpd_helo_restrictions =
smtpd_relay_restrictions =

Так вот мне непонятен один момент. Например многие пихают ограничение reject_unlisted_recipient в опцию smtpd_client_restrictions, хотя в документации постфикса явно указано, что контекст использования данного ограничения это опция smtpd_recipient_restrictions. Проясните пожалуйста, определены ли жёстко контексты для ограничений, или все ограничения можно использовать в любой из шести опций? Видел как то статью, в которой все ограничения были внесены в опцию smtpd_helo_restriction, якобы из-за того, что она первая в цепочке проверки. Думаю это не правильно, но могу и ошибаться.

И второй вопрос, подскажите порядок прохождения проверки письма по этим шести опциям?

Спасибо заранее

★★

В документации есть ответ на второй вопрос:

Early Postfix versions evaluated SMTP access restrictions lists as early as possible. The client restriction list was evaluated before Postfix sent the «220 $myhostname...» greeting banner to the SMTP client, the helo restriction list was evaluated before Postfix replied to the HELO (EHLO) command, the sender restriction list was evaluated before Postfix replied to the MAIL FROM command, and so on. This approach turned out to be difficult to use.

Current Postfix versions postpone the evaluation of client, helo and sender restriction lists until the RCPT TO or ETRN command. This behavior is controlled by the smtpd_delay_reject parameter. Restriction lists are still evaluated in the proper order of (client, helo, etrn) or (client, helo, sender, relay, recipient, data, or end-of-data) restrictions. When a restriction list (example: client) evaluates to REJECT or DEFER the restriction lists that follow (example: helo, sender, etc.) are skipped.

И, фактически, он содержит ответ на первый. Раньше проверки были строго в момент получения той или иной команды SMTP-протокола от клиента, и информация на момент проверки была ограничена. Сейчас по умолчанию smtpd_delay_reject и на момент выполнения проверок клиент уже сообщил всё.

mky ★★★★★ ()
Ответ на: комментарий от mky

И, фактически, он содержит ответ на первый. Раньше проверки были строго в момент получения той или иной команды SMTP-протокола от клиента, и информация на момент проверки была ограничена. Сейчас по умолчанию smtpd_delay_reject и на момент выполнения проверок клиент уже сообщил всё

Все осталось по прежнему. Проверки идут по ходу сессии.

 smtpd_delay_reject 
не дает дать отлуп до конца ВСЕХ проверок, если даже совпадения были найдены. Опция полезна для админа. Изучать поведение почтовика. Для простого понятия работы рестриткшенов есть старая ссылочка:

http://freesource.info/wiki/Dokumentacija/Postfix/antispam/restrictions

Bootmen ★★☆ ()
Последнее исправление: Bootmen (всего исправлений: 1)
Ответ на: комментарий от Bootmen

Спасибо за ссылку. Изучаю.
Вопрос на близкую тему. В моих логах полно записей типа:

Dec 20 18:06:51 gate postfix/smtpd[6233]: connect from 42-200-201-226.static.imsbiz.com[42.200.201.226]
Dec 20 18:06:52 gate postfix/smtpd[6233]: disconnect from 42-200-201-226.static.imsbiz.com[42.200.201.226] helo=1 auth=0/1 quit=1 commands=2/3

и их ОЧЕНЬ много. Как вы с этим боретесь? Я добавил в fail2ban правило, и баню за часто повторяющиеся попытки на 3 дня. Единичные случаю пропускаю. Я так понимаю это боты пробуют на зуб relay. Бесит что в логе такого мусора добрых 60-70 процентов.

Vint ★★ ()

иногда можно пихать куда угодно, просто надо знать, что и когда проверяется


telnet 192.168.0.2 25                           # Comments
Trying 192.168.0.2...
Connected to 192.168.0.2 (192.168.0.2).
Escape character is '^]'.
220 mail.example.com ESMTP Postfix              # <-smtp_client_restrictions
HELO mail.example.com                           # <-smtp_helo_restrictions
250 mail.example.com                            #
MAIL FROM:<ned@example.com>                     # <-smtp_sender_restrictions
250 2.1.0 Ok                                    #
RCPT TO:<ned@example.com>                       # <-smtp_recipient_restrictions
250 2.1.5 Ok                                    #
DATA                                            # <-smtp_data_restrictions
354 End data with <CR><LF>.<CR><LF>             #
To:<ned@example.com>                            # <-header_checks
From:<ned@example.com>                          #
Subject:SMTP Test                               #
This is a test message                          # <-body_checks
.                                               #
250 2.0.0 Ok: queued as 301AE20034
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
constin ★★★ ()
Ответ на: комментарий от Vint

Dec 20 18:06:52 gate postfix/smtpd[6233]: disconnect from 42-200-201-226.static.imsbiz.com[42.200.201.226] helo=1 auth=0/1 quit=1 commands=2/3
и их ОЧЕНЬ много. Как вы с этим боретесь?

Для вашего случая. в main.cf

smtpd_client_restrictions = permit_sasl_authenticated,
			check_client_access regexp:/etc/postfix/regexp_client,
                           ...
Содержание файла /etc/postfix/regexp_client
/([0-9]*\.){4}(.*\.){3,}.*/i               553 SPAM_ip-add-rr-ess_networks
/client.*\..*\..*/i                        553 SPAM_CLIENT
/cable.*\..*\..*/i                         553 SPAM_CABLE
/pool.*\..*\..*/i                          553 SPAM_POOL
/.*\.pppool\..*/i                          553 SPAM_POOL1
/[0-9]*-[0-9]*-[0-9]*-[0-9]*/    553 SPAM_POOL2
/dial.*\..*\..*/i                          553 SPAM_DIAL
/ppp.*\..*\..*/i                           553 SPAM_PPP
/dslam.*\..*\..*/i                         553 SPAM_DSLAM
/dhcp.*\..*\..*/i                          553 SPAM_DHCP
/[\.-]dsl.*\..*\..*/i                      553 SPAM_DSL
/[ax]dsl.*\..*\..*/i                       553 SPAM_XDSL
/ppoe[0-9]+_[0-9]+_[0-9]+_[0-9]+\./     553 SPAM_ppoe
/\.ppp-pool\./  553 SPAM_ppp-pool
/server[s]*\.com$/      553     SPAM_servers
/\.dial-up\./   553 SPAM_dial-up
/\.dns/ 553 SPAM_from_DNS
/dns\./ 553 SPAM_from_dNs
/\.dyn\./       553 SPAM_IP
/\.dynamic\./   553 SPAM_IP
/-dynamic\./    553 SPAM_IP
/^nat[0-9]*\./  553 SPAM_nat
/^nat-.*/       553 SPAM_NAT
/\.user[0-9]*\./        553 SPAM_USER
/^web[0-9]*\..*/i       553 SPAM_web
/^vpn[0-9]*-/   553 SPAM_vpnXXX
/^dyn-[0-9]+-[0-9]+\./  553 SPAM_dyn
/.*-[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\..*/i    553 SPAM_host-ip
/.*[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\..*/i    553 SPAM_host-ip-1
/.*[0-9]*\.[0-9]*\.[0-9]*\.[0-9]-/    553 SPAM_host-ip
/[0-9]*-[0-9]*\.[0-9]*-[0-9]*\./        553 SPAM_IP-a
/.*[0-9]*\.[0-9]*-[0-9]*-[0-9]*\..*/i   553 SPAM_ip
/[0-9]*\.[0-9]*-[0-9]*-[0-9]*\..*/i     553 SPAM_ip-2
/.*[0-9]*-[0-9]*-[0-9]*-.*/i    553 SPAM_IP
/^.*[0-9]{3}-[0-9]{3}\..*/      553 SPAM_IP-b
/^.*[0-9]{12}.*/        553 SPAM_IP-c
/.*-[0-9]+-[0-9]+\..*/  553 SPAM_IP-C
/[0-9]+\.[0-9]+\.[0-9]+-[0-9]+\..*/     553 SPAM_ip
/^[0-9]*-[0-9]*-[0-9]*\./       553 SPAM_IP
/[a-z][0-9]{2}\.[0-9]{3}\./     553 SPAM_IP-e
/[0-9]{9}\./    553 SPAM_IP-9
/[0-9]{10}\./   553 SPAM_IP-10
/^[0-9]{11}[a-z]*\./    553 SPAM_IP11
/^ip[0-9]+-[0-9]+\./    553 SPAM_ip11-11
/-[0-9]+\.[0-9]+\./     553 SPAM_IP-a
/[0-9]+-[0-9]+\./       553 SPAM_IP-b
/^[0-9]+\.[0-9]+\..*\.ru$/      553 SPAM_IPXX
/broadband/    553 SPAM_broadband
/.*\..*\.shawcable\.net/i                  553 SPAM_host-shawcable-net
/.*([0-9]*\.){4}cableonline\.com\.mx/i     553 SPAM_IP-cableonline-com-mx
/(.*\.){2}maxonline\.com\.sg/i             553 SPAM_host-maxonline-com-sg
/.*-.*(\..*){2}\.ne\.jp$/i                  553 SPAM_host-ne-jp
/[0-9]*\..*\.ne\.jp$/i                      553 SPAM_h09t-ne-jp1
/(.*\.){3}ad\.jp$/i                         553 SPAM_host-ad-jp2
/\.chello\.../i                   553 SPAM_host-chello
/homeuser.*\.ccl\.perm\.ru/i    553 SPAM_ccl-perm-ru
/ipa.*\.tellas\.gr/i    553 SPAM_ipa-tellas-gr
/[0-9]*\.[0-9]*\.fix-addr\.vsi\.ru/     553 SPAM_fix-addr-vsi-ru
//a[0-9]*\.sub[0-9]*\.net[0-9]*\.udm\.net$/      553 SPAM_ a-sub-net-udm-net
/[0-9]+\.dedibox\.fr/   553 SPAM_dedibox-fr
/^srv.*\.jino\.ru$/     553 SPAM_jino-ru
/dedicated[0-9]*\.tchmachines\.com/     553 SPAM_dedicated-tchmachines-com
/webmail\./     553 SPAM_WEB
/garant.*\./    553 SPAM_bgaranty
/sender[0-9]*\.ru/      553 SPAM_sd
/seminar/       553 SPAM_semnr
Файл неполный. Добавляйте свои правила. Счас коллеги раскритикуют меня за раздутый файл. Типа можно регеспы сделать в одну строку. По мне так читабельнее и ошибки видно. А Постфик не вспотеет_ :)

Bootmen ★★☆ ()
Ответ на: комментарий от Bootmen

О! Спасибо! Про регулярки в чеклисте я думал в последнюю очередь. Спасибо за хорошую коллекцию регулярок. Переберу, если что дополню.
А по поводу чужого мнения, каждый делает так как ему нужно/хочется, мы свободные люди. В конце концов это работает, что ещё нужно.

Vint ★★ ()
Ответ на: комментарий от Vint

На здоровье. Честно слово треть регулярок я в свое время слизал в Инете.

Коды отбоя типа:

553 SPAM_ip11-11

предназначены только для админа. Чтобы в отчете (например в LogWatch) увидеть срабатывание того или иного шаблона. Мнение спамерюги получившего такой странный отлуп- меня не интересует. _:)

Bootmen ★★☆ ()