Platform SDK: Exchange Server

Gateway Trace Information

The PR_TRACE_INFO property stores a TRACEINFO structure containing gateway’s external trace information for a message. PR_TRACE_INFO helps a gateway or message transfer agent determine the path that a message has traveled. This information is critical for preventing message delivery loops. A TRACEINFO structure contains a set of TRACEENTRY structures in chronological order.

TRACEINFO Structure Members

Member Type Description
cEntries Long Number of TRACEENTRY structures.
rgtraceentry[ ] TRACEENTRY Array of TRACEENTRY structures

Each TRACEENTRY structure in the TRACEINFO structure contains the following members.

TRACEENTRY Structure Members

Member Type Description
lAction Long Routing action taken by the tracing domain. Possible actions are: expanded, redirected, relayed, and rerouted.
ftArrivalTime Filetime Time at which the message entered the tracing domain.
ftDeferredTime Filetime Time at which the tracing domain released the message.
rgchADMDName[17] Char ADMD name of tracing domain.
rgchCountryName[4] Char Country name of tracing domain.
rgchPRMDId[17] Char PRMD Identifier of tracing domain.
rgchAttADMDName[17] Char Attempted domain ADMD name. Contains information if attempt to send failed and message was rerouted.
rgchAttCountryName[4] Char Attempted domain country name. Contains information if attempt to send failed and message was rerouted.
rgchAttPRMDId[17] Char Attempted domain PRMD Identifier. Contains information if attempt to send failed and message was rerouted.

As a minimum requirement, each time a gateway submits an incoming message to Microsoft Exchange Server, it should create a TRACEENTRY containing an action, arrival time, and deferred time, as well as the country code, the Administration Management Domain (ADMD), and the Private Management Domain (PRMD) for the local domain.

If the foreign system supports similar trace information, the gateway can either translate the trace information or drop it when transferring outgoing messages to the foreign domain.

You can use the following utility functions to manipulate message tracing information.

TRACEINFO Utility Functions

Function Action
HrTraceGetEntryListSize Retrieves the size of TRACEINFO in memory, in bytes.
HrTraceGetEntryList Retrieves the TRACEINFO for the given message.
HrTraceCreateEntryList Creates a TRACEENTRY for the given message.
HrTraceAppendEntryList Appends a TRACEENTRY to an existing TRACEINFO.
HrTraceSetEntryList Sets the TRACEINFO for the given message.

The MAPI utility functions use the following structures.

Structure Description
TRACEENTRY Information for one trace.
TRACEINFO Array of all TRACEENTRYs for one message.