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

Ограничения доступа к Postfix

Я использую 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.