如何在haproxy后面配置postfix?

如何在haproxy后面配置postfix?

在过去的几年中,我为我的小公司安装了一台电子邮件服务器,运行起来没有任何问题。

现在我的公司已经发展壮大,我想增加一些冗余,并在前面添加了一个带有负载均衡器的故障转移电子邮件服务器(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 也会处理负载平衡。

相关内容