0

В настоящее время мы проходим через концепцию создания транспортного агента, которая получена из Microsoft.Exchange.Data.Transport.Routing.RoutingAgent. Мы используем событие OnResolvedMessage, чтобы перенаправить электронные письма на наш внешний почтовый сервер (не Exchange-сервер). Все это прекрасно работает, и мы можем перенаправить электронные письма на внешний сервер. Тем не менее, похоже, что если электронное письмо содержит как внутреннего, так и внешнего получателя, электронное письмо будет разделено на два отдельных сообщения электронной почты и приведет к тому, что два письма отправятся на внешний почтовый сервер. Хотя два письма содержат один и тот же контент, только разные заголовки RCPT TO, это заставит внешний почтовый сервер обрабатывать один и тот же адрес электронной почты дважды, что менее желательно для нашего проекта.Транспортный агент Exchange 2013 Отправка отдельной электронной почты для внутренних и внешних получателей

Это мой первый раз, когда я создал агент транспорта, и я пытаюсь определить, есть ли какая-то настройка для сервера обмена, которая должна быть изменена, чтобы остановить электронные письма, соответствующие этим критериям, из-за разделения на несколько писем?

Основная цель нашего транспортного агента - разрешить обработку электронной почты внутренними получателями внешним сервером электронной почты, поскольку они в настоящее время будут помещены во внутренний почтовый ящик внутреннего пользователя без обработки. Это может иметь отношение к нашим разъемам отправки/получения, любые рекомендации по любым искам вокруг них будут высоко оценены. Если агент маршрутизации не является правильным решением для этой проблемы, мы открыты для других возможностей.

Отрывок нашего обработчика событий:

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); 
     } 
} 

ответ

0

К тому времени OnResolved Сообщение вызывается в транспортном конвейере получатели будут решены и Бифуркация будет произошло на сообщение правила, которые в основном объясняются в 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.

Однако, оказывается, что если письмо содержит как внутренний и внешний получатель электронной почты будет разделена на две отдельные сообщения электронной почты и в результате два писем, идущих на внешний сервер электронной почты. Хотя два письма содержат один и тот же контент, только разные заголовки RCPT TO, это заставит внешний почтовый сервер обрабатывать один и тот же адрес электронной почты дважды, что менее желательно для нашего проекта.

Это не должно быть действительно большое дело для внешней службы, как это должно быть что-то, что можно было бы ожидать в любом процессе, который обрабатывал письма, например, его легко для внешнего коррелята обслуживания с использованием Интернет MessageId и т.д. IMO, вы пытаетесь решить проблему на неправильном конце.

Приветствия Глен

+0

Есть ли способ, чтобы не иметь преобразование контента произойдет в версию отправленной на внутренние пользователь? На самом деле у нас проблемы с обработкой внутренней электронной почты пользователя. Хотя должно быть хорошо отправить более одного электронного письма, как вы уже упоминали, нам нужно, чтобы они на самом деле были одним и тем же контентом, если это было возможно. – cjablonski76

+0

Преобразование содержимого означает, что он преобразует TNEFStream, который обычно удаленный домен не сможет понять https://technet.microsoft.com/en-us/library/bb232174(v=exchg.150).aspx.Для отправленных сообщений внутри контент не преобразуется, потому что их нет смысла. (Магазин будет преобразовывать «на лету», если конкретный клиент запросит его как POP или IMAP). В качестве отправной точки я бы предложил вам выполнить трассировку https://technet.microsoft.com/en-us/library/bb397226(v=exchg.150).aspx, это даст вам представление о том, что есть и что происходит на определенных сообщениях в конвейере –

+0

Я просто понял, что хотел спросить, есть ли способ убедиться, что содержимое внутреннего получателя преобразовано так, чтобы оно соответствовало содержимому внешних получателей? Спасибо за всю помощь, до сих пор я не нашел правильного способа получить внутренние электронные письма для перехода на внешний сервер с тем же содержимым, что и внешние получатели. – cjablonski76