Exchange 2013 传输代理为内部和外部收件人发送单独的电子邮件

Exchange 2013 Transport Agent Sending Separate Email for Internal Vs External Recipients

我们目前正在进行概念验证,创建一个派生自 Microsoft.Exchange.Data.Transport.Routing.RoutingAgent 的传输代理。我们使用 OnResolvedMessage 事件将电子邮件重新路由到我们的外部电子邮件服务器(非 Exchange 服务器)。这一切都很好,我们可以将电子邮件重新路由到外部服务器。但是,看起来如果一封电子邮件同时包含内部和外部收件人,则该电子邮件将被拆分为两封单独的电子邮件,并导致两封电子邮件发送到外部电子邮件服务器。虽然这两封电子邮件包含相同的内容,只是不同的 RCPT TO headers,这将导致外部电子邮件服务器处理同一封电子邮件两次,这对于我们的项目来说是不理想的。

这是我第一次创建传输代理,我正在尝试确定是否需要更改交换服务器的某些设置以阻止满足此条件的电子邮件被拆分为多封电子邮件?

我们的传输代理的主要目标是允许发送给内部收件人的电子邮件由外部电子邮件服务器处理,因为它们目前将未经处理地放入内部用户的邮箱。它可能与我们的 send/receive 连接器有关,我们将不胜感激任何关于这些问题的指导。如果路由代理不是此问题的正确解决方案,我们愿意接受其他可能性。

我们的事件处理程序片段:

private void OnOnResolvedMessage(ResolvedMessageEventSource source, QueuedMessageEventArgs queuedMessageEventArgs)
{
        var mailItem = queuedMessageEventArgs.MailItem;
        var origSubject = mailItem.Message.Subject;
        mailItem.Message.Subject = "RouteAgent: " + origSubject;

        foreach (var recipient in mailItem.Recipients)
        {
            var newRouteDomain = new RoutingDomain("externalSendConnectorAddressSpace.com");
            var dest = new RoutingOverride(newRouteDomain, DeliveryQueueDomain.UseOverrideDomain);
            source.SetRoutingOverride(recipient, dest);
        }
}

当在传输管道中调用 OnResolved Message 时,收件人将被解析并且消息将发生分叉,其规则主要在 https://technet.microsoft.com/en-us/library/bb430743(v=exchg.150).aspx 中解释。 EdgeTransport.exe.config 是可以完成传输管道配置的地方,但我认为没有任何配置选项可以满足您的尝试。

如果您在 OnSubmission 事件中捕获消息,这将允许您在任何分类发生之前获取消息。那时你或多或少可以对消息做你想做的事。但是,作为分类过程的一部分,还会发生其他事情,例如内容转换 https://technet.microsoft.com/en-us/library/bb232174(v=exchg.150).aspx .

However, it appears that if an email contains both an internal and external recipient the email will be split into two separate emails and result in two emails going to the external email server. While the two emails contain the same content, just different RCPT TO headers, this will cause the external email server to process the same email twice which is less than desirable for our project.

这对于外部服务来说应该不是什么大问题,因为这应该是任何处理电子邮件的过程中都可以预料到的事情,例如,使用 Internet MessageId 等外部​​服务关联起来很容易。IMO 你的试图在错误的一端解决问题。

干杯 格伦