вторник, 17 ноября 2009 г.

Postfix: как запретить локальным пользователя отправлять почту во вне

Из серии маленькие хитрости :)

Имеем следующие исходные данные. Есть почтовый сервер построенный на FreeBSD. На нем установлен postfix и база данных пользователей расположена в mysql. В postfix включена SASL аутентификация.
Нужно определенным пользователям запретить отправлять почту во вне, т.е. отправлять им почту можно будет только внутренним пользователям: от mydomain.ru к mydomain.ru.

Делается это следующим образом.

1) Редактируем файл main.cf и добавляем следующие строки:
smtpd_restriction_classes = local_recipients_only
local_recipients_only = check_recipient_access mysql:$base/local_recipient.conf, reject

2) Добавлем строку в политику smtpd_recipient_restrictions в таком порядке (порядок важен):
smtpd_recipient_restrictions =
//... Тут могут быть какие-то ваши политики
permit_mynetworks,
check_sender_access hash:$base/local_sender_access,
permit_sasl_authenticated
//... Тут могут быть какие-то ваши политики

3) Создаем файл local_sender_access, где прописываем пользователей для которых нужно закрыть доступ во вне

test@mydomain.ru local_recipients_only
user@mydomain.ru local_recipients_only

затем делаем из него hash файл.

4) Создаем файл local_recipient.conf, который нужен для определения локальных пользователей
user = postfix
password = mypassword
hosts = localhost
dbname = postfix
table = mailbox
select_field = 'permit_sasl_authenticated'
where_field = username
additional_conditions = and active = '1'

5) Перезагружаем postfix

Важно! При такой настройке любой внешний пользователь сможет отправить письмо вашим ограниченым в правах пользователям, а они нет.

Комментариев нет:

Отправить комментарий

Постоянные читатели