![是否可以将特定端口重定向到另一个 IP/主机名?Web 服务器重定向邮件端口](https://linux22.com/image/1595412/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%B0%86%E7%89%B9%E5%AE%9A%E7%AB%AF%E5%8F%A3%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%20IP%2F%E4%B8%BB%E6%9C%BA%E5%90%8D%EF%BC%9FWeb%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%87%8D%E5%AE%9A%E5%90%91%E9%82%AE%E4%BB%B6%E7%AB%AF%E5%8F%A3.png)
所以我有两个独立的 Linux 服务器,一个在 server.com,使用 NGINX 托管 Web 服务器,另一个在 mail.server.com,托管邮件服务器。
我想要做的是让人们通过 server.com:465 或 server.com:993 与我的邮件服务器交互,这些端口重定向到 mail.server:465 或 mail.server:993。这在通过邮件客户端连接时尤其有用。(添加时,Thunderbird 不会自动尝试 mail.server.com[电子邮件保护])
我不知道 vhosts 是否正确,我尝试过在 465/993 上监听普通 vhost 并重定向 URL,但我认为它不起作用。我怀疑它仅在网页浏览环境下起作用,而不是像 smtp 客户端那样试图摸索。
我偶然发现了一种叫做流或流代理的东西,它看起来可以工作。但它当然不会默认安装,而且我不知道如何在 Bitnami 服务器 (AWS Lightsail) 上编译或安装应用程序...
我遗漏了什么或者理解错了吗?
答案1
普通的 Nginx 虚拟主机无法工作,因为没有任何邮件协议与 HTTP 有任何相似之处。邮件应用程序不会发送任何 Nginx 能够理解的内容,也不会理解从 Nginx 收到的任何内容。
除此之外,除了 HTTP 之外的大多数协议实际上并没有重定向的概念,TCP 本身也没有。
相反,你的服务器可能需要中继所有数据使用诸如 haproxy、relayd 之类的东西,甚至可能是 TCP 模式下的 Nginx(我记得它有)。此选项的缺点是服务器将无法看到客户端的 IP 地址,并且您添加了另一个可能的故障点。
如果这不可行,您可以首先尝试找到一种方法让应用程序连接到正确的域。Thunderbird 实际上有这样的功能 - 您可以托管一个自动配置文件,邮件客户端将使用它来确定正确的邮件服务器名称。
您还可以尝试添加域下的 SRV 记录_imaps._tcp
,_submission(s)._tcp
指向正确的邮件服务器。一些邮件客户端会在添加帐户时使用它们进行自动配置,但 Thunderbird 不会。