AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1053966
Accepted
Hynek Bernard
Hynek Bernard
Asked: 2021-02-18 04:06:45 +0800 CST2021-02-18 04:06:45 +0800 CST 2021-02-18 04:06:45 +0800 CST

将电子邮件代理到一个公共 IP 地址上不同域上的不同邮件服务器

  • 772

我有一台 Proxmox 机器,上面运行着 2 个虚拟机,还有两个域,比如说 domainA.com 和 domainB.com。两个域都指向 Proxmox 公共地址,并且我还设置了 nginx 以根据传入域名将 http 流量反向到每个 VM。

网络看起来像这样:

proxmox with nginx = #public IP# and 192.168.1.1, domainA.com = 192.168.1.2, domainB.com=192.168.1.3)

我还想在每个 VM 上设置邮件服务器,并根据域名路由传入的邮件通信。例如,当我收到收件人为 [email protected] 的邮件时,我想将通信转发到 192.168.1.2,当我收到收件人为 [email protected] 的邮件时,我想将通信转发到 192.168.1.3。

我怎样才能做到这一点?我在使用 nginx 时遇到了麻烦,我不确定这是否可行

networking email nginx reverse-proxy
  • 1 1 个回答
  • 484 Views

1 个回答

  • Voted
  1. Best Answer
    Nikita Kipriyanov
    2021-02-18T06:19:51+08:002021-02-18T06:19:51+08:00

    邮件协议没有任何等效的 HTTP 的 Host 标头,虚拟主机和反向代理所基于的标头。

    任何“虚拟邮件托管”都是基于一个简单的事实,您可以将域名集成到邮件用户的用户名中。无法通过用户连接的邮件服务器主机名来区分用户,例如通过 SMTP 或 IMAP 或其他任何方式;除了用户名之外,协议中没有其他地方可以放入域名。因此,反向代理需要知道用户名,即执行身份验证;但这不再只是一个反向代理。

    此外,我不知道任何类似于 SNI 的邮件协议解决方案,因此所有邮件“虚拟主机”只能使用托管服务器的同一个 SSL 证书。这意味着,根本没有办法为不同的托管域使用不同的邮件服务器主机名,其他存在于证书中(在 CN 或 SAN 字段中)。


    对于 SMTP,反向代理的有限模仿是可能的。使用 Postfix 可以这样完成:

    1. 设置一个“反向代理”系统,它将自己视为两个域的中继。为此,您需要将它们添加relay_domains到main.cf. 当然,两个域的互联网发件人必须被定向到该系统(即所有域的 MX 必须设置为此中继主机名)。

    你最好给你的中继提供一种过滤掉无法投递的目的地的方法。换句话说,中继必须始终知道目标服务器上的实际邮箱列表。这是为了减少垃圾邮件负载和反向散射的可能性(这比您想象的要重要得多!)。例如,定期与它同步终端服务器的邮箱数据库,并relay_recipient_maps在中继主机上进行配置。还记得我所说的“不仅仅是反向代理”吗?

    1. 在这个“反向代理”上设置传输映射,它将每个域的邮件定向到适当的设置。这包括向/etc/postfix/transport文件中添加行:
    domainA.com smtp:[192.168.1.2]
    domainB.com smtp:[192.168.1.3]
    

    方括号指示 Postfix 不做 MX 查找,直接使用指定地址;它只会连接到端口 25 以传递邮件。然后指定这个文件transport_maps(main.cf请参阅 Postfix 文档如何正确执行此操作)

    1. 在目标主机上设置 MTA。它们的配置与往常一样,除了您应该将中继主机指定为受信任,以便这些 MTA 的反垃圾邮件系统信任其 Received: 标头(您不得信任任何由不受您控制的系统添加的 Received: 标头)。
    • 1

相关问题

  • 如何在 Windows Server PPTP VPN 中自动为客户端分配路由?

  • 为什么我的电脑休眠时 VPN 连接会中断?[关闭]

  • Exchange 2007 的备份解决方案

  • 有什么软件可以模拟局域网?

  • 带宽利用工具?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve