Всем добрый деньПрошу, чтобы кто-нибудь помог разобраться с применением smtpd_*_restrictions.
1. Вопрос первый
Я знаю, что порядок расположения ограничений в разделах smtpd_*_restrictions играет важную роль. Это и понятно, - если получен reject или OK, то дальнейшие правила не применяются.
Также, как я понял, не играет роли, как располагать правила - каждый в своем разделе или все пихнуть в smtpd_recipient_restrictions - все равно будет играть роль порядок расположения правил. Но, нагляднее располагать каждое ограничение в "своем" разделе. При этом надо включать опцию:
smtpd_delay_reject = yes
Чтобы Postfix, принимая письмо, дошел до smtpd_recipient_restrictions и применил правила оттуда.
По такой логике запись вида:
++++++++++++++++++++++
smtpd_client_restrictions =
smtpd_helo_restrictions =
smtpd_sender_restrictions =
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_unauth_pipelining,
check_client_access hash:/usr/local/etc/postfix/access_client,
check_client_access pcre:/usr/local/etc/postfix/access_client.pcre,
reject_unknown_client_hostname,
check_helo_access hash:/usr/local/etc/postfix/access_helo,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname,
check_sender_access hash:/usr/local/etc/postfix/access_sender,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unverified_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unverified_recipient,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client combined.njabl.org,
reject_rbl_client dnsbl.njabl.org,
reject_rbl_client dul.ru,
reject_rbl_client dynablock.njabl.org,
reject_rbl_client opm.blitzed.org,
reject_rhsbl_client blackhole.securitysage.com,
reject_rhsbl_client rhsbl.sorbs.net,
reject_rhsbl_sender blackhole.securitysage.com,
reject_rhsbl_sender rhsbl.sorbs.net,
permit
++++++++++++++++++++++
аналогична этой записи:
++++++++++++++++++++++
smtpd_client_restrictions =
reject_unauth_pipelining
check_client_access hash:/usr/local/etc/postfix/access_client
check_client_access pcre:/usr/local/etc/postfix/access_client.pcre
reject_unknown_client_hostname
reject_rbl_client cbl.abuseat.org
reject_rbl_client combined.njabl.org
reject_rbl_client dnsbl.njabl.org
reject_rbl_client dul.ru
reject_rbl_client dynablock.njabl.org
reject_rbl_client opm.blitzed.org
reject_rhsbl_client blackhole.securitysage.com
reject_rhsbl_client rhsbl.sorbs.net
smtpd_helo_restrictions =
check_helo_access hash:/usr/local/etc/postfix/access_helo
reject_invalid_helo_hostname
reject_non_fqdn_helo_hostname
reject_unknown_helo_hostname
smtpd_sender_restrictions =
check_sender_access hash:/usr/local/etc/postfix/access_sender
reject_non_fqdn_sender
reject_unknown_sender_domain
reject_unverified_sender
reject_rhsbl_sender blackhole.securitysage.com
reject_rhsbl_sender rhsbl.sorbs.net
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
reject_non_fqdn_recipient
reject_unknown_recipient_domain
reject_unverified_recipient
++++++++++++++++++++++
Подтвердите, пожалуйста, или опровергните эти мои мысли?
2. Вопрос 2ой
Если ответ на первый вопрос "да, все верно", то объясните мне один момент, над которым я уже голову сломал:
перечитав кучу конфигов я замечал, что одни и те же опции указываются в разных разделах, например reject_unauth_pipelining люди указывают и в smtpd_recipient_restrictions и в smtpd_sender_restrictions. Но ведь это же нелогично - reject_unauth_pipelining актуальна только при коннекте, т.е. при smtpd_client_restrictions, когда удаленный сервер начинает "говорить" слишком рано.
Аналогичная ситуация с permit_sasl_authenticated и permit_mynetworks - они указываются во всех разделах, хотя согласно книге "The Book of Postfix" (авторы: Ralf Hildebrandt, Patrick Koetter) так быть не должно.
А permit_sasl_authenticated должен быть актуален только на этапе smtpd_sender_restrictions, разве нет?
Т.е. мой вопрос в том, правильно ли задавать опции только в тех разделах, в которых они должны быть?
3. Вопрос 3ий
Вот мой конфиг, - приведены опции, касающиеся ограничений:
++++++++++++++++++++++
strict_rfc821_envelopes = yes
disable_vrfy_command = no
smtpd_helo_required = yes
smtp_always_send_ehlo = yes
smtp_never_send_ehlo=no
smtpd_delay_reject = yes
smtpd_reject_unlisted_sender = yes
smtpd_reject_unlisted_recipient = yes
address_verify_sender = <>
allow_percent_hack=no
show_user_unknown_table_name=no
...
smtpd_client_restrictions=
permit_sasl_authenticated
check_client_access hash:/usr/local/etc/postfix/checks/access_client
check_client_access pcre:/usr/local/etc/postfix/checks/access_client.pcre
permit_mynetworks
reject_rbl_client bl.spamcop.net
reject_rbl_client dnsbl.sorbs.net
reject_unauth_pipelining
reject_unknown_client_hostname
reject_unknown_reverse_client_hostname
smtpd_helo_restrictions =
permit_mynetworks,
reject_invalid_helo_hostname,
smtpd_etrn_restrictions =
permit_mynetworks,
reject
smtpd_sender_restrictions =
permit_mynetworks,
check_sender_access hash:/usr/local/etc/postfix/checks/access_sender,
permit_sasl_authenticated,
reject_authenticated_sender_login_mismatch,
reject_sender_login_mismatch,
reject_unauthenticated_sender_login_mismatch,
permit_sasl_authenticated,
reject_unknown_sender_domain,
reject_unlisted_sender,
reject_non_fqdn_sender,
check_sender_access hash:/usr/local/etc/postfix/checks/access_sender
smtpd_recipient_restrictions=
permit_mynetworks,
#check_policy_service inet:127.0.0.1:10023,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unlisted_recipient,
permit_sasl_authenticated,
reject_unauth_destination,
permit_auth_destination,
check_recipient_access hash:/etc/aliases
smtpd_data_restrictions=
permit_mynetworks,
reject_unauth_pipelining,
reject_multi_recipient_bounce
++++++++++++++++++++++
Как видите, у меня также permit_sasl_authenticated указан в двух местах.
Если уберу из smtpd_client_restrictions, постфикс разрывает соединение при попытке отправить письмо из почтового клиента (любого)
Если уберу из smtpd_recipient_restrictions, то получаю ошибку Relay access Denied.
Меня инетресует "правильность". Если буду знать, как правильно указывать, то буду шаманить с порядком опций и их количеством, поэтому задаю эти вопросы. Хотя при этом, мой почтовик работает замечательно, жалоб от клиентов не поступало. Uptime на данный момент уже месяц... Просто меня злит, что я не понимаю сути, хотя по внешним признакам я получил то, что хотел.
Раздел, посвященный авторизации (http://www.postfix.org/SASL_README.html) читал. Также читал ман и многое многое, в том числе и книгу.
Со всем, вроде разобрался, все понятно, но ограничения сварили кашу в моей голове, прошу помощи, чтобы разобраться.
Заранее спасибо за ответы.