SmtpEvent.Idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:61k
- //+------------------------------------------------------------
- //
- // Copyright (C) 1999, Microsoft Corporation
- //
- // File: smtpevent.idl
- //
- // Contents: SMTP Server Event interfaces
- //
- // Description: This file contains the interface definitions for the
- // SMTP Server Events.
- //
- //-------------------------------------------------------------
- cpp_quote("#ifndef __SMTPEVENT_H__")
- cpp_quote("#define __SMTPEVENT_H__")
- import "unknwn.idl";
- import "wtypes.idl";
- import "ocidl.idl";
- import "mailmsg.idl";
- //+------------------------------------------------------------
- //
- // The SMTP Protocol events interfaces:
- //
- //-------------------------------------------------------------
- cpp_quote("//")
- cpp_quote("// Define sink return codes")
- cpp_quote("//")
- cpp_quote("#define EXPE_S_CONSUMED 0x00000002")
- cpp_quote("//")
- cpp_quote("// Define well-known status codes")
- cpp_quote("//")
- cpp_quote("#define EXPE_SUCCESS 0x00000000")
- cpp_quote("#define EXPE_NOT_PIPELINED 0x00000000")
- cpp_quote("#define EXPE_PIPELINED 0x00000001")
- cpp_quote("#define EXPE_REPEAT_COMMAND 0x00000002")
- cpp_quote("#define EXPE_BLOB_READY 0x00000004")
- cpp_quote("#define EXPE_BLOB_DONE 0x00000008")
- cpp_quote("#define EXPE_DROP_SESSION 0x00010000")
- cpp_quote("#define EXPE_CHANGE_STATE 0x00020000")
- cpp_quote("#define EXPE_TRANSIENT_FAILURE 0x00040000")
- cpp_quote("#define EXPE_COMPLETE_FAILURE 0x00080000")
- cpp_quote("#define EXPE_UNHANDLED 0xffffffff")
- cpp_quote("//")
- cpp_quote("// Define constants for next states")
- cpp_quote("//")
- cpp_quote("typedef enum _PE_STATES")
- cpp_quote("{")
- cpp_quote(" PE_STATE_DEFAULT = 0,")
- cpp_quote(" PE_STATE_SESSION_START,")
- cpp_quote(" PE_STATE_MESSAGE_START,")
- cpp_quote(" PE_STATE_PER_RECIPIENT,")
- cpp_quote(" PE_STATE_DATA_OR_BDAT,")
- cpp_quote(" PE_STATE_SESSION_END,")
- cpp_quote(" PE_STATE_MAX_STATES = PE_STATE_SESSION_END")
- cpp_quote("")
- cpp_quote("} PE_STATES;")
- cpp_quote("//")
- cpp_quote("// Define macros for checking SMTP return code classes")
- cpp_quote("//")
- cpp_quote("#define IsSmtpPreliminarySuccess(x) ((((x) % 100) == 1)?TRUE:FALSE)")
- cpp_quote("#define IsSmtpCompleteSuccess(x) ((((x) % 100) == 2)?TRUE:FALSE)")
- cpp_quote("#define IsSmtpIntermediateSuccess(x) ((((x) % 100) == 3)?TRUE:FALSE)")
- cpp_quote("#define IsSmtpTransientFailure(x) ((((x) % 100) == 4)?TRUE:FALSE)")
- cpp_quote("#define IsSmtpCompleteFailure(x) ((((x) % 100) == 5)?TRUE:FALSE)")
- cpp_quote("//")
- cpp_quote("// Define well known IServer property IDs")
- cpp_quote("//")
- cpp_quote("#define PE_ISERVID_DW_INSTANCE 0")
- cpp_quote("#define PE_ISERVID_SZ_DEFAULTDOMAIN 1")
- cpp_quote("#define PE_ISERVID_DW_CATENABLE 2")
- cpp_quote("#define PE_ISERVID_DW_CATFLAGS 3")
- cpp_quote("#define PE_ISERVID_DW_CATPORT 4")
- cpp_quote("#define PE_ISERVID_SZ_CATUSER 5")
- cpp_quote("#define PE_ISERVID_SZ_CATSCHEMA 6")
- cpp_quote("#define PE_ISERVID_SZ_CATBINDTYPE 7")
- cpp_quote("#define PE_ISERVID_SZ_CATPASSWORD 8")
- cpp_quote("#define PE_ISERVID_SZ_CATDOMAIN 9")
- cpp_quote("#define PE_ISERVID_SZ_CATNAMINGCONTEXT 10")
- cpp_quote("#define PE_ISERVID_SZ_CATDSTYPE 11")
- cpp_quote("#define PE_ISERVID_SZ_CATDSHOST 12")
- cpp_quote("//")
- cpp_quote("// Define well known ISession property IDs")
- cpp_quote("//")
- cpp_quote("#define ISESSION_PID_IS_SESSION_AUTHENTICATED 0")
- cpp_quote("#define ISESSION_PID_AUTHENTICATED_USERNAME 1")
- cpp_quote("#define ISESSION_PID_REMOTE_SERVER_NAME 2")
- interface ISmtpInCallbackSink;
- [
- object,
- local,
- uuid(5F15C533-E90E-11D1-8852-00C04FA35B86),
- helpstring("ISmtpInCommandContext Interface"),
- pointer_default(unique)
- ]
- interface ISmtpInCommandContext : IUnknown
- {
- // Query methods
- HRESULT QueryCommand(
- [out,size_is(*pdwSize)] LPSTR pszCommand,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryCommandKeyword(
- [out,size_is(*pdwSize)] LPSTR pszKeyword,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryNativeResponse(
- [out,size_is(*pdwSize)] LPSTR pszNativeResponse,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryResponse(
- [out,size_is(*pdwSize)] LPSTR pszResponse,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryCommandSize(
- [out] DWORD *pdwSize
- );
- HRESULT QueryCommandKeywordSize(
- [out] DWORD *pdwSize
- );
- HRESULT QueryNativeResponseSize(
- [out] DWORD *pdwSize
- );
- HRESULT QueryResponseSize(
- [out] DWORD *pdwSize
- );
- HRESULT QueryCommandStatus(
- [out] DWORD *pdwCommandStatus
- );
- HRESULT QuerySmtpStatusCode(
- [out] DWORD *pdwSmtpStatus
- );
- HRESULT QueryProtocolErrorFlag(
- [out] BOOL *pfProtocolError
- );
- // Set methods
- HRESULT SetResponse(
- [in,string] LPSTR pszResponse,
- [in] DWORD dwSize
- );
- HRESULT AppendResponse(
- [in,string] LPSTR pszResponse,
- [in] DWORD dwSize
- );
- HRESULT SetNativeResponse(
- [in,string] LPSTR pszNativeResponse,
- [in] DWORD dwSize
- );
- HRESULT AppendNativeResponse(
- [in,string] LPSTR pszNativeResponse,
- [in] DWORD dwSize
- );
- HRESULT SetCommandStatus(
- [in] DWORD dwCommandStatus
- );
- HRESULT SetSmtpStatusCode(
- [in] DWORD dwSmtpStatus
- );
- HRESULT SetProtocolErrorFlag(
- [in] BOOL fProtocolError
- );
- // Async completion callback
- HRESULT NotifyAsyncCompletion(
- [in] HRESULT hrResult
- );
- HRESULT SetCallback(
- [in] ISmtpInCallbackSink * pICallback
- );
- };
- [
- object,
- local,
- uuid(5e4fc9da-3e3b-11d3-88f1-00c04fa35b86),
- helpstring("ISmtpInCallbackContext Interface"),
- pointer_default(unique)
- ]
- interface ISmtpInCallbackContext : IUnknown
- {
- // Query methods
- HRESULT QueryBlob(
- [out] BYTE **ppbBlob,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryBlobSize(
- [out] DWORD *pdwSize
- );
- // Set methods
- HRESULT SetResponse(
- [in,string] LPSTR pszResponse,
- [in] DWORD dwSize
- );
- HRESULT AppendResponse(
- [in,string] LPSTR pszResponse,
- [in] DWORD dwSize
- );
- HRESULT SetCommandStatus(
- [in] DWORD dwCommandStatus
- );
- HRESULT SetSmtpStatusCode(
- [in] DWORD dwSmtpStatus
- );
- };
- [
- object,
- local,
- uuid(c849b5f2-0a80-11d2-aa67-00c04fa35b82),
- helpstring("ISmtpOutCommandContext Interface"),
- pointer_default(unique)
- ]
- interface ISmtpOutCommandContext : IUnknown
- {
- // Query methods
- HRESULT QueryCommand(
- [out,size_is(*pdwSize)] LPSTR pszCommand,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryCommandKeyword(
- [out,size_is(*pdwSize)] LPSTR pszKeyword,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryNativeCommand(
- [out,size_is(*pdwSize)] LPSTR pszNativeCommand,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryCommandSize(
- [out] DWORD *pdwSize
- );
- HRESULT QueryCommandKeywordSize(
- [out] DWORD *pdwSize
- );
- HRESULT QueryNativeCommandSize(
- [out] DWORD *pdwSize
- );
- HRESULT QueryCurrentRecipientIndex(
- [out] DWORD *pdwRecipientIndex
- );
- HRESULT QueryCommandStatus(
- [out] DWORD *pdwCommandStatus
- );
- // Set methods
- HRESULT SetCommand(
- [in,string] LPSTR szCommand,
- [in] DWORD dwSize
- );
- HRESULT AppendCommand(
- [in,string] LPSTR szCommand,
- [in] DWORD dwSize
- );
- HRESULT SetCommandStatus(
- [in] DWORD dwCommandStatus
- );
- // Async completion callback
- HRESULT NotifyAsyncCompletion(
- [in] HRESULT hrResult
- );
- HRESULT SetBlob(
- [in] BYTE *pbBlob,
- [in] DWORD dwSize
- );
- };
- [
- object,
- local,
- uuid(e38f9ad2-0a82-11d2-aa67-00c04fa35b82),
- helpstring("ISmtpServerResponseContext Interface"),
- pointer_default(unique)
- ]
- interface ISmtpServerResponseContext : IUnknown
- {
- // Query methods
- HRESULT QueryCommand(
- [out,size_is(*pdwSize)] LPSTR pszCommand,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryCommandKeyword(
- [out,size_is(*pdwSize)] LPSTR pszKeyword,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryResponse(
- [out,size_is(*pdwSize)] LPSTR pszResponse,
- [in,out] DWORD *pdwSize
- );
- HRESULT QueryCommandSize(
- [out] DWORD *pdwSize
- );
- HRESULT QueryCommandKeywordSize(
- [out] DWORD *pdwSize
- );
- HRESULT QueryResponseSize(
- [out] DWORD *pdwSize
- );
- HRESULT QuerySmtpStatusCode(
- [out] DWORD *pdwSmtpStatus
- );
- HRESULT QueryResponseStatus(
- [out] DWORD *pdwResponseStatus
- );
- HRESULT QueryPipelinedFlag(
- [out] BOOL *pfResponseIsPipelined
- );
- HRESULT QueryNextEventState(
- [out] DWORD *pdwNextState
- );
- // Set methods
- HRESULT SetResponseStatus(
- [in] DWORD dwResponseStatus
- );
- HRESULT SetNextEventState(
- [in] DWORD dwNextState
- );
- // Async completion callback
- HRESULT NotifyAsyncCompletion(
- [in] HRESULT hrResult
- );
- };
- // =============================================================
- //
- // Inbound Protocol Event Sink Shape
- //
- [
- object,
- uuid(b2d42a0e-0d5f-11d2-aa68-00c04fa35b82),
- helpstring("ISmtpInCommandSink Interface"),
- pointer_default(unique)
- ]
- interface ISmtpInCommandSink : IUnknown
- {
- [helpstring("OnSmtpInCommand method")]
- HRESULT OnSmtpInCommand(
- [in] IUnknown *pServer,
- [in] IUnknown *pSession,
- [in] IMailMsgProperties *pMsg,
- [in] ISmtpInCommandContext *pContext
- );
- };
- // =============================================================
- //
- // Outbound Command Generation Protocol Event Sink Shape
- //
- [
- object,
- uuid(cfdbb9b0-0ca0-11d2-aa68-00c04fa35b82),
- helpstring("ISmtpOutCommandSink Interface"),
- pointer_default(unique)
- ]
- interface ISmtpOutCommandSink : IUnknown
- {
- [helpstring("OnSmtpOutCommand method")]
- HRESULT OnSmtpOutCommand(
- [in] IUnknown *pServer,
- [in] IUnknown *pSession,
- [in] IMailMsgProperties *pMsg,
- [in] ISmtpOutCommandContext *pContext
- );
- };
- // =============================================================
- //
- // Server Response Protocol Event Sink Shape
- //
- [
- object,
- uuid(d7e10222-0ca1-11d2-aa68-00c04fa35b82),
- helpstring("ISmtpServerResponseSink Interface"),
- pointer_default(unique)
- ]
- interface ISmtpServerResponseSink : IUnknown
- {
- [helpstring("OnSmtpServerResponse method")]
- HRESULT OnSmtpServerResponse(
- [in] IUnknown *pServer,
- [in] IUnknown *pSession,
- [in] IMailMsgProperties *pMsg,
- [in] ISmtpServerResponseContext *pContext
- );
- };
- // =============================================================
- //
- // Inbound Protocol Event Callback Sink Shape
- //
- [
- object,
- uuid(0012b624-3e3c-11d3-88f1-00c04fa35b86),
- helpstring("ISmtpInCallbackSink Interface"),
- pointer_default(unique)
- ]
- interface ISmtpInCallbackSink : IUnknown
- {
- [helpstring("OnSmtpInCallback method")]
- HRESULT OnSmtpInCallback(
- [in] IUnknown *pServer,
- [in] IUnknown *pSession,
- [in] IMailMsgProperties *pMsg,
- [in] ISmtpInCallbackContext *pContext
- );
- };
- //+------------------------------------------------------------
- //
- // The SMTP Mail Transport interfaces:
- //
- //-------------------------------------------------------------
- //
- // The default processing priority of the transport events:
- //
- cpp_quote("#define SMTP_TRANSPORT_DEFAULT_PRIORITY 16384")
- //+------------------------------------------------------------
- //
- // Interface: IMailTransportNotify
- //
- // Synopsis: Used for async events
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(6E1CAA77-FCD4-11d1-9DF9-00C04FA322BA),
- helpstring("IMailTransportNotify Interface"),
- pointer_default(unique)
- ]
- interface IMailTransportNotify : IUnknown
- {
- [local]
- HRESULT Notify(
- [in] HRESULT hrCompletion,
- [in] PVOID pvContext);
- };
- //+------------------------------------------------------------
- //
- // Interface: IMailTransportSubmission
- //
- // Synopsis: Used for the SMTP_MAILTRANSPORT_ONMESSAGESUBMISSION event
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(CE681916-FF14-11d1-9DFB-00C04FA322BA),
- helpstring("IMailTransportSubmission Interface"),
- pointer_default(unique)
- ]
- interface IMailTransportSubmission : IUnknown
- {
- [local]
- HRESULT OnMessageSubmission(
- [in] IMailMsgProperties *pIMailMsg,
- [in] IMailTransportNotify *pINotify,
- [in] PVOID pvNotifyContext);
- };
- //+------------------------------------------------------------
- //
- // Interface: IMailTransportOnPreCategorize
- //
- // Synopsis: Used for the SMTP_MAILTRANSPORT_PRECATEGORIZE event
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(A3ACFB0E-83FF-11d2-9E14-00C04FA322BA),
- helpstring("IMailTransportOnPreCategorize Interface"),
- pointer_default(unique)
- ]
- interface IMailTransportOnPreCategorize : IUnknown
- {
- [local]
- HRESULT OnSyncMessagePreCategorize(
- [in] IMailMsgProperties *pIMailMsg,
- [in] IMailTransportNotify *pINotify,
- [in] PVOID pvNotifyContext);
- };
- //+------------------------------------------------------------
- //
- // Interface: IMailTransportOnPostCategorize
- //
- // Synopsis: Used for the SMTP_MAILTRANSPORT_POSTCATEGORIZE event
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(76719653-05A6-11d2-9DFD-00C04FA322BA),
- helpstring("IMailTransportOnPostCategorize Interface"),
- pointer_default(unique)
- ]
- interface IMailTransportOnPostCategorize : IUnknown
- {
- [local]
- HRESULT OnMessagePostCategorize(
- [in] IMailMsgProperties *pIMailMsg,
- [in] IMailTransportNotify *pINotify,
- [in] PVOID pvNotifyContext);
- };
- cpp_quote("#define RESET_NEXT_HOPS 0")
- cpp_quote("#define RESET_MESSAGE_TYPES 1")
- //+------------------------------------------------------------
- //
- // Interface: IMailTransportRouterReset
- //
- // Synopsis: System implemented interface for resetting routes
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(A928AD12-1610-11d2-9E02-00C04FA322BA),
- helpstring("IMailTransportRouterReset Interface"),
- pointer_default(unique)
- ]
- interface IMailTransportRouterReset : IUnknown
- {
- HRESULT ResetRoutes(
- [in] DWORD dwResetType);
- };
- //+------------------------------------------------------------
- //
- // Interface: IMailTransportSetRouterReset
- //
- // Synopsis: Used for the SMTP_MAILTRANSPORT_ON_SET_ROUTER_RESET event
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(A928AD11-1610-11d2-9E02-00C04FA322BA),
- helpstring("IMailTransportSetRouterReset Interface"),
- pointer_default(unique)
- ]
- interface IMailTransportSetRouterReset : IUnknown
- {
- HRESULT RegisterResetInterface(
- [in] DWORD dwVirtualServerID,
- [in] IMailTransportRouterReset *pIRouterReset);
- };
- //+------------------------------------------------------------
- //
- // Interface: IMessageRouter
- //
- // Synopsis: Sink supplied interface
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(A928AD14-1610-11d2-9E02-00C04FA322BA),
- helpstring("IMessageRouter Interface"),
- pointer_default(unique)
- ]
- interface IMessageRouter : IUnknown
- {
- [local]
- GUID GetTransportSinkID();
- HRESULT GetMessageType(
- [in] IMailMsgProperties *pIMailMsg,
- [out] DWORD *pdwMessageType);
- HRESULT ReleaseMessageType(
- [in] DWORD dwMessageType,
- [in] DWORD dwReleaseCount);
- [local]
- HRESULT GetNextHop(
- [in] LPSTR pszDestinationAddressType,
- [in] LPSTR pszDestinationAddress,
- [in] DWORD dwMessageType,
- [out] LPSTR *ppszRouteAddressType,
- [out] LPSTR *ppszRouteAddress,
- [out] DWORD *pdwScheduleID,
- [out] LPSTR *ppszRouteAddressClass,
- [out] LPSTR *ppszConnectorName,
- [out] DWORD *pdwNextHopType);
- [local]
- HRESULT GetNextHopFree(
- [in] LPSTR pszDestinationAddressType,
- [in] LPSTR pszDestinationAddress,
- [in] LPSTR pszConnectorName,
- [in] LPSTR pszRouteAddressType,
- [in] LPSTR pszRouteAddress,
- [in] LPSTR pszRouteAddressClass);
- HRESULT ConnectionFailed(
- [in, string] LPSTR pszConnectorName);
- };
- //Some standard RouteAddressTypes that might be returned by GetNextHop
- const LPCSTR MTI_ROUTING_ADDRESS_TYPE_NULL = NULL;
- const LPCSTR MTI_ROUTING_ADDRESS_TYPE_SMTP = "SMTP";
- const LPCSTR MTI_ROUTING_ADDRESS_TYPE_X400 = "X400";
- const LPCSTR MTI_ROUTING_ADDRESS_TYPE_X500 = "X500";
- //---[ NEXT_HOP_TYPE ]---------------------------------------------------------
- //
- //
- // Description:
- // Enum for the possible next hop types
- //
- //-----------------------------------------------------------------------------
- typedef [v1_enum] enum {
- MTI_NEXT_HOP_TYPE_SAME_VIRTUAL_SERVER,
- MTI_NEXT_HOP_TYPE_PEER_SMTP1_BYPASS_CONFIG_LOOKUP,
- MTI_NEXT_HOP_TYPE_EXTERNAL_SMTP,
- MTI_NEXT_HOP_TYPE_UNREACHABLE,
- MTI_NEXT_HOP_TYPE_CURRENTLY_UNREACHABLE,
- MTI_NEXT_HOP_TYPE_PEER_SMTP2_BYPASS_CONFIG_LOOKUP
- } MTI_NEXT_HOP_TYPE, *PMTI_NEXT_HOP_TYPE;
- // #defines for old names for these values
- #define MTI_NEXT_HOP_TYPE_REMOTE
- (MTI_NEXT_HOP_TYPE_PEER_SMTP1_BYPASS_CONFIG_LOOKUP)
- #define MTI_NEXT_HOP_TYPE_RESERVED
- (MTI_NEXT_HOP_TYPE_EXTERNAL_SMTP)
- //+------------------------------------------------------------
- //
- // Interface: IMailTransportRouterSetLinkState
- //
- // Synopsis: System implemented interface for allowing a
- // routing sink to update the link state for features such
- // as:
- // - Scheduled Connections
- // - Scheduled Commands
- //
- // If LINK_STATE_SCHED_ENABLED is being unset... a next
- // scheduled connection time should be returned.
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(B870CE28-A755-11d2-A6A9-00C04FA3490A),
- helpstring("IMailTransportRouterSetLinkState Interface"),
- pointer_default(unique)
- ]
- interface IMailTransportRouterSetLinkState : IUnknown
- {
- HRESULT SetLinkState(
- [in] LPSTR szLinkDomainName,
- [in] GUID guidRouterGUID,
- [in] DWORD dwScheduleID,
- [in] LPSTR szConnectorName,
- [in] DWORD dwSetLinkState,
- [in] DWORD dwUnsetLinkState,
- [in] FILETIME *pftNextScheduled,
- [in] IMessageRouter *pMessageRouter);
- };
- //+------------------------------------------------------------
- //
- // Interface: IMessageRouterLinkStateNotification
- //
- // Synopsis: Sink supplied interface that is used for notifying
- // the routing sink of link state on connection acks.
- //
- // If LINK_STATE_SCHED_ENABLED is being unset... a next
- // scheduled connection time should be returned.
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(B870CE29-A755-11d2-A6A9-00C04FA3490A),
- helpstring("IMessageRouterLinkStateNotification Interface"),
- pointer_default(unique)
- ]
- interface IMessageRouterLinkStateNotification : IUnknown
- {
- HRESULT LinkStateNotify(
- [in] LPSTR szLinkDomainName,
- [in] GUID guidRouterGUID,
- [in] DWORD dwScheduleID,
- [in] LPSTR szConnectorName,
- [in] DWORD dwLinkState,
- [in] DWORD cConsecutiveFailures,
- [in, out] FILETIME *pftNextScheduled,
- [out] DWORD *pdwSetLinkState,
- [out] DWORD *pdwUnsetLinkState);
- };
- //---[ eLinkInfoFlags ]--------------------------------------------------------
- //
- //
- // Description: Flags used to describe boolean per *link* state. Used to
- // decide if it is an appropriate time to make a connection. Event sinks
- // can set and unset these flags to influence the connection manager.
- //
- //-----------------------------------------------------------------------------
- typedef [v1_enum] enum
- {
- LINK_STATE_NO_ACTION = 0x00000000, //NULL op... setting/unsetting this has no effect on link state
- LINK_STATE_RETRY_ENABLED = 0x00000001, //If NOT set, link is pending retry
- LINK_STATE_SCHED_ENABLED = 0x00000002, //If NOT set, link is pending scheduled connection
- LINK_STATE_CMD_ENABLED = 0x00000004, //If set, link should be activated to send a command
- LINK_STATE_ADMIN_HALT = 0x00000008, //If set, admin has request no connections be made
- LINK_STATE_ADMIN_FORCE_CONN = 0x00000010, //Admin has requested that a connection be made now
- LINK_STATE_CONNECT_IF_NO_MSGS = 0x00000020, //Connect even if there are no messages. Link will not be deleted while this is set.
- LINK_STATE_DO_NOT_DELETE = 0x00000040, //Routing is interested in this link... it should not be deleted by the transport.
- LINK_STATE_CREATE_IF_NECESSARY = 0x00000080, //Create a new link if one doesn't exist
- LINK_STATE_LINK_NO_LONGER_USED = 0x00000100, //Set when SMTP is done with link
- LINK_STATE_TYPE_INTERNAL_SMTP = 0x00000200,
- LINK_STATE_TYPE_EXTERNAL_SMTP = 0x00000400,
- LINK_STATE_DO_NOT_DELETE_UNTIL_NEXT_NOTIFY = 0x00000800,
- LINK_STATE_RESERVED = 0xFFFF0000, //Reserved for internal use
- } eLinkStateFlags;
- //+------------------------------------------------------------
- //
- // Interface: IMailTransportRoutingEngine
- //
- // Synopsis: Used for the SMTP_MAILTRANSPORT_ON_GET_ROUTER_FOR_MESSAGE event
- //
- //
- //-------------------------------------------------------------
- //
- // Specific error code(s) that can be returned from GetMessageRouter
- //
- cpp_quote("#define ROUTER_E_NOTINTERESTED MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF,0x1000)")
- [
- object,
- uuid(A928AD13-1610-11d2-9E02-00C04FA322BA),
- helpstring("IMailTransportRoutingEngine Interface"),
- pointer_default(unique)
- ]
- interface IMailTransportRoutingEngine : IUnknown
- {
- [local]
- HRESULT GetMessageRouter(
- [in] IMailMsgProperties *pIMailMsg,
- [in] IMessageRouter *pICurrentMessageRouter,
- [out] IMessageRouter **ppIMessageRouter);
- };
- cpp_quote("#define MTE_QUEUED_OUTBOUND 1010")
- cpp_quote("#define MTE_TRANSFERRED_OUTBOUND 1011")
- cpp_quote("#define MTE_RECEIVED_INBOUND 1012")
- cpp_quote("#define MTE_TRANSFERRED_INBOUND 1013")
- cpp_quote("#define MTE_MESSAGE_REROUTED 1014")
- cpp_quote("#define MTE_REPORT_TRANSFERRED_IN 1015")
- cpp_quote("#define MTE_REPORT_TRANSFERRED_OUT 1016")
- cpp_quote("#define MTE_REPORT_GENERATED 1017")
- cpp_quote("#define MTE_REPORT_ABSORBED 1018")
- cpp_quote("#define MTE_SUBMIT_MESSAGE_TO_AQ 1019")
- cpp_quote("#define MTE_BEGIN_OUTBOUND_TRANSFER 1020")
- cpp_quote("#define MTE_BADMAIL 1021")
- cpp_quote("#define MTE_AQ_FAILURE 1022")
- cpp_quote("#define MTE_LOCAL_DELIVERY 1023")
- cpp_quote("#define MTE_SUBMIT_MESSAGE_TO_CAT 1024")
- cpp_quote("#define MTE_BEGIN_SUBMIT_MESSAGE 1025")
- cpp_quote("#define MTE_AQ_FAILED_MESSAGE 1026")
- cpp_quote("#define MTE_NDR_ALL 1030")
- cpp_quote("#define MTE_END_OUTBOUND_TRANSFER 1031")
- [
- helpstring("Interface For Message Tracking."),
- local,
- object,
- pointer_default(unique),
- uuid(1bc3580e-7e4f-11d2-94f4-00C04f79f1d6)
- ]
- interface IMsgTrackLog : IUnknown
- {
- HRESULT OnSyncLogMsgTrackInfo(
- [in] IUnknown *pIServer,
- [in] IMailMsgProperties *pIMailMsgProp,
- [in] LPMSG_TRACK_INFO pMsgTrackInfo);
- };
- [
- helpstring("Interface For Enumerating Resolver Records."),
- local,
- object,
- pointer_default(unique),
- uuid(e5b89c52-8e0b-11d2-94f6-00C04f79f1d6)
- ]
- interface IDnsResolverRecord : IUnknown
- {
- HRESULT GetItem( [in] ULONG cIndex, [out] LPSTR *ppszHostName, [out] DWORD *pAddr );
- HRESULT Count( [out] DWORD *pcRecords );
- };
- [
- helpstring("Interface For Getting Resolver Records."),
- local,
- object,
- pointer_default(unique),
- uuid(d95a4d0c-8e06-11d2-94f6-00C04f79f1d6)
- ]
- interface IDnsResolverRecordSink : IUnknown
- {
- HRESULT OnSyncGetResolverRecord( [in] LPSTR pszHostName,
- [in] LPSTR pszInstanceFQDN,
- [in] DWORD dwVirtualServerId,
- [out] IDnsResolverRecord **ppDnsResolverRecord);
- };
- [
- helpstring("MaxMsgSize Exceeded event interface."),
- local,
- object,
- pointer_default(unique),
- uuid(b997f192-a67d-11d2-94f7-00C04f79f1d6)
- ]
- interface ISmtpMaxMsgSize : IUnknown
- {
- HRESULT OnSyncMaxMsgSize( [in] IUnknown *pIUnknown,
- [in] IMailMsgProperties *pIMailMsgProp,
- [out] BOOL *pfShouldImposeLimit );
- };
- [
- helpstring("Log event interface."),
- local,
- object,
- pointer_default(unique),
- uuid(35bc9ad7-7aa5-43ee-a0ab-94e1d6be99e5)
- ]
- interface ISmtpLog : IUnknown
- {
- HRESULT OnSyncLog(
- [in] LPSMTP_LOG_EVENT_INFO pLogEventInfo);
- };
- [
- helpstring("Get Aux Domain Info Flags event interface."),
- local,
- object,
- pointer_default(unique),
- uuid(d038c9da-4977-491d-8b0e-97f2e546c35a)
- ]
- interface ISmtpGetAuxDomainInfoFlags : IUnknown
- {
- HRESULT OnGetAuxDomainInfoFlags(
- [in] IUnknown *pIServer,
- [in] LPCSTR pszDomainName,
- [out] DWORD *pdwDomainInfoFlags );
- };
- //+------------------------------------------------------------
- //
- // The Categorizer event interfaces:
- //
- //-------------------------------------------------------------
- interface ICategorizerListResolve;
- interface ICategorizerItemAttributes;
- interface ICategorizerMailMsgs;
- interface ICategorizerItem;
- interface ICategorizerDomainInfo;
- interface ISMTPCategorizer;
- interface ISMTPCategorizerCompletion;
- interface ISMTPCategorizerDLCompletion;
- //
- // A structure and definitions to handle the configuration of
- // a virtual server (for categorizer)
- //
- typedef [v1_enum] enum
- {
- CCAT_CONFIG_INFO_FLAGS = 0x0001,
- CCAT_CONFIG_INFO_ROUTINGTYPE = 0x0002,
- CCAT_CONFIG_INFO_BINDDOMAIN = 0x0004,
- CCAT_CONFIG_INFO_USER = 0x0008,
- CCAT_CONFIG_INFO_PASSWORD = 0x0010,
- CCAT_CONFIG_INFO_BINDTYPE = 0x0020,
- CCAT_CONFIG_INFO_SCHEMATYPE = 0x0040,
- CCAT_CONFIG_INFO_HOST = 0x0080,
- CCAT_CONFIG_INFO_NAMINGCONTEXT = 0x0100,
- CCAT_CONFIG_INFO_DEFAULTDOMAIN = 0x0200,
- CCAT_CONFIG_INFO_PORT = 0x0400,
- CCAT_CONFIG_INFO_ISMTPSERVER = 0x0800,
- CCAT_CONFIG_INFO_IDOMAININFO = 0x1000,
- CCAT_CONFIG_INFO_ENABLE = 0x2000,
- CCAT_CONFIG_INFO_DEFAULT = 0x4000,
- CCAT_CONFIG_INFO_VSID = 0x8000,
- CCAT_CONFIG_INFO_ALL = 0xFFFF
- } eCatConfigInfoFlags;
- typedef struct _tagCCatConfigInfo {
- DWORD dwCCatConfigInfoFlags; //Flags describing which fields
- //are valid
- DWORD dwEnable;
- DWORD dwCatFlags;
- LPSTR pszRoutingType;
- LPSTR pszBindDomain;
- LPSTR pszUser;
- LPSTR pszPassword;
- LPSTR pszBindType;
- LPSTR pszSchemaType;
- LPSTR pszHost;
- LPSTR pszNamingContext;
- LPSTR pszDefaultDomain;
- DWORD dwPort;
- ISMTPServer *pISMTPServer;
- ICategorizerDomainInfo *pIDomainInfo;
- DWORD dwVirtualServerID;
- } CCATCONFIGINFO, *PCCATCONFIGINFO;
- typedef [v1_enum] enum _CAT_ADDRESS_TYPE {
- CAT_SMTP = 0, // SMTP address type
- CAT_X500 = 1, // X500 address type (ex: "/DC=blah/dc=...")
- CAT_X400 = 2, // X400 address type
- CAT_DN = 3, // Distinguished Name
- CAT_LEGACYEXDN = 4, // LegacyExchangeDN attribute
- CAT_CUSTOMTYPE = 5, // Foreign address type
- CAT_UNKNOWNTYPE = 6, // Not a valid input value
- } CAT_ADDRESS_TYPE;
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerProperties
- //
- // Synopsis: Property setting/retrieval interface
- //
- //
- //-------------------------------------------------------------
- [
- local,
- object,
- uuid(96BF3199-79D8-11d2-9E11-00C04FA322BA),
- helpstring("ICategorizerProperties Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerProperties : IUnknown
- {
- HRESULT GetStringA(
- [in] DWORD dwPropId,
- [in] DWORD dwcchValue,
- [out, size_is(dwcchValue)] LPSTR pszValue);
- HRESULT PutStringA(
- [in] DWORD dwPropId,
- [in, unique] LPSTR pszValue);
- HRESULT GetDWORD(
- [in] DWORD dwPropId,
- [out] DWORD *pdwValue);
- HRESULT PutDWORD(
- [in] DWORD dwPropId,
- [in] DWORD dwValue);
- HRESULT GetHRESULT(
- [in] DWORD dwPropId,
- [out] HRESULT *phrValue);
- HRESULT PutHRESULT(
- [in] DWORD dwPropId,
- [in] HRESULT hrValue);
- HRESULT GetBool(
- [in] DWORD dwPropId,
- [out] BOOL *pfValue);
- HRESULT PutBool(
- [in] DWORD dwPropId,
- [in] BOOL fValue);
- HRESULT GetPVoid(
- [in] DWORD dwPropId,
- [out] PVOID *pvValue);
- HRESULT PutPVoid(
- [in] DWORD dwPropId,
- [in] PVOID pvValue);
- HRESULT GetIUnknown(
- [in] DWORD dwPropId,
- [out] IUnknown **pUnknown);
- HRESULT PutIUnknown(
- [in] DWORD dwPropId,
- [in] IUnknown *pUnknown);
- HRESULT GetIMailMsgProperties(
- [in] DWORD dwPropId,
- [out] IMailMsgProperties **ppIMsg);
- HRESULT PutIMailMsgProperties(
- [in] DWORD dwPropId,
- [in] IMailMsgProperties *pIMsg);
- HRESULT GetIMailMsgRecipientsAdd(
- [in] DWORD dwPropId,
- [out] IMailMsgRecipientsAdd **ppIMsgRecipientsAdd);
- HRESULT PutIMailMsgRecipientsAdd(
- [in] DWORD dwPropId,
- [in] IMailMsgRecipientsAdd *pIMsgRecipientsAdd);
- HRESULT GetICategorizerItemAttributes(
- [in] DWORD dwPropId,
- [out] ICategorizerItemAttributes **ppICategorizerItemAttributes);
- HRESULT PutICategorizerItemAttributes(
- [in] DWORD dwPropId,
- [in] ICategorizerItemAttributes *pICategorizerItemAttributes);
- HRESULT GetICategorizerListResolve(
- [in] DWORD dwPropId,
- [out] ICategorizerListResolve **ppICategorizerListResolve);
- HRESULT PutICategorizerListResolve(
- [in] DWORD dwPropId,
- [in] ICategorizerListResolve *pICategorizerListResolve);
- HRESULT GetICategorizerMailMsgs(
- [in] DWORD dwPropId,
- [out] ICategorizerMailMsgs **ppICategorizerMailMsgs);
- HRESULT PutICategorizerMailMsgs(
- [in] DWORD dwPropId,
- [in] ICategorizerMailMsgs *pICategorizerMailMsgs);
- HRESULT GetICategorizerItem(
- [in] DWORD dwPropId,
- [out] ICategorizerItem **ppICategorizerItem);
- HRESULT PutICategorizerItem(
- [in] DWORD dwPropId,
- [in] ICategorizerItem *pICategorizerItem);
- HRESULT UnSetPropId(
- [in] DWORD dwPropId);
- };
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerParameters
- //
- // Synopsis: Holds data concerning attribute names for the schema in use
- //
- //
- //-------------------------------------------------------------
- typedef [v1_enum] enum
- {
- DSPARAMETER_LDAPHOST = 0,
- DSPARAMETER_LDAPBINDTYPE,
- DSPARAMETER_LDAPDOMAIN,
- DSPARAMETER_LDAPACCOUNT,
- DSPARAMETER_LDAPPASSWORD,
- DSPARAMETER_LDAPNAMINGCONTEXT,
- DSPARAMETER_LDAPPORT,
- DSPARAMETER_BATCHINGLIMIT,
- DSPARAMETER_SEARCHATTRIBUTE_SMTP,
- DSPARAMETER_SEARCHFILTER_SMTP,
- DSPARAMETER_SEARCHATTRIBUTE_X500,
- DSPARAMETER_SEARCHFILTER_X500,
- DSPARAMETER_SEARCHATTRIBUTE_X400,
- DSPARAMETER_SEARCHFILTER_X400,
- DSPARAMETER_SEARCHATTRIBUTE_LEGACYEXDN,
- DSPARAMETER_SEARCHFILTER_LEGACYEXDN,
- DSPARAMETER_SEARCHATTRIBUTE_RDN,
- DSPARAMETER_SEARCHFILTER_RDN,
- DSPARAMETER_SEARCHATTRIBUTE_DN,
- DSPARAMETER_SEARCHFILTER_DN,
- DSPARAMETER_SEARCHATTRIBUTE_FOREIGNADDRESS,
- DSPARAMETER_SEARCHFILTER_FOREIGNADDRESS,
- DSPARAMETER_ATTRIBUTE_OBJECTCLASS,
- DSPARAMETER_ATTRIBUTE_DEFAULT_SMTP,
- DSPARAMETER_ATTRIBUTE_DEFAULT_X500,
- DSPARAMETER_ATTRIBUTE_DEFAULT_X400,
- DSPARAMETER_ATTRIBUTE_DEFAULT_DN,
- DSPARAMETER_ATTRIBUTE_DEFAULT_LEGACYEXDN,
- DSPARAMETER_ATTRIBUTE_FORWARD_SMTP,
- DSPARAMETER_ATTRIBUTE_DL_MEMBERS,
- DSPARAMETER_ATTRIBUTE_DL_DYNAMICFILTER,
- DSPARAMETER_ATTRIBUTE_DL_DYNAMICBASEDN,
- DSPARAMETER_OBJECTCLASS_USER,
- DSPARAMETER_OBJECTCLASS_DL_X500,
- DSPARAMETER_OBJECTCLASS_DL_SMTP,
- DSPARAMETER_OBJECTCLASS_DL_DYNAMIC,
- DSPARAMETER_ENDENUMMESS,
- DSPARAMETER_INVALID
- } eDSPARAMETER;
- [
- object,
- local,
- uuid(86F9DA7B-EB6E-11d1-9DF3-00C04FA322BA),
- helpstring("ICategorizerParameters Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerParameters : IUnknown
- {
- HRESULT GetDSParameterA(
- [in] DWORD dwDSParameter,
- [out] LPSTR *ppszValue);
- HRESULT SetDSParameterA(
- [in] DWORD dwDSParameter,
- [in, unique] LPCSTR pszValue);
- HRESULT RequestAttributeA(
- [in, unique] LPCSTR pszName);
- HRESULT GetAllAttributes(
- [out] LPSTR **prgszAllAttributes);
- HRESULT ReserveICatItemPropIds(
- [in] DWORD dwNumPropIdsRequested,
- [out] DWORD *pdwBeginningPropId);
- HRESULT ReserveICatListResolvePropIds(
- [in] DWORD dwNumPropIdsRequested,
- [out] DWORD *pdwBeginningPropId);
- HRESULT GetCCatConfigInfo(
- [out] PCCATCONFIGINFO *ppCCatConfigInfo);
- };
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerQueries
- //
- // Synopsis: Interface to an object that holds query strings
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(86F9DA7D-EB6E-11d1-9DF3-00C04FA322BA),
- helpstring("ICategorizerQueries Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerQueries : IUnknown
- {
- HRESULT SetQueryString(
- [in, unique] LPSTR pszQueryString);
- HRESULT GetQueryString(
- [out] LPSTR *ppszQueryString);
- };
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerMailMsgs
- //
- // Synopsis: Interface to hold all MailMsgs associated with a message
- // categorization
- //
- //-------------------------------------------------------------
- //
- // The structure used for mailmsg enumeration
- //
- typedef PVOID CATMAILMSG_ENUMERATOR, *PCATMAILMSG_ENUMERATOR;
- [
- object,
- local,
- uuid(86F9DA80-EB6E-11d1-9DF3-00C04FA322BA),
- helpstring("ICategorizerMailMsgs Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerMailMsgs : IUnknown
- {
- HRESULT GetMailMsg(
- [in] DWORD dwFlags,
- [out] IMailMsgProperties **ppIMailMsgProperties,
- [out] IMailMsgRecipientsAdd **ppIMailMsgRecipientsAdd,
- [out] BOOL *pfCreated);
- HRESULT ReBindMailMsg(
- [in] DWORD dwFlags,
- [in] IUnknown *pStoreDriver);
- //
- // Functions to enumerate all created mailmsg
- //
- HRESULT BeginMailMsgEnumeration(
- [in] PCATMAILMSG_ENUMERATOR penumerator);
- HRESULT GetNextMailMsg(
- [in] PCATMAILMSG_ENUMERATOR penumerator,
- [out] DWORD *pdwFlags,
- [out] IMailMsgProperties **ppIMailMsgProperties,
- [out] IMailMsgRecipientsAdd **ppIMailMsgRecipientsAdd);
- HRESULT EndMailMsgEnumeration(
- [in] PCATMAILMSG_ENUMERATOR penumerator);
- }
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerItemAttributes
- //
- // Synopsis: Sink supplied interface with methods to get at object attributes
- //
- //
- //-------------------------------------------------------------
- //
- // The structure used for attribute enumeration
- //
- typedef struct _tagAttributeEnumerator {
- PVOID pvBase;
- PVOID pvCurrent;
- PVOID pvContext;
- } ATTRIBUTE_ENUMERATOR, *PATTRIBUTE_ENUMERATOR;
- [
- object,
- uuid(86F9DA7F-EB6E-11d1-9DF3-00C04FA322BA),
- helpstring("ICategorizerItemAttributes Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerItemAttributes : IUnknown
- {
- //
- // Functions to enumerate through a specified attribute value
- //
- [local] HRESULT BeginAttributeEnumeration(
- [in, unique] LPCSTR pszAttributeName,
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- [local] HRESULT GetNextAttributeValue(
- [in] PATTRIBUTE_ENUMERATOR penumerator,
- [out] LPSTR *ppszAttributeValue);
- [local] HRESULT RewindAttributeEnumeration(
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- [local] HRESULT EndAttributeEnumeration(
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- //
- // Functions to enumerate through the available attribute names
- //
- [local] HRESULT BeginAttributeNameEnumeration(
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- [local] HRESULT GetNextAttributeName(
- [in] PATTRIBUTE_ENUMERATOR penumerator,
- [out] LPSTR *ppszAttributeName);
- [local] HRESULT EndAttributeNameEnumeration(
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- [local] GUID GetTransportSinkID();
- [local] HRESULT AggregateAttributes(
- [in] ICategorizerItemAttributes *pICatItemAttr);
- //
- // Support to retrieve all attributes at the same time.
- //
- [local] HRESULT GetAllAttributeValues(
- [in, unique] LPCSTR pszAttributeName,
- [in] PATTRIBUTE_ENUMERATOR penumerator,
- [out] LPSTR **prgpszAttributeValues);
- [local] HRESULT ReleaseAllAttributeValues(
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- //
- // Count the attribute values before enumeating
- //
- [local] HRESULT CountAttributeValues(
- [in] PATTRIBUTE_ENUMERATOR penumerator,
- [out] DWORD *pdwCount);
- }
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerItemRawAttributes
- //
- // Synopsis: Sink supplied interface with methods to get at raw object attributes
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(34C3D389-8FA7-11d2-9E16-00C04FA322BA),
- helpstring("ICategorizerItemRawAttributes Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerItemRawAttributes : IUnknown
- {
- //
- // Functions to enumerate through a specified attribute value
- //
- [local] HRESULT BeginRawAttributeEnumeration(
- [in, unique] LPCSTR pszAttributeName,
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- [local] HRESULT GetNextRawAttributeValue(
- [in] PATTRIBUTE_ENUMERATOR penumerator,
- [out] DWORD *pdwcb,
- [out] LPVOID *pvAttributeValue);
- [local] HRESULT RewindRawAttributeEnumeration(
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- [local] HRESULT EndRawAttributeEnumeration(
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- //
- // Count the attribute values before enumeating
- //
- [local] HRESULT CountRawAttributeValues(
- [in] PATTRIBUTE_ENUMERATOR penumerator,
- [out] DWORD *pdwCount);
- }
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerItem
- //
- // Synopsis: A property interface with a number of well known propIDs
- // (below)
- //
- //
- //-------------------------------------------------------------
- typedef [v1_enum] enum
- {
- ICATEGORIZERITEM_SOURCETYPE = 0,
- ICATEGORIZERITEM_LDAPQUERYSTRING,
- ICATEGORIZERITEM_DISTINGUISHINGATTRIBUTE,
- ICATEGORIZERITEM_DISTINGUISHINGATTRIBUTEVALUE,
- ICATEGORIZERITEM_IMAILMSGPROPERTIES,
- ICATEGORIZERITEM_IMAILMSGRECIPIENTSADD,
- ICATEGORIZERITEM_IMAILMSGRECIPIENTSADDINDEX,
- ICATEGORIZERITEM_FPRIMARY,
- ICATEGORIZERITEM_PARENT,
- ICATEGORIZERITEM_ICATEGORIZERITEMATTRIBUTES,
- ICATEGORIZERITEM_HRSTATUS,
- ICATEGORIZERITEM_ICATEGORIZERLISTRESOLVE,
- ICATEGORIZERITEM_ICATEGORIZERMAILMSGS,
- ICATEGORIZERITEM_HRNDRREASON,
- ICATEGORIZERITEM_DWLEVEL,
- ICATEGORIZERITEM_ENDENUMMESS
- } eICATEGORIZERITEMPROPID;
- typedef [v1_enum] enum
- {
- SOURCE_SENDER,
- SOURCE_RECIPIENT,
- SOURCE_VERIFY
- } eSourceType;
- [
- local,
- object,
- uuid(86F9DA7C-EB6E-11d1-9DF3-00C04FA322BA),
- helpstring("ICategorizerItem Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerItem : ICategorizerProperties {};
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerAsyncContext
- //
- // Synopsis: Interface handed out to sinks containing async context methods
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(86F9DA7E-EB6E-11d1-9DF3-00C04FA322BA),
- helpstring("ICategorizerAsyncCompletion Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerAsyncContext : IUnknown
- {
- [local] HRESULT CompleteQuery(
- [in] PVOID pvQueryContext,
- [in] HRESULT hrResolutionStatus,
- [in] DWORD dwcResults,
- [in, size_is(dwcResults)] ICategorizerItemAttributes **rgpItemAttributes,
- [in] BOOL fFinalCompletion);
- }
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerListResolve
- //
- // Synopsis: Interface handed out to sinks that can spin off further resolves
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(960252A4-0A3A-11d2-9E00-00C04FA322BA),
- helpstring("ICategorizerListResolve Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerListResolve : IUnknown
- {
- [local] HRESULT AllocICategorizerItem(
- [in] eSourceType SourceType,
- [out] ICategorizerItem **ppICatItem);
- [local] HRESULT ResolveICategorizerItem(
- [in] ICategorizerItem *pICatItem);
- [local] HRESULT SetListResolveStatus(
- [in] HRESULT hrStatus);
- [local] HRESULT GetListResolveStatus(
- [out] HRESULT *phrStatus);
- }
- //+------------------------------------------------------------
- //
- // Interface: IMailTransportCategorize
- //
- // Synopsis: Interface a sink must implement in order to handle
- // categorizer events
- //
- //
- //-------------------------------------------------------------
- [
- object,
- uuid(86F9DA7A-EB6E-11d1-9DF3-00C04FA322BA),
- helpstring("IMailTransportCategorize Interface"),
- pointer_default(unique)
- ]
- interface IMailTransportCategorize : IUnknown
- {
- HRESULT Register(
- [in] ICategorizerParameters *);
- [local] HRESULT BeginMessageCategorization(
- [in] ICategorizerMailMsgs *);
- [local] HRESULT EndMessageCategorization(
- [in] ICategorizerMailMsgs *,
- [in] HRESULT hrCatStatus);
- [local] HRESULT BuildQuery(
- [in] ICategorizerParameters *,
- [in] ICategorizerItem *);
- [local] HRESULT BuildQueries(
- [in] ICategorizerParameters *,
- [in] DWORD dwcAddresses,
- [in, size_is(dwcAddresses)] ICategorizerItem **rgpICategorizerItems,
- [in] ICategorizerQueries *);
- [local] HRESULT SendQuery(
- [in] ICategorizerParameters *,
- [in] ICategorizerQueries *,
- [in] ICategorizerAsyncContext *,
- [in] PVOID pvQueryContext);
- [local] HRESULT SortQueryResult(
- [in] ICategorizerParameters *,
- [in] HRESULT hrResolutionStatus,
- [in] DWORD dwcAddresses,
- [in, size_is(dwcAddresses)] ICategorizerItem **rgpICategorizerItems,
- [in] DWORD dwcResults,
- [in, size_is(dwcResults)] ICategorizerItemAttributes **rgpICategorizerItemAttributes);
- [local] HRESULT ProcessItem(
- [in] ICategorizerParameters *,
- [in] ICategorizerItem *);
- [local] HRESULT ExpandItem(
- [in] ICategorizerParameters *,
- [in] ICategorizerItem *,
- [in] IMailTransportNotify *,
- [in] PVOID);
- [local] HRESULT CompleteItem(
- [in] ICategorizerParameters *,
- [in] ICategorizerItem *);
- };
- //
- // See smtpguid.h for the CLSID and Program ID of the CoCreateable
- // Categorizer
- //
- //+------------------------------------------------------------
- //
- // Interface: ISMTPCategorizer
- //
- // Synopsis: Interface to the SMTP categorizer
- //
- //
- //-------------------------------------------------------------
- [
- object,
- local,
- uuid(B23C35B8-9219-11d2-9E17-00C04FA322BA),
- helpstring("ISMTPCategorizer Interface"),
- pointer_default(unique)
- ]
- interface ISMTPCategorizer : IUnknown
- {
- HRESULT ChangeConfig(
- [in] PCCATCONFIGINFO pConfigInfo);
- HRESULT CatMsg(
- [in] IUnknown *pMsg,
- [in] ISMTPCategorizerCompletion *pICompletion,
- [in] LPVOID pContext);
- HRESULT CatDLMsg(
- [in] IUnknown *pMsg,
- [in] ISMTPCategorizerDLCompletion *pICompletion,
- [in] LPVOID pContext,
- [in] BOOL fMatchOnly,
- [in] CAT_ADDRESS_TYPE CAType,
- [in] LPSTR pszAddress);
- HRESULT CatCancel();
- };
- //+------------------------------------------------------------
- //
- // Interface: ISMTPCategorizerCompletion
- //
- // Synopsis: Async completion interface
- //
- //
- //-------------------------------------------------------------
- [
- object,
- local,
- uuid(B23C35B9-9219-11d2-9E17-00C04FA322BA),
- helpstring("ISMTPCategorizerCompletion Interface"),
- pointer_default(unique)
- ]
- interface ISMTPCategorizerCompletion : IUnknown
- {
- HRESULT CatCompletion(
- HRESULT hr,
- PVOID pContext,
- IUnknown *pImsg,
- IUnknown **rgpImsg);
- };
- //+------------------------------------------------------------
- //
- // Interface: ISMTPCategorizerDLCompletion
- //
- // Synopsis: Async completion interface
- //
- //
- //-------------------------------------------------------------
- [
- object,
- local,
- uuid(B23C35BA-9219-11d2-9E17-00C04FA322BA),
- helpstring("ISMTPCategorizerDLCompletion Interface"),
- pointer_default(unique)
- ]
- interface ISMTPCategorizerDLCompletion : IUnknown
- {
- HRESULT CatDLCompletion(
- HRESULT hr,
- PVOID pContext,
- IUnknown *pImsg,
- BOOL fMatch);
- };
- //---[ eDomainInfoFlags ]------------------------------------------------------
- //
- //
- // Description: Flags used to describe boolean per domain properties
- //
- //-----------------------------------------------------------------------------
- typedef [v1_enum] enum
- {
- //Outbound protocol property flags
- DOMAIN_INFO_REMOTE = 0x00000000, //Default setting
- DOMAIN_INFO_USE_SSL = 0x00000001, //Use SSL on outbound connections
- DOMAIN_INFO_SEND_TURN = 0x00000002, //Send TURN on outbound connections
- DOMAIN_INFO_SEND_ETRN = 0x00000004, //Send ETRN on outbound connections
- DOMAIN_INFO_USE_NTLM = 0x00000008, //Use NTLM auth on outbound
- DOMAIN_INFO_USE_PLAINTEXT = 0x00000010, //Use plaintext auth on outbound
- DOMAIN_INFO_USE_DPA = 0x00000020, //Use DPA auth on outbound
- DOMAIN_INFO_USE_KERBEROS = 0x00000040, //Use Kerberos auth on outbound
- DOMAIN_INFO_USE_CHUNKING = 0x00000080, //Require binary chunking on outbound
- DOMAIN_INFO_DISABLE_CHUNKING = 0x00000100, //For this specific domain disaalow CHUNKING
- DOMAIN_INFO_DISABLE_BMIME = 0x00000200, //For this specific domain disallow BMIME
- DOMAIN_INFO_DISABLE_DSN = 0x00000400, //For this specific domain disallow DSN
- DOMAIN_INFO_DISABLE_PIPELINE = 0x00000800, //For this specific domain disallow PIPElineing
- DOMAIN_INFO_USE_HELO = 0x00001000, //Send HELO instead of EHLO
- //Queueing/Routing flags
- DOMAIN_INFO_TURN_ONLY = 0x00010000, //Create connection only when asked (uses GetNamedConnection)
- DOMAIN_INFO_ETRN_ONLY = 0x00020000, //Do no create connections until told to (uses GetNextConnection)
- DOMAIN_INFO_LOCAL_DROP = 0x00040000, //Local drop domain
- DOMAIN_INFO_LOCAL_MAILBOX = 0x00080000, //Local domain (no drop directory)
- DOMAIN_INFO_REMOTE_SMARTHOST = 0x00100000, //Remote domain with smart host
- DOMAIN_INFO_IP_RELAY = 0x00200000, //Allow Relay based on IP address
- DOMAIN_INFO_AUTH_RELAY = 0x00400000, //Allow Relay based on authentication
- DOMAIN_INFO_DOMAIN_RELAY = 0x00800000, //Allow Relay based on domain name
- DOMAIN_INFO_ALIAS = 0x01000000, //Local alias domain
- DOMAIN_INFO_TURN_ON_EMPTY = 0x02000000, //TURN works on empty conns
- DOMAIN_INFO_INVALID = 0x80000000, //Used for returning "invalid" or "not found" info
- } eDomainInfoFlags ;
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerDomainInfo
- //
- // Synopsis: An interface to retrieve above domain info flags
- // describing a given SMTP domain
- //
- //-------------------------------------------------------------
- [
- object,
- local,
- uuid(E210EDC6-F27D-481f-9DFC-1CA840905FD9),
- helpstring("ICategorizerDomainInfo Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerDomainInfo : IUnknown
- {
- HRESULT GetDomainInfoFlags(
- [in, string] LPSTR szDomainName,
- [out] DWORD *pdwDomainInfoFlags);
- }
- //+------------------------------------------------------------
- //
- // Interfaces pulled in from catintrnl.idl
- //
- interface ICategorizerRequestedAttributes;
- interface ICategorizerLdapConfig;
- interface IServersListInfo;
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerParametersEx
- //
- // Synopsis: ICategorizerParameters plus new methods to retrieve
- // requested attributes, register an interface which may be called
- // to get the list of GCs from dsaccess. Also a "Get" function for
- // the aforementioned interface.
- //
- // History:
- // jstamerj 1999/07/08 14:24:56: Created
- //
- //-------------------------------------------------------------
- [
- object,
- local,
- uuid(E962BA1F-3FB9-11d3-80D7-00C04FA322BA),
- helpstring("ICategorizerParametersEx Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerParametersEx : ICategorizerParameters
- {
- HRESULT GetDSParameterW(
- [in] DWORD dwDSParameter,
- [out] LPWSTR *ppszValue);
- HRESULT GetRequestedAttributes(
- [out] ICategorizerRequestedAttributes **ppIRequestedAttributes);
- HRESULT RegisterCatLdapConfigInterface(
- [out] ICategorizerLdapConfig *pICategorizerLdapConfig);
- HRESULT GetLdapConfigInterface(
- [out] ICategorizerLdapConfig **ppICatLdapConfigInfo);
- };
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerRequestedAttributes
- //
- // Synopsis: Contains a read-only method to retrieve all the requested
- // attributes
- //
- // History:
- // jstamerj 1999/07/08 14:24:56: Created
- //
- //-------------------------------------------------------------
- [
- object,
- local,
- uuid(CB0924E0-357B-11d3-8328-00C04FA322BA),
- helpstring("ICategorizerRequestedAttributes Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerRequestedAttributes : IUnknown
- {
- HRESULT GetAllAttributes(
- [out] LPSTR **prgszAllAttributes);
- HRESULT GetAllAttributesW(
- [out] LPWSTR **prgszAllAttributes);
- };
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerUTF8Attributes
- //
- // Synopsis: Methods to retrieve attributes as UTF8 strings
- //
- // History:
- // jstamerj 1999/07/08 14:24:56: Created
- //
- //-------------------------------------------------------------
- [
- object,
- local,
- uuid(BEBF931D-17E0-4ec8-BC1C-CC3286D72CB7),
- helpstring("ICategorizerUTF8Attributes Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerUTF8Attributes : IUnknown
- {
- [local] HRESULT BeginUTF8AttributeEnumeration(
- [in, unique] LPCSTR pszAttributeName,
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- [local] HRESULT GetNextUTF8AttributeValue(
- [in] PATTRIBUTE_ENUMERATOR penumerator,
- [out] LPSTR *ppszAttributeValue);
- [local] HRESULT RewindUTF8AttributeEnumeration(
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- [local] HRESULT EndUTF8AttributeEnumeration(
- [in] PATTRIBUTE_ENUMERATOR penumerator);
- [local] HRESULT CountUTF8AttributeValues(
- [in] PATTRIBUTE_ENUMERATOR penumerator,
- [out] DWORD *pdwCount);
- };
- //+------------------------------------------------------------
- //
- // Interface: ICategorizerLdapConfig
- //
- // Synopsis: Contains a function that may be queried for the GCs
- // on the machine as discovered by dsaccess (or as read from the
- // registry by dsaccess).
- //
- // History:
- // gpulla created
- //
- //-------------------------------------------------------------
- [
- object,
- local,
- uuid(27C1B2D3-1A28-4b90-BC0A-E52057D30712),
- helpstring("ICategorizerLdapConfig Interface"),
- pointer_default(unique)
- ]
- interface ICategorizerLdapConfig : IUnknown
- {
- HRESULT GetGCServers(
- [out] IServersListInfo **pIServersListInfo);
- };
- //+------------------------------------------------------------
- //
- // Interface: IServersListInfo
- //
- // Synopsis: Interface to an object encapsulating the list of
- // GCs described above. Functions allow querying the number of
- // GCs and enumerating through the GCs.
- //
- // History:
- // gpulla created
- //
- //-------------------------------------------------------------
- [
- object,
- local,
- uuid(C54CEA94-E501-4f34-8704-F5881EA5CBF4),
- helpstring("IServersListInfo Interface"),
- pointer_default(unique)
- ]
- interface IServersListInfo : IUnknown
- {
- HRESULT GetNumGC(
- [out] DWORD *dwGC);
- HRESULT GetItem(
- [in] DWORD dwIdx,
- [out] DWORD *dwPort,
- [out] LPSTR *pszServerName);
- };
- cpp_quote("#endif //__SMTPEVENT_H__")