2009-03-20 13 views
3

Existe-t-il un moyen de jeter un coup d'œil ou de voir un message avant qu'il ne rencontre le protocole SMTP sur IIS. Ce n'est pas un serveur Exchange, c'est juste l'exécution de SMTP. J'essaye de voir si je peux regarder le message et le passer ensuite au smtp?Inspection de messages SMTP IIS

Merci

Modifier ~ au lieu d'ajouter une autre listner, je me demande s'il y a un moyen de se lier au listner SMTP par défaut et d'intercepter le message passe ensuite sur.

2ème édition ~ Ok, voici mon problème. J'ai un filtre anti-spam devant ma boîte d'échange, malheureusement (en raison de la conception du logiciel) le filtre est limité quand il s'agit de "Directory Harvesting Loookup". C'est le processus par lequel les adresses e-mail sont vérifiées si elles existent dans AD et le courrier est abandonné si elles ne le sont pas. Mon filtre actuel supprime le courrier si l'une des adresses n'existe pas dans AD, ce qui n'est pas bon. J'ai parlé avec le vendeur et il n'y a rien qu'ils puissent faire en ce moment. Je cherche à mettre une application devant ce filtre qui intercepterait (ouvrirait, lisera, analyserait) le courrier, validerait les adresses, et passerait ensuite l'email au filtre pour l'analyse additionnelle. Je vais ensuite désactiver cette fonctionnalité dans leur logiciel. Ne vous méprenez pas, leur filtre fonctionne très bien avec cette exception que je dois corriger car j'ai des tonnes d'emails envoyés à des utilisateurs inexistants dans mon domaine.

+0

J'ai mis à jour ma réponse avec quelques informations supplémentaires qui pourraient aider. – Kev

Répondre

0

Dans .Net, vous pouvez demander à SmtpClient d'envoyer un courrier électronique à un dossier différent de celui surveillé par le service SMTP. De cette façon, vous pouvez vérifier chaque message, puis le déplacer vers le vrai dossier de collecte. (Voir SmtpClient.PickupDirectory)

2

Vous pouvez écrire votre propre service SMTP Proxy auquel vous vous connectez pour envoyer des messages. Vous pouvez transférer tous les messages directement vers votre service SMTP actuel et renvoyer toutes les réponses. Ensuite, vous pouvez comprendre tous ces messages et traiter avec eux en conséquence.

Peut-être un peu exagéré pour ce que vous recherchez, mais il est assez simple de coder car vous n'avez pas besoin de savoir quoi que ce soit sur le protocole car tout ce que vous êtes est un proxy.

+0

J'essaie d'inspecter le message entrant à un serveur SMTP, puis le transmettre. Au lieu d'ajouter un autre listeur SMTP, j'espérais simplement intercepter le message en premier. –

1

Si vous utilisez .NET 2.0, vous pouvez connecter les sessions SMTP dans un fichier:

How do I create a log file of the SMTP session? (System.Net.Mail)

Mise à jour:

Jetez un oeil à cette question:

Testing SMTP with .net (Stack Overflow)

De votre vérification:

"Je me demande s'il existe un moyen de lier le programme d'écoute SMTP par défaut et d'intercepter le message, puis de le transmettre?"

... et de votre commentaire ci-dessous:

« Je cherche à inspecter le message réel avant SMTP obtient. »

Je ne suis pas sûr si vous comprenez parfaitement le protocole SMTP. Les messages SMTP ne sont pas seulement des entités monolithiques fire-and-forget. SMTP est basé sur une session et il y a une conversation entre le client et le serveur, dont le message n'est qu'une partie. La méthode de traçage (liée à ci-dessus) va enregistrer l'échange entier entre le client et le serveur et intercepte le message entier avant de le transmettre.L'alternative, un proxy ou un serveur fictif, exigera toujours que votre application s'engage dans l'échange client/serveur SMTP. La solution la plus proche de votre exigence serait d'utiliser quelque chose comme Papercut qui est lié à dans la réponse ci-dessus.

Kev

+0

Je cherche à inspecter le message réel avant que le SMTP ne l'obtienne. –

+0

J'ai modifié mon message et ajouté mon objectif. Merci encore de votre assistance. –

+0

Cela change complètement le paysage alors :) – Kev

0

IIRC, vous pouvez toujours écrire des puits d'événements pour le service SMTP IIS (même si ce n'est pas un échange complet soufflé). Cela fait plusieurs années que je l'ai fait, mais vous voudrez peut-être google pour "échanger des éviers d'événements" pour voir si cela aide.

+0

J'ai modifié mon post et ajouté mon objectif. Merci encore de votre assistance. –

0

On dirait que quelque chose comme Ethereal vous permettra d'accomplir la partie reniflant de votre demande. Ce n'est pas clair pour moi ce que vous entendez par "intercepter" et "transmettre". Voulez-vous filtrer un peu de trafic ou retarder le trafic suffisamment longtemps pour que vous puissiez l'inspecter avant de le transmettre, ou les deux?

+0

J'ai modifié mon message et ajouté mon objectif. Merci encore de votre assistance. –