LINUX.ORG.RU
ФорумAdmin

Запрет внешней пересылки для определённого домена

 ,


0

2

Можно ли как-то в postfix'е запретить пересылку «наружу» (т.е. на не локальные домены) с ящиков в определённом локальном домене?
Например, есть три домена - one.org, two.org и three.org. Почта с @one.org и @two.org должна отправляться куда угодно, а с @three.org только на первые два.
Сразу оговорюсь, что с postfix'ом ранее не работал и поэтому извиняюсь, если вопрос тупой.

Да, можно, через restriction classes.

Пример конфига:

/etc/postfix/sender_access:

three.org            internal_only

/etc/postfix/internal_only:

one.org    OK
two.org    OK

/etc/postfix/main.cf(указаны только части конфига для вышеописанной фичи):

smtpd_restriction_classes = internal_only
internal_only = check_recipient_access hash:/etc/postfix/conf/internal_only, reject

smtpd_sender_restrictions =
        check_sender_access hash:/etc/postfix/conf/sender_access
        permit

Почта с @one.org и @two.org должна отправляться куда угодно, а с @three.org только на первые два.

Кстати в вышеописанной конфигурации пользователи с домена @three.org не смогут послать почту другим пользователям с домена @three.org, но т.к. ты этого и не просил - оставил как есть. Чтобы разрешить это - достаточно добавить соответствующую строку в файл internal_only(и перехэшировать его через postmap)

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

Спасибо. А возможно то же самое без явного перечисления разрешённых доменов (т.е. разрешить на все, куда postfix доставляет локально)?

gasinvein ★★★ ()
Ответ на: комментарий от gasinvein

да, вынеси permit_auth_destination повыше в sender_restrictions и recipient_restrictions

Выдержка из man:

permit_auth_destination
    Permit the request when one of the following is true:

        Postfix is mail forwarder: the resolved RCPT TO domain matches $relay_domains or a subdomain thereof, and the address contains no sender-specified routing (user@elsewhere@domain),
        Postfix is the final destination: the resolved RCPT TO domain matches $mydestination, $inet_interfaces, $proxy_interfaces, $virtual_alias_domains, or $virtual_mailbox_domains, and the address contains no sender-specified routing (user@elsewhere@domain). 

Если relay_domains у тебя пустые - это и будет значит то, что ты хочешь

Или смени check_recipient_access в restriction-классе на permit_auth_destination(так правильнее ИМХО)

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Теперь я запутался. У меня так:

smtpd_sender_restrictions =
    reject_unknown_sender_domain
    reject_non_fqdn_sender
    reject_unlisted_sender
    reject_sender_login_mismatch
    permit_mynetworks
    permit_sasl_authenticated
smtpd_recipient_restrictions =
    reject_unknown_recipient_domain
    reject_non_fqdn_recipient
    reject_unlisted_recipient
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
Куда что вставлять?

gasinvein ★★★ ()
Ответ на: комментарий от gasinvein

Перед permit_my_networks в sender_restrictions вставить check_sender_access hash:/etc/postfix/conf/sender_access

Restriction class будет выглядеть так(на всякий случай объяви это до sender_restrictions, но ЕМНИП postfix-у пофиг на порядок параметров):

smtpd_restriction_classes = internal_only
internal_only = permit_auth_destination, reject

Файл internal_only не нужен. Файл sender_access такой:

three.org            internal_only

Pinkbyte ★★★★★ ()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.