拦截传出的Exchange Server电子邮件并对其进行修改

时间:2010-03-31 18:32:32

标签: notifications exchange-server

我希望能够拦截Exchange Server中特定域上的外发电子邮件,并在实际传递之前修改标头。

基本上,我的公司已被另一家公司收购,我们使用MDaemon并使用DKim和DomainKeys签署所有电子邮件,新公司使用的Exchange Server不能也不会这样做。这似乎是我想到的一个重大疏忽,所以我想我需要自己做。我已经编写了一个COM组件,可以使用hMailServer对我在个人邮件服务器上使用的消息文件进行签名,因此想为Exchange做类似的事情。

这可能,如果是这样,你会怎么做?

我看过但却找不到明显的方法。我看到的一些内容包括:

  • 运输代理商
  • 事件接收
  • 商店活动

任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

对于Exchange 2007及更高版本:似乎TransportAgent是正确的方法。

一个非常基本的样本:

public class TestAgent : SmtpReceiveAgent
{
    public TestAgent()
    {
        this.OnEndOfData += new EndOfDataEventHandler(MyEndOfDataHandler);
    }
    private void MyEndOfDataHandler(ReceiveMessageEventSource source, EndOfDataEventArgs e)
    {
        // The following line appends text to the subject of the message that caused the event.
        e.MailItem.Message.Subject += " - this text appended by MyAgent";
    }
}

您可以通过GetContentWriteStream()更改实际消息,只需添加或替换现有内容即可。

可以找到更多样本here

我知道......这是一个迟到的答案,但我偶然发现了这个问题,只想留下一些我发现的有用链接。

答案 1 :(得分:0)

也许你可以使用Generic Exchange Transport Agent(开源,链接到GitHub)。它在Exchange传输代理上方提供了一个抽象层,专门用于处理传入/传出电子邮件的事件。您可以调用自定义批处理脚本来重写整个电子邮件,例如用于添加自定义标题等。