在过去的几年中,我为我的小公司安装了一台电子邮件服务器,运行起来没有任何问题。
现在我的公司已经发展壮大,我想增加一些冗余,并在前面添加了一个带有负载均衡器的故障转移电子邮件服务器(haproxy)。
一切都很顺利,直到一周前我们成为垃圾邮件发送者的受害者,我不得不关闭所有服务。使用谷歌后,我发现没有正确配置的负载均衡器会将我的后缀转换为开放中继。
我想解决这个问题,也找到了很多文档,但坦白说,现在我有点迷茫了。我知道我必须在 haproxy.cfg 中添加 send-proxy 以及其他更改,但我就是不知道如何添加 postscreen 以再次强化 postfix。
有人可以指导我,或者至少给我一些我还没有找到的手册或教程的链接,告诉我如何实现这一点吗?
我承认我在 Postfix 官方文档中迷失了方向。
提前谢谢了
答案1
也许这对某些人有帮助。我对 haproxy 的配置不同,因为我在 kubernetes 集群中运行。但是对于 postfix 的配置,您需要更新两个文件,
主配置文件
# Exposed SMTP service (postscreen support is needed to support the proxy protocol [search postscreen_upstream_proxy_protocol in main.cf])
smtp inet n - - - 1 postscreen
smtpd pass - - - - - smtpd
主配置文件
# This is required to support the proxy protocol to acquire the correct source ip address from whoever is connecting to this server
# It's really important to get this information because otherwise ALL your connections will come from your internal ip address
# Guess what you allow to send emails, without question? Thats right! You're $mynetworks. Which means because you cannot get the
# correct source ip address, it permits EVERYBODY TO SEND EMAIL THROUGH YOUR SERVER! You basically become an open relay
postscreen_upstream_proxy_protocol = haproxy
postscreen_upstream_proxy_timeout = 5s
答案2
通过 HAProxy 使用 TProxy 进行 SMTP
你需要使用代理服务器以保留客户端的IP地址。搜索 tproxy 这假设公共 IP 正在访问 haproxy。
或者直接使用 MX
另一种方法是从 2 个公共 IP 到 NAT 端口 25,然后只使用 2 个 MX 记录。MTA 也会处理负载平衡。