The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"postfix: классы пользователей, разграничение прав на smtp"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"postfix: классы пользователей, разграничение прав на smtp"  +/
Сообщение от badbug (ok) on 09-Окт-15, 12:38 
Доброго дня!
Начальство пожелало ограничить пользователей в работе с «электронкой».
Должно быть три группы пользователей: в первом случае (по умолчанию) пользователи (например занесенные в файлик) могут получать письма от кого угодно и отправлять только внутри организации;
во втором - пользователи могут получать письма от кого угодно и отправлять внутри организации и плюс еще на список определенных адресов;
в третьем - пользователи могут и получать и отправлять куда угодно.
получать письма все группы могут от кого угодно.
знаю что нужно смотреть в сторону restriction classes и даже примерно представляю, как это будет выглядеть - что-то вроде:

smtp_restriction_classes=gpusers1,gpuser2,gpuser3

gpusers1=check_sender_access hash:/usr/local/etc/postfix/users1.list,reject #локально
gpusers2=check_sender_access hash:/usr/local/etc/postfix/users2.list,reject #локально и на пару адресов
gpusers3=check_sender_access hash:/usr/local/etc/postfix/users3.list,reject #полный доступ

smtpd_sender_restrictions = check_sender_access hash:/usr/local/etc/postfix/maillist
#тут список адресов для второй группы на которые можно отправлять, наверное такой:
# @enabledomain.ru user2.list

не понятно: как сделать только локальную отправку по умолчанию, каким должно быть содержимое (синтаксис) перечисленных файлов, ну и как все это правильно описать?

надеюсь получилось понятно объяснить.
postfix 2.11.3 на FreeBSD 10.1-RELEASE, пользователи в mysql.
спасибо!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "postfix: классы пользователей, разграничение прав на smtp"  +/
Сообщение от Etch on 09-Окт-15, 14:40 
Особо не вникал, но насколько я понял задачу, я бы сделал как-то так:

smtpd_restriction_classes = local, not_local
class local = check_recipient_access hash:/usr/local/etc/postfix/local_recipients
class not_local = check_recipient_access hash:/usr/local/etc/postfix/not_local_recipients

smtpd_recipient_restrictions =
  ....,
  check_sender_access hash:/usr/local/etc/postfix/check_senders,
  ....

local_recipients:

@enabledomain.ru    OK

not_local_recipients:

petia@mail.ru     OK
vasia@gmail.com   OK

check_senders:

# вторая группа
user2@enabledomain.ru   local, not_local, reject # на свой домен + список ящиков
# третья группа
user3@enabledomain.ru   OK # можно отправлять всем (лучше заменить OK на DUNNO, чтобы сработали остальные проверки в smtpd_recipient_restrictions)
...
# и в самом конце файла правило по умолчанию (первая группа):
@enabledomain.ru        local, reject # только на свой домен

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "postfix: классы пользователей, разграничение прав на smtp"  +/
Сообщение от badbug (ok) on 14-Окт-15, 12:16 
гранд мерси за подсказку!
правда не работает, может потому что я дурачок из деревни или может у меня взаимоисключающие правила в main.cf? postmap файликов делал, сам postfix перезапускал.


queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
mail_owner = postfix

myhostname = mail.up.ru
mydomain = up.ru
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
mynetworks = 192.168.0.0/18, 127.0.0.0/8
smtpd_banner = $myhostname ESMTP

disable_vrfy_command = yes
debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         xxgdb $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop

html_directory = /usr/local/share/doc/postfix
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = /usr/local/share/doc/postfix

transport_maps = mysql:/usr/local/etc/postfix/sql/transport.cf,
    hash:/usr/local/etc/postfix/transport

virtual_mailbox_base = /var/mail/virtual
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cf
virtual_alias_maps = mysql:/usr/local/etc/postfix/sql/aliases.cf
virtual_uid_maps = static:125
virtual_gid_maps = static:125
relay_domains = $transport_maps
local_recipient_maps = $virtual_mailbox_maps $virtual_maps

message_size_limit = 26214400

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks,
        permit_sasl_authenticated,
        check_helo_access hash:/usr/local/etc/postfix/helo_access,
        reject_non_fqdn_hostname,
        reject_invalid_hostname,
        reject_unknown_hostname,
        permit

smtpd_sender_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    check_sender_access regexp:/usr/local/etc/postfix/sender_access,
    reject_non_fqdn_sender,
    reject_unknown_sender_domain,
    permit


##Ограничения на отправку
smtpd_restriction_classes = local_only, not_local
local_only = check_recipient_access hash:/usr/local/etc/postfix/local_recipients, reject
not_local = check_recipient_access hash:/usr/local/etc/postfix/not_local_recipients, reject

smtpd_recipient_restrictions =
     reject_unauth_pipelining,
     reject_non_fqdn_recipient,
     reject_unknown_recipient_domain,
     check_sender_access hash:/usr/local/etc/postfix/check_senders,
     permit_mynetworks,
     permit_sasl_authenticated,
     reject_unauth_destination,
     permit

##Конец

smtpd_client_restrictions =
     permit_mynetworks,
     reject_rbl_client bl.spamcop.net,
     permit

smtpd_etrn_restrictions = reject
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
data_directory = /var/db/postfix
inet_protocols = ipv4

content_filter = smtp-amavis:[127.0.0.1]:10024


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "postfix: классы пользователей, разграничение прав на smtp"  +/
Сообщение от Etch on 14-Окт-15, 13:36 
Как именно не работает? Что в логах?

> ##Ограничения на отправку
> smtpd_restriction_classes = local_only, not_local
> local_only = check_recipient_access hash:/usr/local/etc/postfix/local_recipients,
> reject
> not_local = check_recipient_access hash:/usr/local/etc/postfix/not_local_recipients,
> reject

Если вы решили добавить reject в сам класс, тогда файл not_local_recipients должен включать и содержимое файла local_recipients. А в файле check_senders писать либо один класс, либо второй.

ЗЫ: У вашего домена нет MX записи, некоторые почтовики не принимают почту с таких.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "postfix: классы пользователей, разграничение прав на smtp"  +/
Сообщение от badbug (ok) on 14-Окт-15, 18:29 
> Как именно не работает? Что в логах?

убрал reject в классах.
такое дело: все пользователи не описанные в check_senders (т.е. те, которые подразумеваются под первой группой) отправляют письма на любые адреса, т.е. правило "по умолчанию - только локально" не работает.
остальные ограничения работают. попробовал по переносить правило для первой группы в разные концы check_sender - тот же результат. в логах все как-будто этого правила и нет. для not_local - в логах "акцесс денайд", как и должно быть.

> ЗЫ: У вашего домена нет MX записи, некоторые почтовики не принимают почту
> с таких.

извиняюсь, в main.cf я указал левый домен, просто для примера.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "postfix: классы пользователей, разграничение прав на smtp"  +/
Сообщение от Etch on 14-Окт-15, 21:09 
> # и в самом конце файла правило по умолчанию (первая группа):
> @enabledomain.ru        local, reject # только на свой домен

Тут я с синтаксисом напутал - собаку перед доменом надо убрать:

enabledomain.ru        local, reject # только на свой домен

И в файле local_recipients тоже.
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "postfix: классы пользователей, разграничение прав на smtp"  +/
Сообщение от badbug (ok) on 15-Окт-15, 06:58 
> Тут я с синтаксисом напутал - собаку перед доменом надо убрать:

действительно, почитал http://www.postfix.org/RESTRICTION_CLASS_README.html - так и сделал. все заработало как часы.
огромное спасибо за решение и помощь, очень выручили!

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру