如何在单个 IP 地址上托管多个邮件服务器?

如何在单个 IP 地址上托管多个邮件服务器?

我在局域网上设置了多个邮件服务器。例如,我有两台机器,

  • 机器 A 在 IP 192.168.1.100 上处理 domainA.com 和用户名首字母 al***@domainA.com 的邮件,
  • 机器 B 处理 IP 为 192.168.1.101 的 mz****@domainA.com 的邮件
  • 机器 C 在 IP 192.168.1.110 上处理 domainC.com。

我已将两个域的 MX 条目配置为 mail.myMailHandlerDomain.Com 映射到我的公共 IP。

所以现在我的端口转发功能被限制在一台机器上。我只能将 25,465, 587, 993, 995 端口转发到机器 A、机器 B 或机器 C。

我正在运行带有 postfix/dovecot 设置的 Ubuntu 服务器。由于我在该领域的专业知识有限,我正在寻找解决方案,但无法掌握邮件中继和 Nginx 反向代理的不同概念。我正在寻找适合我的问题的解决方案。谢谢!!

更新 1

在这种情况下,机器 C 实际上是远程邮件服务器的备份邮件服务器。

  • 每当主邮件服务器出现故障时,它就会启动。
  • 我有域名更新脚本,每当我的观察机器检测到节点故障时,它就会修改 MX 条目,因此我当前的 IP 将开始接收 domainC.com 的邮件。
  • 但是我当前网络的限制是我不想在额外的 IP 地址上浪费钱,所以我只有一个 IP 地址。

我正在为 domainA.com 拆分邮件以实现负载平衡。

答案1

我认为使用多个内部服务器是为了实现负载平衡。(否则至少 Postfix 可以处理所有域)

  • 对于传入邮件 (MX),使用单个输入服务器很简单,并在必要时将邮件重新路由到其他服务器。或者,对于 LB,3 个服务器中的任何一个都可以将不属于自己的消息转发到正确的服务器。(例如,使用 postfix:使用 mydestination、relay_recipient_maps、relay_domains、local_recipient_maps 和/或 virtual_mailbox_maps。可能有用的参数列表不完整。http://postfix.cs.utah.edu/STANDARD_CONFIGURATION_README.html

  • 使用来自外部用户的连接(POP3/IMAP)。我认为需要一些基于登录路由用户连接的 POP3/IMAP 代理。(例如,如上所述http://wiki1.dovecot.org/HowTo/ImapProxy

答案2

Postfix 可以从数据库中读取配置...包括要服务的域、如何为其提供服务以及这些域上的地址。

虽然并不完美,但这是一个好的开始 -https://workaround.org/ispmail/jessie

设置最初接收所有邮件的机器 - 这是您将从防火墙转发到的机器,也是您的内部人员应用作外发邮件的机器。在这台机器上,将所有用户设置为简单别名/转发,使用[电子邮件保护]作为电子邮件地址。这些机器中的每一台都可以配置为使用 mysql,尽管它们只服务于一个域,等等。

答案3

我会以一种方式托管两个邮件服务器,让它们在两个服务器上都提供完整的双栈支持,并且不提供 NAT。这意味着您需要从托管提供商处获取另外两个 IPv4 地址,并且可能还需要一个路由的 /64 IPv6 前缀。如果托管提供商无法提供这些,我会转向另一个托管提供商。

如果您坚持只使用一个 IPv4 地址托管两个 mx,如果您有双栈部署,我仍然可以想到一种方法来使其工作。每个 mx 都有一个可路由的 IPv6 地址,它们可以在该地址上接收电子邮件。它们都不会直接使用 IPv4 接收电子邮件。相反,我会配置第三个 mx,它是两个域的辅助 mx,可以通过 IPv4 和 IPv6 接收电子邮件。

只要发件人支持 IPv6,电子邮件通常会直接发送到最终 MX。如果发件人仅支持 IPv4,则邮件必须先发送到辅助 MX,然后辅助 MX 会将电子邮件转发到最终 MX。

以下是此类设置的 DNS 记录的示例:

example.com.      3600  IN  MX    10 mx1.example.com.
example.com.      3600  IN  MX    20 mx2.example.com.
mx1.example.com.  3600  IN  AAAA  2001:db8:1::4
mx2.example.com.  3600  IN  AAAA  2001:db8::2
mx2.example.com.  3600  IN  A     192.0.2.1

example.org.      3600  IN  MX    10 mx1.example.org.
example.org.      3600  IN  MX    20 mx2.example.org.
mx1.example.org.  3600  IN  AAAA  2001:db8:1::5
mx2.example.org.  3600  IN  AAAA  2001:db8::2
mx2.example.org.  3600  IN  A     192.0.2.1

请注意,两个域的 IP 地址之间的唯一区别是 mx1 的 AAAA 记录。尽管 mx2.example.com. 和 mx2.example.org. 是两个不同的名称,但它们都解析为同一主机,并且该主机上的 mx 的唯一目的是将电子邮件转发到相应域的 mx1。

相关内容