Назад | Перейти на главную страницу

Настройка классов ограничений в postfix для блокировки приема и отправки почты на внешние домены.

Всем привет на serverfault,

Я запускаю почтовый сервер Debian Wheezy с постфиксом и несколькими доменами на нем.

Для одного домена мне нужно несколько учетных записей, чтобы нельзя было получать и отправлять электронную почту во внешний мир, только на тот же домен. Остальные учетные записи и домены остаются в норме.

Поискав в Интернете, я обнаружил, что могу сделать это с помощью классов ограничения постфиксов, поэтому я нашел руководство в документации по постфиксам: http://www.postfix.org/RESTRICTION_CLASS_README.html

Следуя документации по постфиксу, я не могу применить свое ограничение, это дает мне ошибку неиспользуемого параметра при перезапуске постфикса, ошибка следующая:

/ usr / sbin / postconf: предупреждение: /etc/postfix/main.cf: неиспользуемый параметр: local_only = check_recipient_access хеш: / etc / postfix / local_domains, отклонить

Вот часть моего main.cf, где расположены классы ограничений:

smtpd_client_restrictions =

allow_mynetworks,

check_client_access хеш: / etc / postfix / custom_check_client_access,

allow_sasl_authenticated,

reject_sender_login_mismatch,

reject_unknown_client,

reject_unauth_pipelining,

reject_rbl_client sbl.spamhaus.org,

smtpd_recipient_restrictions =

check_sender_access хеш: / etc / postfix / limited_senders,

allow_mynetworks,

allow_sasl_authenticated,

reject_unauth_destination,

reject_invalid_hostname,

reject_unauth_pipelining,

reject_non_fqdn_sender,

reject_unknown_sender_domain,

reject_non_fqdn_recipient,

reject_unknown_recipient_domain,

check_recipient_access хеш: / etc / postfix / protected_destinations,

check_policy_service inet: 127.0.0.1: 10023,

разрешать

smtpd_restriction_classes = local_only

local_only = check_recipient_access хеш: / etc / postfix / local_domains, отклонить

smtpd_restriction_classes = insiders_only

insiders_only = check_sender_access хэш: / etc / postfix / local_domains, отклонить

Вот мой файл / etc / postfix / protected_destinations:

restrict01@mydomain.com insiders_only

Вот мой файл / etc / postfix / limited_senders:

restrict01@mydomain.com local_only

Вот мой файл / etc / postfix / local_domains:

mydomain.com ОК

Я не могу понять, что я сделал не так! Я не видел нигде в Интернете, как объединить два класса ограничений вместе, поэтому синтаксис smtpd_restriction_classes может быть неправильным. Еще я подозреваю, что ошибся порядок smtpd_recipient_restrictions, я не могу понять, куда поместить check_sender_access и check_recipient_access.

Если бы вы, ребята, могли помочь мне в настройке этого класса ограничений, я был бы благодарен.

Спасибо, Джованни

При определении нового класса ограничений вы в основном говорите Postfix о новом общем ограничении, которое можно использовать как встроенные проверки, например. "allow_mynetworks".

Для этого вам потребуется указать все классы ограничений за один раз, т.е.

smtpd_restriction_classes = local_only, insiders_only
insiders_only = ...
local_only = ...

Это должно отключить предупреждение postconf о неиспользуемом параметре.

Что касается того, где поставить ограничения: по умолчанию для параметра smtpd_delay_reject установлено значение «yes», что означает, что даже smtpd_ (client | sender) _restrictions будет оцениваться только после этап "rctp to: <...>". По этой причине давным-давно советуют просто снять все ограничения в smtpd_recipient_restrictions. В вашем случае, когда отправитель restrict01 @ ... должен иметь возможность отправлять сообщения только внутренним адресатам, вы, вероятно, можете использовать что-то вроде этого в качестве хорошей отправной точки:

smtpd_recipient_restrictions =
  reject_non_fqdn_sender
  reject_non_fqdn_recipient
  reject_unlisted_sender
  reject_unlisted_recipient
  reject_unknown_sender_domain
  reject_unknown_recipient_domain
  check_sender_access hash:/etc/postfix/restricted_senders
  permit_mynetworks
  allow_sasl_authenticated
  reject_unauth_destination
  check_policy_service inet:127.0.0.1:10023
  reject_rbl_client zen.spamhaus.org
  permit_auth_destination
  reject
smtpd_restriction_classes = local_only
local_only = check_recipient_access hash:/etc/postfix/local_domains, reject

Также следует отметить, что (вероятно) плохая идея возвращать «ОК» из карты доступа до того, как вы проверите учетные данные клиента. Следовательно, файл «/ etc / postfix / local_domains» должен содержать строку вида

example.com DUNNO

Это заставит ограниченного отправителя аутентифицироваться с помощью SASL или находиться в $ mynetworks. Как видите, вы можете обойтись одним классом ограничений и избавиться от smtpd_ (отправитель | клиент) _restrictions.