Агент маршрутизации Exchange определяет направление электронной почты

У нас есть агент Exchange Trasport, который является агентом RoutingAgent. в OnSubmittedMessage событие, которое мы должны осмотреть MailItem и определить, является ли он исходящим или входящим. В настоящее время я смотрю на использование SmtpServer.AcceptedDomains свойство, чтобы проверить, находится ли электронная почта отправителя в списке принятых доменов. Вот пример того, как мы пытаемся это сделать:

private bool IsOutbound(MailItem mailItem, AcceptedDomainCollection acceptedDomains)
{
    if (acceptedDomains.Find(mailItem.FromAddress) != null)
    {
        return true;
    }
    return false;
}

Я не очень хорошо знаком с принятыми доменами и пытаюсь понять, является ли это жизнеспособным решением для надежного определения направления электронной почты? Этот сценарий также должен работать для компаний, у которых несколько доменов включены в настройку организации Exchange. Обратите внимание, что мы планируем поддерживать Exchange 2010-2016, если это что-то изменит.

--РЕДАКТИРОВАТЬ--

После получения помощи от @GlenScales я понимаю, что мне нужно немного обновить свой вопрос.

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

При этом мы рассмотрели 3 возможных решения:

  1. Проверьте домен отправителя по списку принятых доменов.
  2. Используйте адресную книгу, чтобы проверить, является ли отправитель внутренним
  3. Проверьте свойство InboundDeliveryMethod и посмотрите, было ли оно создано из почтового ящика.

В конце концов, мы решили, что действительно хотим проверять сообщения, которые были сгенерированы только из почтового ящика, и пошли с #3. #1 звучало так, как будто оно могло включать домены, которые действительно были просто "переадресованными" доменами, и мы не хотим рассматривать эти сообщения в нашем приложении.

1 ответ

Решение

AcceptedDomains сообщает вам все SMTP-домены, для которых будет работать Организация Exchange. Например, когда транспортный сервер Exchange выполняет категоризацию сообщения в сообщении, если сообщение относится к адресу, который находится в допустимых доменах, он будет нести ответственность за доставку этого сообщения этим получателям (в сообщении может быть несколько получателей, которые указывают на сообщение может быть разветвлен и доставлен Внутреннему получателю и отправлен внешнему получателю).

То, что вы делаете, просто говорит вам, откуда отправитель на самом деле не направляет Сообщение как таковое. OnSubmittedMessage означает, что вы захватываете Сообщение до какой-либо классификации, если это сообщение было отправлено из вашей организации, но если сообщение содержит как внутренних, так и внешних получателей, несколько копий, у него будет несколько адресатов.

Есть также некоторые другие параметры в https://social.msdn.microsoft.com/Forums/en-US/9387e62a-76d7-4340-b9cc-f87ffcfab8b1/how-to-detect-the-message-source-in-an-exchange-server-2013-transport-agent-for-getting-the-sending?forum=exchangesvrdevelopment который я бы посоветовал вам взглянуть

Ура Глен

Другие вопросы по тегам