订阅所有用户的传入邮件(MTA/EWS API 或其他?)

Subscribe to incoming mails for all users (MTA/EWS API or else?)

我的目标是开发一个 Exchange 侦听器,它将拦截新邮件的组织邮箱,并为每封邮件执行一些逻辑。

在我在线研究了该主题之后 - 我发现有两种主要方法可以做到这一点:

  1. 配置一个新的 MTA(邮件传输代理),它将位于交换服务器之前并将拦截 SMTP 消息。

  2. 使用 EWS API 订阅新邮件事件和 运行 监听器上的登录 这样我有两个基本问题:

    • 有没有办法订阅exchange服务器上的所有邮箱?不循环所有用户?
    • 我如何阻止客户在我的听众处理之前阅读他的电子邮件? (我可以将整个收到的邮件移动到一个用户无法访问的特殊默认文件夹 - 某个隐藏文件夹之王吗?

除了我说的这两种方式,还有其他方法可以满足需求吗?

谢谢!

您可以在 Exchange https://technet.microsoft.com/en-us/library/bb125012(v=exchg.150).aspx 上使用传输代理,这样您就可以 capture/proces 传输管道中的邮件。与您在 1. 中描述的内容相比,这样做的优势在于您可以捕获服务器上的每条消息 sent/received,包括内部消息。

Is there a way to subscribe to all mailboxes on the exchange server? without looping all the users ?

不需要,您需要管理每个邮箱文件夹的订阅

How i can block a client to read his email before my listener handled it ? (can i move the whole incoming mail to a special default folder that the users wouldn't have an access to it - some king of hidden folder ?

Exchange 上的所有客户端都是平等的,因此您不能确定客户端的优先级或阻止对新邮件的访问(您可以完全阻止客户端),理论上您可以将所有到达的邮件移动到 NON_IPM_Root 文件夹一个收件箱规则,这意味着用户看不到它们,但您可能想考虑当您的流程失败时会发生什么的影响,这也可以在用户自己创建收件箱规则时随时被禁用。