SMTP 服务器的反向代理

反向代理服务器是位于一个或多个 Web 服务器前面的服务器
,用于处理客户端请求,从而提高安全性、性能和可扩展性。

反向代理图

不会直接与服务器通信,而是
将请求发送到反向代理,
反向代理会将请求路由到相应的服务器,
从而充当单一、安全的访问点。

主要优势:

  • 安全性: 它可以阻止恶意请求、加密流量,
    并保护后端服务器免受直接攻击。
  • 性能方面 ,它将传入流量分配到多个服务器上,防止
    单个服务器过载,从而确保更高的可用性。
  • 可扩展性: 它允许您在不中断服务的情况下添加或删除后端服务器,
    从而能够处理不断增长的流量。

仅支持 HTTP 的反向代理(第 7 层)

互联网上有很多工具可供使用;经过研究,我们首先排除了那些仅支持HTTP协议(第7层)的工具:

别用 Apache!
“哎呀。花点时间了解一下你正在使用的技术。电子邮件使用 SMTP 协议,而 Apache 使用 HTTP 协议。Apache 对 SMTP 一无所知。如果你想处理电子邮件,你需要一种支持 SMTP 的技术。”—— EEAA 于 2016 年 8 月 18 日 2:49 评论

Caddy
不支持 TCP 代理。“Caddy 只能代理基于 TCP 的 HTTP 代理,无法代理 TCP。请使用 Traefik、Nginx 或 haproxy 等支持 TCP 代理的反向代理,或者使用此实验性插件。” – ElevenNotes 评论于 2024 年 9 月 24 日


然后,我们重点关注评论中推荐的三种工具:“Traefik、NginX 或 HAProxy”,并逐一安装和测试它们。.

特拉菲克是首选。.

大多数教程都是从 Docker 开始的,但我想要避免使用 Docker 平台,而是选择一个简单的解决方案,可能基于 Linux 软件包管理器,例如 Fedora 和 CentOS 等基于 RPM 的发行版使用的 YUM,或者 Ubuntu 和 Debian 等基于 Debian 的发行版使用的 APT(高级软件包工具)。.

经过长时间的搜索,我们找到了这篇最近的文章,其中描述了我们正在寻找的安装类型: 将 Traefik 设置为 systemd 服务

注意:您需要将 SELinux 设置从“强制”更改为“宽容”。

在尝试了 Udemy 上的两门课程后,我们发现了一门很棒的课程: Traefik 速成课程(无需 Docker)。 我们通过复现课程中提供的示例成功运行了该工具。然而,在视频结尾,这位优秀的讲师却对这个工具表示了完全的否定: Traefik 速成课程 - 53:50 总结
这让我们打消了继续测试的念头,转而尝试其他方法。

NginX 是第二选择。

在这种情况下,安装过程更简单,只需使用 YUM 即可:
yum install epel-release nginx nginx-mod-stream nginx-mod-mail。
注意:在 SELinux 中,您需要启用中继:
setsebool -P httpd_can_network_relay 1

为了确保培训顺利,我们选择了和上次课程相同的讲师: NginX 速成课程 (第一部分大约一个小时二十分钟后结束)。这位讲师对这款应用并不看好,尤其是它同时充当 Web 服务器和反向代理的功能: NginX 速成课程 - 1:20:10 总结
报告最后写道“我会选择 HAProxy 而不是 NginX”,所以我们也决定尝试一下 HAProxy。

最后,我们也尝试了HAProxy。.

安装过程极其简单,因为它是一个非常常见的应用程序,所有 Linux 软件包管理器中都有,例如:yum install haproxy

我们还咨询了我们信赖的讲师: HAProxy 速成课程

它确实有效,但遗憾的是,它不适用于 SMTP 身份验证:
“无法以这种方式配置 haproxy,因为 haproxy 根本不支持 SMTP。”
lukastribus 评论于 2023 年 8 月 17 日


标准的 SMTP 服务器作为反向代理

经过两周的测试,我们意识到
最好使用标准的 SMTP 服务器作为其他 SMTP 服务器的反向代理。

它仅使用 SMTP 协议即可完成其工作,能够正确验证连接,
并且可以通过“smarhost”功能将请求转发到其他 SMTP 服务器。

在 Postfix 的 main.cf 文件中,将
relayhost 设置为 [smarthost_address]:port

在 Sendmail 中,在 sendmail.mc 中,
定义(`SMART_HOST',`mail.example.com')


返回顶部