Postfix:允许未经身份验证的传入邮件,但只允许经过身份验证的传出邮件?

Postfix:允许未经身份验证的传入邮件,但只允许经过身份验证的传出邮件?

我是邮件服务器领域的新手,一直在 Ubuntu 11.10 上通过 Postfix 设置自己的邮件服务器。到目前为止,我已通过 TLS 进行 SASL 身份验证,所以这很好;我现在担心的是安全性。

简而言之:我希望 Postfix 接受所有未经身份验证的传入邮件,但仅允许经过身份验证的传出邮件。这也让我怀疑,如果我在端口 465 和 587 上支持 STARTTLS 和 TLS,我是否仍需要在端口 25 上监听?如果 25 端口关闭,邮件服务器是否会尝试在端口 587 上传递邮件?

但回到允许未经身份验证的传入,但只允许经过身份验证的传出,我尝试添加

-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

添加到我的文件中的 smtp 行master.cf,但这样会阻止未经身份验证的传入邮件。有没有办法只允许端口 25 上的传入邮件,而只允许端口 465/587 上的传出邮件?

我不确定这样做有什么好处,但如果有必要,我可以发布我的其余配置。非常感谢任何帮助,因为我对这一切都很陌生,仍然感到困惑。谢谢!

答案1

正如您所理解的,应用选项来master.cf覆盖main.cf每个端口上的选项。

为了实现您的目标,您需要将限制设置为smtpd_recipient_restrictions而不是smtpd_client_restrictions。关键是reject_unauth_destination而不是reject

mydestination = aardvark.com, acme.com 
smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination

这可防止未经身份验证的客户端向任何您不负责的域发送消息。在此上下文中,您负责的域不仅仅是mydestination。请参阅拒绝未授权目的地在手册中。

答案2

我已经花了几个小时寻找解决这个问题的方法,而您的答案非常正确。

permit_mynetworks有关更多信息,在使用 Plesk/CentOS 时(我的情况),这也有效。特别是在使用 Plesk 时,默认情况下也会将值添加到smtpd_recipient_restrictions变量中,从而允许所有 Plesk 域无需身份验证即可发送 SMTP 邮件。

看:http://forum.parallels.com/showthread.php?296391-Plesk-domains-can-submit-emails-through-unauthenticated-SMTP

出于安全原因,也添加到了 main.cf 中(对于任何感兴趣的人);

smtpd_client_connection_count_limit = 20
smtpd_sasl_authenticated_header = yes
maximal_queue_lifetime = 1d

相关内容