Exchange Message Flow
Topic Last Modified: 2006-04-26
To identify monitoring issues and proactively manage an Exchange 2003 network, you should understand message flow between Exchange components. Exchange message flow is shown in the following figure.
Message flow through an Exchange 2003 server
Message flow in Exchange 2003 is as follows:
An SMTP host connects to the SMTP transport engine on port 25, or an Outlook client places a message for sending in the database, or an inbound message is received from the MTA.
Regardless of the origin, the message is transferred to the advanced queuing engine. If the message comes from a remote SMTP host, the SMTP protocol engine transfers the message to the advanced queuing engine, whereas if the message comes from a MAPI client, such as Outlook, or from MTA, the store driver transfers it to the advanced queuing engine.
The advanced queuing engine then uses the categorizer to process received messages. The categorizer tries to resolve the originator, resolve recipients, and enforce message restrictions. Received messages are placed in one of two queues: a local queue with messages for recipients residing on the server, and an outbound pre-routing queue.
From the local queue, the message transfers to the store driver, which is part of the Microsoft Exchange Information Store service, and is placed in the destination mailbox.
To transfer messages from the pre-routing queue, the advanced queuing engine uses the routing engine to determine where the SMTP service should send the message. The routing module passes the message to the queue manager that finally places the message in a link queue to be sent through the SMTP service. The name of the link queue corresponds to the name of the destination domain. From the outbound queue, messages are sent to the next routing hop by the SMTP service.
The best way to test the message flow between servers and messaging systems is through small e-mail messages. The Exchange Management Pack includes scripts to test mail flow between servers. This is configured by using the Configuration Wizard, as described in Deploying Exchange Server 2003 Management Pack. These scripts periodically send e-mail messages and verify that the messages are received. Mail flow script configuration is discussed in the Exchange 2003 Management Pack Configuration Guide at http://go.microsoft.com/fwlink/?linkid=25436. The rules and dependencies of scripts are discussed in the topic, Exchange Management Pack Script Dependencies.
Additionally, you can verify the information that is related to message transfer in the event log entries. For example, suppose you are monitoring e-mail messages sent to non-local sites that do not reach the intended destination. You are not sure about the source of the problem and whether it is an error in the Exchange configuration or a mistake in recipient information by the sender. You can monitor the progress of message flow with event log entries in addition to the message-tracking feature in Exchange 2003.
As an example, consider the message that is sent is recognized as outbound and the advanced queuing engine uses the Routing service to query DNS and obtain information about the next routing hop to which the message should be sent. This information will be indicated in the routing engine event log query.
As an example of a delivery failure warning, consider that when DNS is queried, it returns data about the destination mail server of the domain from the mail exchange (MX) records to the routing engine. If there is a situation where the domain is fictitious and not a Fully Qualified Domain Name (FQDN), a warning is generated in the event log.
Finally, a non-delivery report event is logged that includes possible causes and remedies. You can filter the log list to display only relevant entries. In this case, sending to a nonexistent domain caused the error. Note that some of these events require that Transport logging be set to Maximum in Exchange System Manager.