Возникла насущная необходимость ограничить ряд пользователей по почте - они должны иметь право на рассылку сообщений лишь в пределах домена. Причем сделать это нужно средствами postfix. Поиск информации в сети практически ничего не дал - лишь ряд статей (в основном вариации на тему статьи skif'а), примеры из которых никоим образом не влияют на пропускную способность почты - было опробовано около 6-7 вариантов, почта как ходила, так и ходит.
Если кому-нибудь доводилось заниматься подобным ограничением, пожалуйста, положите свои куски из main.cf.
Заранее благодарю.
В сети есть замечательный сайт - www.postfix.org, на нем есть чудесный документ RESTRICTION_CLASS_README.html(копия этого документа входит в дистрибутив postfix). В этом документе разжевано применение smtpd_restriction_classes и есть интересующий вас пример. Читайте доку.
Вся прелесть в том, что даже если всем пользователям на тестовой машине запретить отправку почты куда-либо, ползти мыло все равно будет. Пробовал и сам писать рестрикшны, и юзать готовые варианты - результат один
Предъявите postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/local/sbin
config_directory = /usr/local/etc/postfix
daemon_directory = /usr/local/libexec/postfix
debug_peer_level = 5
debug_peer_list = 192.168.3.30, 127.0.0.1, domain.ru, www.domain.ru
home_mailbox = Maildir/
html_directory = no
mail_owner = postfix
mail_spool_directory = /var/spool/mail
mailq_path = /usr/local/bin/mailq
manpage_directory = /usr/local/man
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
myhostname = horus.domain.ru
mynetworks = 192.168.3.0/24, 127.0.0.0/8
mynetworks_style = host
myorigin = $mydomain
newaliases_path = /usr/local/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
setgid_group = maildrop
smtpd_recipient_restrictions = hash:/etc/postfix/protected_destinations, check_sender_access hash:/etc/postfix/restricted_senders, permit_sasl_authenticated, permit_auth_destination, reject smtpd_restriction_classes = local_only, insiders_only local_only = check_recipient_access hash:/etc/postfix/local_domains,reject
insiders_only = check_sender_access hash:/etc/postfix/local_domains, reject
unknown_address_reject_code = 550
unknown_client_reject_code = 550
unknown_hostname_reject_code = 550
unknown_local_recipient_reject_code = 550
---
>smtpd_recipient_restrictions = hash:/etc/postfix/protected_destinations, check_sender_access hash:/etc/postfix/restricted_senders,
>
> permit_sasl_authenticated, permit_auth_destination, reject
> smtpd_restriction_classes = local_only, insiders_only
>
> local_only = check_recipient_access hash:/etc/postfix/local_domains,reject
> insiders_only = check_sender_access hash:/etc/postfix/local_domains, reject
---
Можно этот кусочек показать еще раз, сохранив разбиение на строки.
Вы хотите закрыть прием на часть адресов из сети и отправку с каких-то ограничить своим доменом так?
У вас есть permit_sasl_authenticated, но sasl не включен - к чему это?
sasl убирался - я тестил другие варианты без оногоsmtpd_recipient_restrictions = hash:/etc/postfix/protected_destinations, check_sender_access hash:/etc/postfix/restricted_senders,
permit_sasl_authenticated, permit_auth_destination, reject
smtpd_restriction_classes = local_only, insiders_only local_only = check_recipient_access hash:/etc/postfix/local_domains,reject
insiders_only = check_sender_access hash:/etc/postfix/local_domains, rejectвопрос, если у вас подобная система ограничений работает, то через что (мне советовали ставить CommuniGate, но мне нужен только postfix) и как организован main.cf
>sasl убирался - я тестил другие варианты без оного
Т.е. в итоге sasl будет?Вы так и не рассказали, что сделать хотите - пробую угадать:
Требуем sasl от всех клиентов из нашего домена.
На адреса из protected_destinations принимаем только для прошедших sasl
Проверяем соотвествие sasl login name и "MAIL FROM"
Для "MAIL FROM" из restricted_senders запрещаем отправку за пределы наших доменов.
Поправьте/добавьте нужное.>вопрос, если у вас подобная система ограничений работает, то через что (мне
>советовали ставить CommuniGate, но мне нужен только postfix) и как организован
>main.cf
Не понятен вопрос. Все работает через restriction_classes, main.cf я собираю через make из маленьких кусочков.
Мне интересен кусок с рестрикшнами - у меня он не работает
А нужно заставить постфикс принимать почту на ряд ящиков ТОЛЬКО из локалки и некоторых пользователей ограничить по рассылке корреспонденции ТОЛЬКО по 192.168.3.0/24
>Мне интересен кусок с рестрикшнами - у меня он не работает
>А нужно заставить постфикс принимать почту на ряд ящиков ТОЛЬКО из локалки
>и некоторых пользователей ограничить по рассылке корреспонденции ТОЛЬКО по 192.168.3.0/24smtpd_restriction_classes = local_only
local_only = check_recipient_access hash:/etc/postfix/local_domains,rejectsmtpd_recipient_restrictions =
check_sender_access hash:/etc/postfix/restricted_senders,
check_recipient_access hash:/etc/postfix/protected_destinations,
permit_mynetworks, reject_unauth_destination
/etc/postfix/restricted_senders:
foo@domain local_only
bar@domain local_only/etc/postfix/local_domains:
this.domain OK
that.domain OKprotected_destinations:
user1@domain.tld permit_mynetworks,reject
userN@domain.tld permit_mynetworks,rejectодно но - что бы ограничить рассылку не доменом, а 192.168.3.0/24 нужно знать больше о вашей сети.
Сори, что влезаю, но вот это что?
>smtpd_recipient_restrictions = hash:/etc/postfix/protected_destinations
>Сори, что влезаю, но вот это что?
Ничего ничего :)
Доброго утра вам.>>smtpd_recipient_restrictions = hash:/etc/postfix/protected_destinations
Бред это. Просто хочется понять чего в итоге OP хочет, иначе тред может вырасти до полусотни сообщений :)
ОК. Наблюдаю дальше :)
/etc/postfix/protected_destinations:
user@domain.com insiders_only
user@mail.domain.com insiders_onlyМожет я и ошибаюсь, но, как мне кажется, это проверка, может ли юзер отправлять почту или на ящик разрешены только входящие письма...
Да, таковые ящики тоже нужны
>Может я и ошибаюсь, но, как мне кажется, это проверка, может ли
>юзер отправлять почту или на ящик разрешены только входящие письма...
>Да, таковые ящики тоже нужны
Ошибаетесь
Замечательно, докопались до сути.
Тогда вопрос, как оно должно в итоге выглядеть?
check_recipient_access hash:/etc/postfix/protected_destinations
Большое благодарю. Будем пробовать и работать
Помните, что без sasl эти ограничения очень легко обходятся...