Я использую Postfix 2.9.6 от Debian7. Определено несколько виртуальных доменов, все работает нормально, как и ожидалось.
Теперь я хочу ограничить входящую электронную почту для одного из моих доменов, чтобы она принимала электронную почту, если она поступает из того же домена, или если отправитель имеет sasl_authenticated (из других размещенных доменов на том же сервере), или входящая почта приходит с одного домена из белого списка (около 2-3 домена).
В конфигах Postfix я вижу только sender_restrictions и recipient_restriction, но как управлять получателем / отправителем одновременно?
Postfix имеет функции, которые называются Классы ограничений SMTPD. Но это не так удобный как будто вы пишете ACL с if-then-else
. Для этого вы можете использовать postfwd словно ответ от томаса или 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. В противном случае отклоните его.
Я не думаю, что вы можете добиться этого, используя только postfix. Посмотри на 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.