Hook providers implement the ISpoolerHook : IUnknown interface. Aside from the QueryInterface, AddRef, and Release methods inherited from the IUnknown interface, ISpoolerHook has only two additional methods to implement: InboundMsgHook and OutboundMsgHook.
The MAPI spooler calls InboundMsgHook after a transport provider receives an inbound message but before the message is delivered to the default receive folder for the message's message class. The MAPI spooler calls OutboundMsgHook after transport providers have delivered the message to any underlying messaging systems.