首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SMTP负载平衡与远程主机的IP传递到SMTP服务器?

SMTP负载平衡与远程主机的IP传递到SMTP服务器?
EN

Server Fault用户
提问于 2016-12-26 08:12:33
回答 1查看 3.4K关注 0票数 2

我正在尝试构建一个负载平衡的SMTP集群。邮件服务器已经存在并运行Exim 4。最初,我考虑使用Nginx进行负载平衡,但是在测试系统上,所有邮件服务器都认为入站连接来自负载均衡器IP,而不是实际的远程发件人IP,在广泛搜索之后,似乎没有任何解决办法。因为这样可以有效地将邮件集群变成一个开放的中继,这显然是不可能的,这很遗憾,因为Nginx在其他方面工作得很好。

因此,我希望使用HAProxy代替,因为我从进一步谷歌收集到,它有能力通过连接与他们的原始源IP完好无损,这样系统中继-允许列表和ACL将正确运作。

但是,按照几个在线示例设置了HAProxy,我要么得到"SMTP同步错误“(以及一个500系列的错误,这样邮件就会反弹),然后连接立即被删除,或者仅仅是没有SMTP消息的连接下降。

下面是正在使用的haproxy.conf:

代码语言:javascript
运行
复制
global

    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        nobody
    group       nobody
    daemon

    stats socket /var/lib/haproxy/stats

defaults
    log                     global
    option                  redispatch
    retries                 3
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout check           10s
    maxconn                 3000

listen smtp
    bind 0.0.0.0:25
    mode tcp
    no option http-server-close
    balance roundrobin
#    option smtpchk HELO smtp-in.example.com
    server smtp01 10.0.0.141:25 send-proxy check
    server smtp02 10.0.0.143:25 send-proxy check

尽管存在send命令,我了解它是如何告诉how通过源IP的,Exim日志如下所示:

016-12-26 07:06:48 SMTP协议同步错误(输入未等待问候):从H=10.0.0.150 input=拒绝连接“PROXY TCP4 10.0.0.150 10.0.0.143 25\r\nHELO in.example.comr\n”

在这种情况下,.150是负载均衡器,.143是Exim服务器。

问题:

  1. 实际上,是否有可能让Nginx提供到邮件服务器的SMTP连接,而源IP是真正的远程源IP,而不是负载均衡器?
  2. 或者,这在HAProxy中是可能的吗?它是如何实现的?

在这种情况下,当前的生产系统运行LVS,但是这依赖于负载均衡器和共享相同IP地址的所有邮件服务器上的回送接口。新的负载均衡器将是OpenSUSE 42.2,而且如果检测到网络上已经在使用的IP,则似乎有助于将其从自身中移除以避免冲突。所以LVS在新的建筑里了。

我正在考虑的问题的其他解决方案包括:完全分离入站和出站SMTP通信量(目前它都通过相同的负载均衡器运行),在负载均衡器IP地址上安装一个简单的中继(qmail ),配置为只允许标准中继实践中认可的范围,以及使用MX记录上的简单DNS循环将入站SMTP直接发送到邮件服务器。但是一个负载平衡的解决方案会更优雅。

EN

回答 1

Server Fault用户

发布于 2018-10-24 20:53:52

因此,我使用了自定义tcp检查。

代码语言:javascript
运行
复制
backend smtp-back
    mode tcp
    no option http-server-close
    balance roundrobin
    tcp-check expect string 220
    tcp-check send HELO\ test\r\n
    tcp-check expect string 250
    tcp-check send QUIT\r\n
    tcp-check expect string 221
    server mail01  mail01:25 check inter 60s rise 3 fall 3 backup
    server mail02  mail02:25 check inter 60s rise 3 fall 3 backup
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/822705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档