Postfix ограничения доступа
Я использую Postfix 2.9.6 из Debian7. Определены некоторые виртуальные домены, все работает нормально, как и ожидалось.
Теперь я хочу ограничить прием входящих писем одним из моих доменов, если они приходят из того же домена или если отправитель имеет sasl_authenticated (из других размещенных доменов на том же сервере) или входящая почта поступает из одного домена из белого списка (о 2-3 домена).
В конфигах Postfix я вижу только sender_restrictions и receient_restriction, но как одновременно управлять получателем / отправителем?
2 ответа
В Postfix есть такие функции, которые называются классами ограничения SMTPD. Но это не удобно, как вы пишете ACL с if-then-else
, Для этого вы можете использовать postfwd как ответ от tomas или policyD
Здесь вы положили в main.cf
# define one restrictio class, let's name it 'specialdomain'
smtpd_restriction_classes = specialdomain
# define the restriction for this class
specialdomain =
check_sender_access hash:/etc/postfix/specialdomain2 # permit sender same domain
permit_sasl_authenticated # permint sasl_authenticated
check_sender_access hash:/etc/postfix/whitedomain # permit whitelisted domain
reject # otherwise reject
smtpd_recipient_restrictions =
check_recipient_access = hash:/etc/postfix/specialdomain
... other restriction ...
Карты
# /etc/postfix/specialdomain
example.com specialdomain
# /etc/postfix/specialdomain2
example.com OK
#/etc/postfix/whitedomain
example.net OK
example.org OK
Как это устроено:
Первая проверка постфикса, если получатель указан в /etc/postfix/specialdomain
, если да, то постфикс применяет ограничение, определенное в specialdomain
параметр main.cf
,
specialdomain
ограничение имеет несколько параметров для разрешения электронной почты. Там два check_sender_access
проверить, был ли домен отправителя таким же или уже занесен в белый список. Существует также permit_sasl_authenticated
разрешить аутентификацию пользователя SASL. В противном случае отклоните это.
Я не думаю, что вы можете достичь этого, используя только постфикс. Посмотрите на postfwd, там вы можете установить набор правил, например:
&&TO_PROTECTED_DOMAIN { recipient_domain=my_protected_domain.tld; };
&&FROM_WHITELIST_DOMAIN { sender_domain=my_protected_domain.tld; \
sender_domain=whitelisted1.tld; \
sender_domain=whitelisted2.tld; \
};
id=PD_01; &&TO_PROTECTED_DOMAIN; sasl_method =~ (LOGIN|PLAIN); action=DUNNO
id=PD_02; &&TO_PROTECTED_DOMAIN; &&FROM_WHITELIST_DOMAIN; action=DUNNO
id=PD_03; &&TO_PROTECTED_DOMAIN; action=REJECT You're not permitted sending to this domain.