我使用 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
中定义的限制。specialdomain
main.cf
specialdomain
限制有几个参数允许电子邮件。有两个参数check_sender_access
用于检查发件人域是否相同或已列入白名单。还有一个参数permit_sasl_authenticated
用于允许通过 SASL 验证的用户。否则拒绝。