将端口 25 路由到另一台机器

将端口 25 路由到另一台机器

假设我有两个 Rackspace 云服务器,也就是 VPS。我希望我的设置如下:

  • Server1 将是我的 Apache Web 服务器
  • Server2 将拥有我的邮件服务器,我想在其中设置 postfix+mysql(虚拟用户等)。

由于 Server1 已在网络上可见,因此我希望将其作为我的邮件域。假设我有一个域,其 MX 记录指向“Server1.com”,但 Server2 拥有邮件服务器。那么,如果它们都在同一个网络上,我能否以某种方式让 iptables 将数据包转发到 Server2?这会如何影响邮件服务器上的用户身份验证?

PS 在此设置中,我希望 Server1 之外的所有非 Web 内容释放内存。我还在考虑将所有数据库放在电子邮件服务器中(或者我应该为此使用另一台专用服务器?)

谢谢,

拉蒙

答案1

您可以使用 iptables(Linux 内核的一部分)来实现这一点。在您的“公共”服务器上,运行:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 25 -j DNAT --to XXX.XXX.XX.XX:25
iptables -A INPUT -p tcp -m state --state NEW --dport 25 -i eth0 -j ACCEPT

其中 XXX.XXX.XX.XX 是您要转发的服务器的 IP 地址。您可能需要将“eth0”更改为您的设备名称。

第一条规则设置转发,第二条规则确保本地服务器接受到端口 25 的连接(即两个命令都是必要的)。

答案2

有很多方法可以做到这一点,例如在您的网络服务器上安装邮件转发器。

不过,我会做的是将 MX 记录指向 mail.server.com,而不必担心重定向。因为这会引入您实际上不需要的复杂性。如果您的邮件出现问题,您将不得不考虑 Web 服务器的交互、转发规则、软件配置等……经验法则是,如果您不必使它复杂化,就不要这样做。

只使用邮件服务器来提供邮件服务,不要重定向。保持简单。

答案3

我认为这让人不禁想问“你为什么要这么做?!”只需编辑 server1.com 的 DNS 区域并添加类似内容 mail.server1.com A [server2'sIPAddress],然后将 mail.server1.com 配置为 server1.com 域的 MX 记录即可。没有任何规定说服务器不能有多个名称,甚至不能有多个域。请记住,如果您为带宽付费,则在服务器之间传输流量基本上会使您的使用量翻倍(所有进入的流量都会立即返回)。

现在,如果 server2 无法访问互联网根本,那么您需要使用某种形式的连接转发。我假设您使用的是 Linux...rinetd设置起来相当简单。您可以配置要监听的端口以及这些端口应该去往何处。它所做的就是每当有人连接到它时,它都会连接到配置的服务器并来回传递数据。对于任何类型的转发,要记住的一件事是,由于客户端认为它正在与 server1 对话,如果您使用 SSL,则 server2 上的 SSL 证书需要与 server1 匹配。

相关内容