SMTP 服务器的反向代理

反向代理服务器是部署在 하나 이상의 웹 서버 앞쪽에 위치한 서버로,
클라이언트의 요청을 처리하여 보안, 성능 및 확장성을 향상시킵니다.

反向代理示意图


的客户端不会直接与服务器通信, 而是将请求发送至反向代理
, 该代理会将请求转发至相应的服务器
, 从而充当单一的安全访问入口。

主要优势:

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

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

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

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

NO Caddy
“Caddy 无法代理 TCP,只能代理基于 TCP 的 HTTP。 请使用能够代理 TCP 的反向代理,例如 Traefik、Nginx 或 haproxy,或者使用这个实验性插件。” –ElevenNotes 于 2024 年 9 月 24 日发表评论


随后,我们重点关注了评论中推荐的三个选项: “Traefik、NginX 或 HAProxy”,并逐一进行了安装和测试。

Traefik 是首选。

大多数教程都是从 Docker 开始的,而我本想避开这个平台,转而选择一个简单的解决方案, 最好是基于某个 Linux 软件包管理器的方案,例如适用于 Fedora 和 CentOS 等基于 RPM 的发行版的 YUM, 或者适用于 Ubuntu 和 Debian 等基于 Debian 的发行版的 APT(Advanced Package Tool)。

经过一番漫长的搜索,我们找到了这篇最新文章,其中描述了我们正在寻找的安装方式: 将 Traefik 设置为 systemd 服务

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

再次尝试了Udemy上的两门课程后,我们发现了这门优秀的课程: Traefik 速成课程(不使用 Docker) 我们通过复现课程中的示例,成功让它运行了起来。 视频临近结尾时,这位优秀的讲师明确表示了他对该工具的完全不认可: Traefik 速成课程 - 53:50 总结
这让我们打消了继续测试的念头,于是转而尝试其他方案。

NginX 是第二选择

在这种情况下,安装过程更为简单,简而言之就是使用 YUM:
yum install epel-release nginx nginx-mod-stream nginx-mod-mail
注意:在 SELinux 中,您需要启用 relay:
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 = [智能主机地址]:端口

在 Sendmail 中,位于 sendmail.mc 文件中,如下所示:
define(`SMART_HOST',`mail.example.com')


返回顶部