我是邮件服务器领域的新手,一直在 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 邮件。
出于安全原因,也添加到了 main.cf 中(对于任何感兴趣的人);
smtpd_client_connection_count_limit = 20
smtpd_sasl_authenticated_header = yes
maximal_queue_lifetime = 1d