Проверка сообщений IIS SMTP

Есть ли способ просмотреть или просмотреть сообщение до того, как оно попадет на SMTP в IIS. Это не Exchange Server, это просто SMTP. Я пытаюсь проверить, смогу ли я просмотреть сообщение, а затем передать его на SMTP?

Спасибо

Изменить ~ Вместо добавления другого списка, мне интересно, есть ли способ привязаться к списку SMTP по умолчанию и перехватить сообщение, а затем передать его.

2nd Edit ~ Хорошо, вот моя проблема. У меня есть фильтр спама перед моим ящиком для обмена, к сожалению (из-за дизайна программного обеспечения) фильтр ограничен, когда дело доходит до "Loookup сбора каталогов". Это процесс, при котором адреса электронной почты проверяются, существуют ли они в AD, и почта удаляется, если они не существуют. Мой текущий фильтр отбрасывает почту, если один из адресов не существует в AD, что нехорошо. Я поговорил с продавцом, и в настоящее время они ничего не могут сделать. Я хочу поставить приложение перед этим фильтром, которое будет перехватывать (открывать, читать, анализировать) почту, проверять адреса, а затем передавать электронное письмо фильтру для дополнительного сканирования. Затем я отключу эту функцию в их программном обеспечении. Не поймите меня неправильно, их фильтр отлично работает с одним исключением, которое я должен исправить, поскольку у меня тонны писем отправляются несуществующим пользователям в моем домене.


person Saif Khan    schedule 20.03.2009    source источник
comment
Я обновил свой ответ, добавив дополнительную информацию, которая может помочь.   -  person Kev    schedule 20.03.2009


Ответы (5)


Вы можете написать свою собственную прокси-службу SMTP, к которой вы подключаетесь для отправки сообщений. Вы можете пересылать все сообщения прямо в вашу фактическую службу SMTP и передавать все ответы обратно. Затем вы можете просмотреть все эти сообщения и обработать их соответствующим образом.

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

person Robin Day    schedule 20.03.2009
comment
Я пытаюсь проверить входящее сообщение на SMTP-сервер, а затем передать его. Вместо того, чтобы добавить еще один список SMTP, я надеялся сначала просто перехватить сообщение. - person Saif Khan; 20.03.2009

Если вы используете .NET 2.0, вы можете записывать сеансы SMTP в файл:

Как создать файл журнала сеанса SMTP? (System.Net.Mail)

Обновлено:

Взгляните на этот вопрос:

Тестирование SMTP с помощью .net (переполнение стека)

Из вашего редактирования:

«Мне интересно, есть ли способ привязаться к прослушивателю SMTP по умолчанию и перехватить сообщение, а затем передать его?»

... и из вашего комментария ниже:

«Я хочу проверить фактическое сообщение до того, как его получит SMTP».

Я не уверен, что вы полностью понимаете протокол SMTP. Сообщения SMTP - это не просто монолитные объекты типа «запустил и забыл». SMTP основан на сеансе, и между клиентом и сервером существует диалог, частью которого является сообщение. Метод трассировки (ссылка на который приведена выше) будет записывать весь обмен между клиентом и сервером и перехватывает все сообщение перед его передачей. Альтернатива, прокси или фиктивный сервер, по-прежнему потребует от вашего приложения участия в обмене клиент / сервер SMTP. Наиболее близким решением к вашим требованиям было бы использование чего-то вроде Papercut, ссылка на которое приведена в ответе выше.

Кев

person Kev    schedule 20.03.2009
comment
Я хочу проверить фактическое сообщение до того, как его получит SMTP. - person Saif Khan; 20.03.2009
comment
Я отредактировал свой пост и добавил свою цель. Еще раз спасибо за вашу помощь. - person Saif Khan; 26.03.2009
comment
Это полностью меняет ландшафт :) - person Kev; 26.03.2009

В .Net вы можете указать SmtpClient отправлять электронную почту в папку, отличную от отслеживаемой службой SMTP. Таким образом вы можете проверить каждое сообщение, а затем переместить его в настоящую папку для получения. (См. SmtpClient.PickupDirectory)

person David    schedule 20.03.2009

IIRC, вы все равно можете записывать приемники событий для службы IIS SMTP (даже если это не полноценный обмен). Прошло много лет с тех пор, как я сделал это, но вы можете поискать в Google "приемник событий обмена", чтобы узнать, помогает ли это.

person dave wanta    schedule 22.03.2009
comment
Я отредактировал свой пост и добавил свою цель. Еще раз спасибо за вашу помощь. - person Saif Khan; 26.03.2009

Похоже, что-то вроде Ethereal позволит вам выполнить нюхательную часть вашего запроса. Мне непонятно, что вы имеете в виду под «перехватить» и «передать». Вы хотите отфильтровать некоторый трафик или просто отложить трафик на достаточно долгое время, чтобы вы могли его проверить, прежде чем передавать его, или и то, и другое?

person s_t_e_v_e    schedule 26.03.2009
comment
Я отредактировал свой пост и добавил свою цель. Еще раз спасибо за вашу помощь. - person Saif Khan; 26.03.2009