我在 Debain Postfix 邮件服务器上有几个用户。一切正常。现在我们需要将一些用户放到托管的 Exchange 服务器 (Office 365) 上。
是否可以以这种方式为一个域配置邮件服务器和 DNS MX,如果用户收件箱不在服务器 1 上,则查找会转发到服务器 2?
- 最佳做法是什么?
- 发送 smtp 的人是谁?
谢谢彼得
答案1
嗯...不是也不是。
问题是,当 DNS MX 记录查找完成后,DNS 服务器不知道用户是谁(该信息不会发送到 DNS 服务器),因此 DNS 服务器无法发送对某些用户特殊的 MX 记录。DNS 知道这么多关于您的用户的信息会很奇怪(技术术语是“分层违规”)。此外,如果电子邮件中有 2 个人在线To:
,一个是原始用户之一,另一个是 Exchange 用户,该怎么办?这会让人感到困惑。
我们将希望通过 Postfix 服务器递送电子邮件的用户称为“P 组”,将希望通过 Exchange 递送电子邮件的用户称为“E 组”。
解决方案是让 Postfix 服务器在本地递送 P 组邮件,并将 E 组邮件转发到 Exchange 服务器。同样,Exchange 服务器需要知道在本地递送 E 组邮件,而 P 组邮件需要转发。
关键是要确保这两个服务器拥有完全相同的信息。否则,两个服务器都会在本地传递某人的消息,或者(更糟的是)两个服务器都不会认为自己对电子邮件负责,并且它会在服务器之间来回传递。
如果 E 组较小,则解决方案:
如果 E 组较短(即只有少数例外),则可以这样做:
- 在 Postfix 上,为每个用户设置别名,以将他们的电子邮件转发到他们的交换帐户。
- 在 Exchange 上,配置服务器以将未知用户的电子邮件转发到 Postfix 服务器。(遗憾的是,我不知道这个设置,因为我不知道 Exchange)。
较大站点的解决方案:
对于较大的配置,我建议将两个服务器(称为 serverE.example.com 和 serverP.example.com)配置为提供本地电子邮件[电子邮件保护]和[电子邮件保护]但不会在本地发送电子邮件[电子邮件保护]. 每台机器访问一个 LDAP/ActiceDirectory 数据库,该数据库指示(例如)[电子邮件保护]他的邮件已发送至[电子邮件保护]和[电子邮件保护]她的邮件已发送至[电子邮件保护]。这样,所有内容就会保持同步,并且您只需在一个地方进行更新。
鲜为人知的事实:使用 postfix,如果aliases
文件包含:
tom: [email protected]
geri: [email protected]
并且 mail.cf 的 mydestination 包含serverP.example.com
但不包含serverE.example.com
,那么发往的邮件tom
将在本地投递,发往的邮件geri
将被中继到 serverE。这样不会形成循环!
我提出这个问题是因为在我知道这一点之前,我编写了一个很大的 perl 脚本,aliases
为每个邮件服务器生成文件,这样(例如)tom
就不会出现在aliases
文件中serverP
,而只会出现在所有其他文件中。一旦我知道这一点,我就删除了脚本。完全相同的aliases
文件可以存在于所有机器上。(当然,由于 Exchange 不使用aliases
文件,因此必须在这些服务器上执行其他操作。)
如果myorigin = example.com
发出的电子邮件将有“[电子邮件保护]“ From:
,没有人会知道有两个电子邮件服务器。(我不知道 Exchange 的等效版本,但我确信它存在。)
测试建议
测试此配置时,不要只测试传入的电子邮件是否到达了正确的位置。还要确保从每个客户端发送的电子邮件都到达了正确的位置。例如,让 Exchange 用户发送一条消息To: tom, geri
并确保两封邮件都已送达。让 Debian 用户也这样做。我见过这样的情况(例如),两台机器上的别名和/或转发设置不正确,电子邮件在两台服务器上都本地传递给用户tom
。 tom
不得不在两个地方阅读电子邮件,直到这个问题解决。哎呀!
答案2
一种方法是让 Postfix 接收所有邮件,然后根据规则/别名等将其转发到 Exchange 服务器...
答案3
如果您在 Postfix 中只有少数用户,则在 Exchange 中创建邮件联系人并将 Postfix 用户放在内部子域中可能会更容易。
您是否想要完成任何特定任务,例如通过 Exchange Online Protection 路由邮件?
最佳实践是,您的 MX 记录中只有一个服务,而第二个服务需要获得授权才能通过主服务(Exchange 用语中的连接器)发送邮件
您可以通过两种服务发送 SMTP如果您为这两项服务配置 SPF,以代表您的邮件域发送。
答案4
就像其他用户所说的那样,这就是所谓的 SMTP 命名空间共享。您提到了 Postfix 系统上的几个用户。我会将所有电子邮件发送到 Exchange 服务器,然后将未知用户的电子邮件交给 Postfix 系统。查看默认 SMTP 属性。您需要查找“将所有未解析收件人的邮件转发到主机:”的内容。