是否有办法在邮件到达IIS上的SMTP之前查看或查看邮件。这不是Exchange Server,它只是运行SMTP。我试图看看我是否可以查看该邮件,然后将其传递给SMTP?
由于
编辑〜我想知道是否有办法绑定到默认的SMTP列表器并截取消息然后传递它,而不是添加另一个列表器。
第二次编辑〜好的,这是我的问题。我的交换机前面有一个垃圾邮件过滤器,不幸的是(由于软件设计)过滤器在“目录收集Loookup”方面受到限制。如果电子邮件地址存在于AD中,则会检查电子邮件地址,如果不存在,则会删除邮件。如果AD中不存在其中一个不好的地址,我当前的过滤器会丢弃邮件。我与供应商交谈过,他们此时无能为力。我正在寻找在这个过滤器前放置一个应用程序,它将截取(打开,读取,解析)邮件,验证地址,然后将电子邮件传递给过滤器以进行其他扫描。然后,我将在他们的软件中删除此功能。不要误会我的意思,他们的过滤器很好用这个例子,我必须修复,因为我有大量的电子邮件发送给我的域中不存在的用户。
答案 0 :(得分:2)
您可以编写自己连接的代理SMTP服务来发送邮件。您可以将所有邮件直接转发到您的实际SMTP服务,并将所有响应传回。然后你可以对所有这些消息进行分析并相应地处理它们。
对于你所追求的东西可能有点过分,但编码相当简单,因为你不需要知道任何有关协议的信息,因为你所拥有的只是代理。
答案 1 :(得分:1)
如果您使用的是.NET 2.0,则可以将SMTP会话记录到文件中:
How do I create a log file of the SMTP session? (System.Net.Mail)
<强>更新强>
看看这个问题:
Testing SMTP with .net (Stack Overflow)
从你的编辑:
“我想知道是否有办法绑定到默认的SMTP侦听器并拦截该消息然后传递它?”
......以及下面的评论:
“我希望在SMTP获取之前检查实际的消息。”
我不确定您是否完全理解SMTP协议。 SMTP消息不仅仅是单一的“即发即弃”实体。 SMTP是基于会话的,客户端和服务器之间存在对话,其中消息只是其中的一部分。跟踪方法(链接到上面)将记录客户端和服务器之间的整个交换,并在传递之前拦截整个消息。替代方案,代理服务器或模拟服务器,仍然需要您的应用程序参与SMTP客户端/服务器交换。对您的要求最接近的解决方案是使用与上面答案中链接的Papercut类似的内容。
千电子伏
答案 2 :(得分:0)
在.Net中,您可以告诉SmtpClient将电子邮件发送到与SMTP服务正在监控的文件夹不同的文件夹。这样你可以检查每条消息,然后将其移动到真正的拾取文件夹。 (见SmtpClient.PickupDirectory)
答案 3 :(得分:0)
IIRC,您仍然可以为IIS SMTP服务编写事件接收器(即使它不是完整的交换)。我已经做了很多年了,但你可能想谷歌“交换事件接收器”,看看是否有帮助。
答案 4 :(得分:0)
似乎像Ethereal这样的东西会让你完成你的请求的嗅探部分。我不清楚你的意思是“拦截”和“传递”。您是想过滤一些流量还是只是延迟流量足够让您在传递之前进行检查,或两者兼而有之?