Агент маршрутизации 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 возможных решения:
- Проверьте домен отправителя по списку принятых доменов.
- Используйте адресную книгу, чтобы проверить, является ли отправитель внутренним
- Проверьте свойство 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 который я бы посоветовал вам взглянуть
Ура Глен