Bug 8616

Summary: Postfix restriction
Product: ALT Linux 2.4 Reporter: Alexey Egorov <egorov>
Component: postfixAssignee: Dmitry V. Levin <ldv>
Status: CLOSED FIXED QA Contact: Andrey Cherepanov <cas>
Severity: normal    
Priority: P2    
Version: 2.4   
Hardware: all   
OS: Linux   

Description Alexey Egorov 2005-12-09 13:02:45 MSK
Есть ALT Linux Master 2.4 + Updates + Backports
На нем крутится postfix 2.2.4 из Backports.
Есть задача - ограничить определенного пользователю отправлять почту только в
своем домене.
Есть хорошая статья:
http://www.opennet.ru/base/net/postfix_per_user_acl.txt.html
ну и доки:
http://www.postfix.org/RESTRICTION_CLASS_README.html
Делаю как там указанно (кусок конфига):
smtpd_recipient_restrictions =
check_sender_access hash:/etc/postfix/restricted_senders,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_unauth_destination
smtpd_restriction_classes = local_only
local_only = check_recipient_access hash:/etc/postfix/local_domains,reject
Создаю файлы:
/etc/postfix/restricted_senders
/etc/postfix/local_domains
Добавляю в restricted_senders:test@host.domain.com local_only
Добавляю в local_domains:host@domain.com OK
Делаю postmap restricted_senders и local_domains.
Пытаюсь отправить почту от test@host.domain.com на mail.ru - пишет Access
denied, т.е. как и должно быть.
Но при попытке отправить письмо other@host.domain.com письмо не доставляется !
Формируется письмо постмастеру с сообщением:
451 Server configuration error
В логах postfix
postfix/smtpd[4553]: warning: unknown smtpd restriction: "local_only"
Долгие пляски с бубном и прочие ни к чему не привели.
Добавил debug в конфиг postfix и получил более подробный лог:
postfix/smtpd[17398]: >>> START Recipient address RESTRICTIONS <<<
postfix/smtpd[17398]: generic_checks: name=check_sender_access
postfix/smtpd[17398]: check_mail_access: user1@host.domain.ru
postfix/smtpd[17398]: ctable_locate: move existing entry key user1@host.domain.ru
postfix/smtpd[17398]: check_access: user1@host.domain.ru
postfix/smtpd[17398]: check_table_result: hash:/etc/postfix/restricted_senders
local_only user1@host.domain.ru
postfix/smtpd[17398]: >>> START Sender address RESTRICTIONS <<<
postfix/smtpd[17398]: generic_checks: name=local_only
postfix/smtpd[17398]: warning: unknown smtpd restriction: "local_only"
postfix/smtpd[17398]: NOQUEUE: reject: RCPT from
localhost.localdomain[127.0.0.1]: 451 Server configuration error;
from=<user1@host.domain.ru> to=<user2@host.domain.ru> proto=SMTP
helo=<host.domain.ru>
postfix/smtpd[17398]: > localhost.localdomain[127.0.0.1]: 451 Server
configuration error 

PS Тоже самое было и на стандартном postfix из дистрибутива Master
Comment 1 Alexey Egorov 2005-12-09 13:06:39 MSK
Вывод postconf -n
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
disable_vrfy_command = yes
html_directory = /usr/share/doc/postfix-2.2.4/html
inet_interfaces = all
mail_owner = postfix
mailbox_command = /usr/bin/procmail -a $DOMAIN -d $LOGNAME
mailbox_size_limit = 51200000
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
mydestination = localhost, $myhostname, localhost.$mydomain,
$config_directory/mydestination
mydomain = domain.ru
myhostname = host.domain.ru
mynetworks = $config_directory/mynetworks
myorigin = $myhostname
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /etc/postfix/README_FILES
sample_directory = /etc/postfix/README_FILES
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated,
reject_rbl_client relays.ordb.org,   reject_rbl_client opm.blitzed.org,
reject_unauth_destination, reject_non_fqdn_hostname, reject_non_fqdn_sender
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_etrn_restrictions = permit_mynetworks, reject
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname,
reject_non_fqdn_hostname
smtpd_recipient_restrictions = check_sender_access
hash:/etc/postfix/restricted_senders, permit_mynetworks,
permit_sasl_authenticated, reject_unauth_destination reject_non_fqdn_hostname,
reject_non_fqdn_sender, reject_unauth_destination
smtpd_restriction_classes = local_only
smtpd_sasl_application_name = smtpd
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated,
reject_unknown_sender_domain, reject_unverified_sender,
reject_non_fqdn_hostname, reject_non_fqdn_sender
unknown_local_recipient_reject_code = 550
Comment 2 Dmitry V. Levin 2005-12-09 13:12:29 MSK
К сожалению, я этой статьи не читал, и анализировать её возможности у меня не
было.

Если вы всё выполнили строго в соответствии тому как написано в статье, и
считаете что эта статья правильная, то обратитесь, пожалуйста, за советом в
первую очередь к автору статьи.
Comment 3 Alexey Egorov 2005-12-09 13:53:24 MSK
(In reply to comment #2)
> К сожалению, я этой статьи не читал, и анализировать её возможности у меня не
> было.
> 
> Если вы всё выполнили строго в соответствии тому как написано в статье, и
> считаете что эта статья правильная, то обратитесь, пожалуйста, за советом в
> первую очередь к автору статьи.
> 
Статью привел только как пример того что кроме RESTRICTION_CLASS_README.html
читал еще что-то.
Сами настройки сделанн полность в соотвествии с документацией
RESTRICTION_CLASS_README.html.
Просто облазил весь инет - ничего не нашел :(
Остается надеятся только на вашу помощь
Comment 4 Alexey Egorov 2005-12-10 10:54:58 MSK
Прошу прощения.
На другом сервере ошибка не повторилась