Postfix 访问限制

Postfix 访问限制

我使用 Debian7 的 Postfix 2.9.6。定义了一些虚拟域,一切按预期正常工作。

现在我想限制我的一个域的传入电子邮件,以便接受来自同一域的电子邮件,或者发件人是 sasl_authenticated(来自同一服务器上的其他托管域)或传入邮件来自一个白名单域(大约 2-3 个域)。

在 Postfix 配置中,我只看到 sender_restrictions 和 received_restriction,但如何同时控制收件人/发件人?

答案1

我认为仅使用后缀无法实现此目的。请查看 后发,您可以在那里设置如下规则集:

&&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.

答案2

Postfix 具有可以实现这一功能的功能,称为SMTPD 限制类别. 但事实并非如此方便的就像你用 编写一些 ACL 一样if-then-else。为此,你可以使用后发托马斯的回答或者政策D


在这里输入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

怎么运行的:

首先 postfix 检查收件人是否在列表中,如果是,则 postfix 应用参数/etc/postfix/specialdomain中定义的限制。specialdomainmain.cf

specialdomain限制有几个参数允许电子邮件。有两个参数check_sender_access用于检查发件人域是否相同或已列入白名单。还有一个参数permit_sasl_authenticated用于允许通过 SASL 验证的用户。否则拒绝。

相关内容