我有一个工作的postfix / dovecotconfiguration运行与收件人拒绝以下规则:
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject
这按预期工作(授权经过authentication的用户或来自我的networking的用户,拒绝其他用户)。 但是,如果来自我的networking的用户未能通过身份validation,他不会被拒绝。
有reject_invalid_sasl_auth这样的规则吗? 只有当他input了一个无效的validation才会拒绝用户,但是会允许用户没有validation。
否则,是否有限制规则来实现这种行为(SASL选项,自定义策略)?
由于您只明确允许SASLauthentication的用户,如果用户未通过authentication,则将检查行中的下一个限制 – 这是mynetworks,恰好匹配。
所以,完全由于您的规则订购非授权客户端允许从您的可信networking。
相反,可以考虑像这样设置它:
smtpd_client_restrictions = permit_sasl_authenticated, reject smtpd_recipient_restrictions = permit_mynetworks, reject
请注意,当您将此应用于您的外部端口25 smtpd监听器时,这会导致您无法接收Internet邮件。
我认为这个想法可以运行你的MTA,你可以从端口25接收来自其他对端(其他邮件服务器)的邮件。你可以在端口587上运行另一个smtpd进程,从经过authentication的用户接收。
这样你可以有像下面这样的标准规则:
smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination
在你的main.cf中
OTOH在master.cf中configuration你的端口587如下:
submission inet n - - - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
UPDATE
回复评论。 这有两件事。
首先,如果它在端口25上接收到连接,它将只接受来自我的networking,除了可以在本地传送的信息外,它将永远不会接收邮件。
其次,如果它在端口587上接收到连接,它将仅接受来自经过validation的客户端的邮件。