Добрый день!
Коллеги, хочу сделать список исключений, содержащий адреса локальных пользователей для которых входящая почта не должна никоим образом проверяться. Я сделал так, но не работает если не прав поправьте:
Содержимое main.cf
# Manual restriction class
smtpd_restriction_classes = permit_rcpto
permit_rcpto = permit
# Police rule for user out WORLD(SMTP connections from) #
smtpd_client_restrictions =
check_client_access hash:/etc/postfix/policy/rbl_exceptions, hash:/etc/postfix/policy/access, hash:/etc/postfix/policy/rcpto_exeptions
check_recipient_access hash:/etc/postfix/policy/recipient_access, hash:/etc/postfix/policy/rcpto_exeptions
check_sender_access hash:/etc/postfix/policy/sender_checks, hash:/etc/postfix/policy/rcpto_exeptions
permit_sasl_authenticated
permit_mynetworks
reject_rbl_client bl.spamcop.net
reject_rbl_client sbl.spamhaus.org
reject_rhsbl_client rhsbl.ahbl.org
reject_rhsbl_client bl.spamcop.net
reject_rhsbl_client sbl.spamhaus.org
check_client_access regexp:/etc/postfix/policy/client_checksСодержимое файла rcpto_exeptions
username@domain.com permit_rcpto
username1@domain.com permit_rcpto
username2@domain.com permit_rcpto
в вашем конфиге смысла smtpd_restriction_classes не вижу
на момент smtpd_client_restrictions емейлы еще не доступны.в общем случае порядок проверок: smtpd_client_restrictions, smtpd_helo_restrictions, smtpd_sender_restrictions, smtpd_recipient_restrictions, smtpd_data_restrictions
проверка правил идет сверху вниз по цепочке,
если в правиле срабатывает условие, то дальнейшие правила не обрабатываются.check_client_access - проверка адреса клиента
check_sender_access - проверка емейла отправителя
check_recipient_access - проверка емейла получателяпроще всего перенести ВСЕ правила в smtpd_recipient_restrictions
на этом этапе возможна проверка адреса клиента, его приветствия, емейлов отправителя и получателя. поэтому тупо ставим правило первым :) что гарантирует нам прием всей почты на эти адреса.
smtpd_recipient_restrictions =
check_recipient_access hash:/etc/postfix/policy/rcpto_exeptionscat rcpto_exeptions
username@domain.com permit
username1@domain.com permit
username2@domain.com permit
>[оверквотинг удален]
>на этом этапе возможна проверка адреса клиента, его приветствия, емейлов отправителя и
>получателя. поэтому тупо ставим правило первым :) что гарантирует нам прием
>всей почты на эти адреса.
>smtpd_recipient_restrictions =
> check_recipient_access hash:/etc/postfix/policy/rcpto_exeptions
>
>cat rcpto_exeptions
>username@domain.com permit
>username1@domain.com permit
>username2@domain.com permitСпасибо! Обязательно проверю и отпишусь.
Коллега, совсем из головы вылетело, но ведь, если перенести такую проверку в smtpd_recipient_restrictions
первой может сработать цепочка reject_rbl_client bl.spamcop.net
reject_rbl_client sbl.spamhaus.org
reject_rhsbl_client rhsbl.ahbl.org
reject_rhsbl_client bl.spamcop.net
reject_rhsbl_client sbl.spamhaus.orgВ smtpd_client_restrictions, а также
цепочка
reject_invalid_hostname
reject_non_fqdn_hostname
reject_unknown_hostnameВ smtpd_helo_restrictions, т.о. сообщения всё равно отвергнутся ещё до обработки списка исключений в цепочке smtpd_recipient_restrictions
Если не прав, поправьте.
хм...правила обрабатываются по очереди :) а правила мы перенесли в smtpd_recipient_restrictions. и наше правило стоит первым :)
цепочка больше определяет видимость того, что мы можем использовать для проверкит.е. возьмем сессию со стороны клиента, получаем
0. сам момент подключения // smtpd_client_restrictions, доступен адрес клиента
1. helo home.net // smtpd_helo_restrictions, доступен адрес, приветствие
2. mail from: vasya@home.net // smtpd_sender_restrictions, доступен адрес, приветствие, емейл отправителя
3. rcpt to: petya@work.net // smtpd_recipient_restrictions, доступен адрес, приветствие, емейл отправителя, емейл получателя
4. data // smtpd_data_restrictions, доступен адрес, приветствие, емейл отправителя, емейл получателя, можем фильтровать содержимоенапример:
smtpd_client_restrictions =
smtpd_helo_restrictions =
smtpd_sender_restrictions =
smtpd_recipient_restrictions =
check_recipient_access hash:/etc/postfix/policy/rcpto_exeptions,
reject_rbl_client bl.spamcop.netт.е. клиент пройдет этапы 0-3 и только после этого начнется проверка.
проверится адрес получателя, если правило не сработает, то будет проверяться адрес клиента и т.д.удобство smtpd_recipient_restrictions в том, что в случае отлупа в логе мы получим конкретную запись, "с такого-то адреса с такого-то емейла на такой емейл был такой-то реждект"