[This is preliminary documentation and subject to change.]
In order to understand this documentation, you need to be familiar with the following concepts:
Component Object Model (COM) - The event architecture for the SMTP and NNTP services is based upon the COM. Event sinks are merely COM objects that expose the appropriate interfaces for a particular event. Creation of and communication with instances of event sink COM classes is handled strictly through the COM runtime in the standard way.
Simple Mail Transfer Protocol (SMTP/ESMTP) - An understanding of the SMTP protocol is required in order to properly understand and implement a protocol event sink. What a protocol event sink is and how to implement one is covered in this documentation.
RFCs: 822 and MIME Message Formats - An understanding of the various Internet standard message formats is required to implement event sinks that handle message content. This includes the basic RFC 822 message format, as well as the formats specified by the various MIME (RFC 1521, etc) specifications. These specifications include various subjects such as character sets, encoding mechanisms, MIME hierarchies of body parts, and on.
Although not technically required, the following concepts should be understood when implementing event sinks:
Win32 Multithreading - The SMTP/NNTP event architecture supports multi-threading in event sinks. An understanding of this complex subject is recommended.
I/O Completion Ports - The SMTP/NNTP event architecture houses message data in the MailMsg COM class. This object supports writing message content using I/O completion ports for maximum throughput. An understanding of I/O completion ports is recommended, but not required.
CDO for Windows 2000 - The CDO for Microsoft Windows 2000 provides an intuitive, object-oriented representation of messages in RFC 822 and MIME format. When handling such messages, you can take advantage of this component's functionality to simply operations on these messages from within event sinks.