我设法找到了很多密切相关的信息,但没有找到真正解决我的问题的答案。
我正在扩展我的家庭实验室服务器,并决定使用一个小型公共托管服务器作为简单代理。我的家庭实验室将运行 Mailcow,我只想使用端口 587 进行安全 SMTP,但我想确保我的设置不会出现故障、关闭或某种异常(比如传递率扫描或黑名单/灰名单爬虫或电子邮件客户端等)。
因此,我将通过 IPtables 明确禁止端口 25,以防止因欺诈性访问尝试而耗尽资源,但我不想看起来服务器没有可用的 SMTP - 而是端口 587 上需要安全的 SMTP。
有没有办法向发出请求的客户端/扫描仪/MTS 服务器表明 SMTP 需要端口 587 上的 TLS,这是否应该通过重定向(如 Web 服务器从 80->443)来处理?我不想通过我的 Web 服务器或类似的东西来传递响应,我希望有某种 iptables 配置或某种自然地集成在第 2 层或第 3 层的东西来实现这一点,这样我就可以让该端口在 IPtables 中保持关闭状态,但不会在 SMTP 上显示关闭状态。
我不确定这是否有意义或是否必要,但我希望通过公共 DNS 进行正常的外部访问,而不会被任何可能的影子禁令或声誉管理列表视为可疑,并可能促使一些(主要是基于 Web 的)客户端标记或更糟的是丢弃来自我的域/IP 的流量,或者让客户端认为它无法进行 SMTP 提交。
我疯了吗?或者有办法做到这一点/这是一个明智的担忧吗?提前谢谢。
编辑:我忘了说我正在使用 HAproxy 作为我的主机的边缘 - 所以如果这最有意义的话我可以将 25->587 重定向并完成,我只是希望完全阻止 25,因为僵尸网络和 DDOS/等也将被转移...
答案1
有没有办法向发出请求的客户端/扫描仪/MTS 服务器表明 SMTP 需要端口 587 上的 TLS
假设MTS
是印刷错误,而您的意思是MTA
。
587 不是安全的 SMTP,587 是提交。提交用于用户代理,不用于传输代理,确保邮件传输安全的唯一方法是在端口 25 上使用 STARTTLS。端口 465 是提交(使用隐式 tls 的提交)-但同样不能用于传输。
您可能需要starttls
使用 DANE 或 MTA-STS(您可能应该同时部署两者)DANE 将需要您的 DNS 提供商处的 DNSSEC 和 MTA-STS HTTPS 服务器。
因此,您不能关闭端口 25 并仍然充当域的 MX。
对于用户代理,他们通常会探测一些流行的端口(465、587、25 等),直到在安装过程中看到他们喜欢的端口,因此关闭 25 不会对他们造成重大伤害。
如果你在端口 25 上收到大量垃圾流量,请考虑使用类似 fail2ban 的工具
我使用 HAproxy 作为主机的边缘
这会使防火墙规则更难编写,但我认为有某种 netfilter 插件可以使 haproxy 变得透明 - 因此可能可以与 fail2ban 一起使用。