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')