Exchange Internals – How the Exchange Core Components work together
Exchange Server 2003 is a complex messaging system with several Exchange core components and services which work together to provide an efficient email system. Exchange Server 2003 highly depends on Microsoft Active Directory and a correctly functioning DNS system but this is out of the scope of this article.
The following figure shows the Exchange Server 2003 core services, but there are more Exchange related services like:
- WWW Publishing Service
- SMTP Service
- IIS Admin Service
- Windows Management Instrumentation...
Figure 1: Exchange core services
The Microsoft Exchange Quota Service, the Microsoft Identity Integration Server and the Microsoft iSCSI Initiator Service in Figure 1 are not Exchange related.
Most of the Exchange services have dependencies from other Exchange services. We are talking here about other services that depend on this specific service and about other services from which this service is dependent. You can see the dependencies in the properties of the specific service or in the Registry under HKEY_LOCAL_MACHINESystemCurrentControlSet\Services\Servicename.
The following figure shows the Dependencies of the Microsoft Exchange System Attendant Service, one of the Exchange Server core services. The Microsoft Exchange System Attendant Services depends on the Services shown in Figure 2 and two other services – Microsoft Exchange Information Store and Microsoft Exchange MTA Stacks.
Figure 2: Exchange Service Dependencies
Web Services and Exchange 2003
Exchange 2003 uses the Windows Server 2003 Internet Information Services Infrastructure for several Exchange Services like Outlook Web Access (OWA), Outlook Mobile Access (OMA) and services like POP3, IMAP4 and SMTP and extends several services and functions with special Exchange functions.
As you can see in Figure 3, Exchange uses some IIS Application pools and messaging services like SMTPSVC and IMAPSVC under control of INETINFO.EXE. All services are controlled by HTTP.SYS, a kernel Mode component which is new for IIS 6.0.
Figure 3: Web Services in Exchange Server 2003 (Source: Microsoft)
As you can see in Figure 4 there are several dependencies between Exchange Services and Windows Services. As an example, the Microsoft Exchange System Attendant depends on several Windows Services but also some Exchange Services are dependant on the Exchange System Attendant Service.
Figure 4: Exchange and Windows Service Dependencies (Source: Microsoft)
The big picture – All Exchange Services working together
The following figure gives you a good overview of all Exchange Services and how they work together. As you can see there are layered services, all under the control of IIS 6.0 which traffic flows through the Exchange Store Driver (DRVIIS.DLL) and the Exchange Epoxy Service – explained later in this article. The Exchange Store (Store.exe) then gives these clients and services Access to the Exchange Databases through the ESE (Extensible Storage Engine).
Figure 5: Exchange Services working together (Source: Microsoft)
The Exchange Server 2003 installable file system is a kernel-mode driver, implemented in ExIFS.sys, which IIS can use to read and write items from and to Exchange databases. The ExIFS file system driver communicates with the Exchange Server store. This is accomplished through a store extension (ExWin32.Dll) and a user-mode wrapper (Ifsproxy.dll). The Exchange Server store uses ESE to access the Exchange Database (ESE and STM files).
ExIFS is the only kernel-mode component in Exchange Server 2003.
Figure 6: ExIFS in Exchange 2003 (Source: Microsoft)
The biggest Picture – How they all work together
The following figure is too complex to explain every service and it’s dependencies in this article but it is a great figure to show you how all of these services wok together. You should spend some time to understand this figure.
Figure 7: All Exchange and Windows Services Hand in Hand
The Microsoft Exchange Server System Attendant is the Exchange Server core service which controls several other Exchange services. These components are:
- DSAccess (DSAccess.dll) – Provides Exchange Active Directory Access
- DSProxy (DSProxy.dll) – Provides Directory Service Lookup for older Outlook clients
- Server Monitor Component - Monitoring server resources
- Free/Busy Component (Madfb.dll) – Manages Free/Busy information
- Mailbox Manager Component - Managing mailboxes
- Metabase update service - Replicating settings from Active Directory to the IIS metabase
- Metabase update service - Replicating settings from Active Directory to the IIS
- Recipient Update Service - Applying recipient policies and generating proxy addresses
- System Attendant Component - Verifies computer account configuration
The Directory Service Proxy (DSProxy) is the Exchange Server 2003 component that provides an address book service to Microsoft Outlook clients. DSProxy is implemented in DSProxy.dll. DSProxy has two functions:
- Emulate a MAPI address book service
- Proxy requests to an Active Directory server
DSProxy provides both proxy and referral services. MAPI clients running Outlook 2002 Service Release 1 and earlier versions use the proxy functionality because these clients were designed to use Exchange Server as its Directory Service. This was true for Microsoft Exchange Server from 4.0 to 5.5 but beginning with Exchange Server 2000, Microsoft Active Directory takes the part of the Exchange Directory services. Therefore, DSProxy emulates a directory service, so that earlier clients can function. Exchange Server 2003 server forwards the requests to Active Directory.
Later versions of Outlook, such as Outlook 2000 with SR-2 and Outlook 2002/2003, are designed with the assumption that Exchange Server 2003 does not have its own directory service. After DSProxy refers one of these later clients to a global catalog server, the client communicates directly with Active Directory.
DSProxy obtains its list of working global catalog servers from DSAccess. DSAccess handles only LDAP queries. However, DSProxy fully relies on DSAccess to provide global catalog failover support.
DSProxy performs the following operations:
It collects a list of working global catalog Servers from DSAccess and selects only global catalog Servers that are in the Server's local Active Directory site.
It proxies MAPI queries from earlier Outlook clients to the remaining global catalog Servers. The mechanism used to direct Outlook clients to one of the remaining global catalog Servers is a round robin mechanism.
DSProxy initially runs single threaded and can support up to 512 client connections. DSProxy automatically creates an additional thread for every 512 client connections. Unlike DSAccess, DSProxy has no caching mechanism. Every MAPI query processed through DSProxy is sent to a Global Catalog Server.
Exchange 2003 services access information that is stored in Active Directory and write information to Active Directory. If this communication occurred directly between each service and Active Directory, Exchange 2003 could overwhelm an Active Directory domain controller with communication requests. DSAccess is the component which controls the interaction between Exchange requests and Active Directory.
DSAccess is a shared API that is used by multiple components in Exchange 2003 to query Active Directory and obtain both configuration and recipient information. DSAccess is implemented in DSAccess.dll, which is loaded by both Exchange and non-Exchange components. The components are:
- System Attendant
- Message Transfer Agent (MTA)
- Microsoft Exchange Information Store
- Exchange Management Service
- Internet Information Services (IIS)
- Windows Management Instrumentation (WMI)
DSAccess discovers the Active Directory topology, detects domain controllers and Global Catalog servers, and maintains a list of valid directory servers that are suitable for use by Exchange components. In addition, DSAccess maintains a cache that is used to minimize the load on Active Directory by reducing the number of Lightweight Directory Access Protocol (LDAP) requests that individual components send to Active Directory servers. The DSAccess Cache is configurable through several Registry Keys.
RUS – Recipient Update Service
The Exchange Recipient Update Service is the Exchange component which is responsible for managing the Exchange Server Proxy E-Mail addresses and for creating and updating e-mail addresses for Exchange Server recipients and Exchange core components. There is one RUS service in every domain where Exchange is installed and one Exchange Recipient Update Service for the Enterprise Configuration (the whole Exchange Organization).
DS2MB – Directory Service to Metabase
The function of DS2MB is to replicate configuration information from Active Directory to the local IIS metabase.
DS2MB is implemented as a process in DS2MB.dll and the primary function is to synchronize several Exchange configuration settings in Active Directory with its counterpart settings in the IIS metabase. The DS2MB is a unidirectional process. Only from Active Directory to the IIS Metabase. You can view the IIS Metabase with the Metabase Explorer from the IIS 6 Resource Kit and some other tools.
The metabase update is a subprocess that is launched when the System Attendant is started. The operation of SMTP, POP3, IMAP4, Outlook Web Access and OMA are all dependent on the replication by DS2MB. DS2MB registers with the config domain controller after startup, enabling the config domain controller to notify DS2MB of any changes that are made to the Exchange configuration. This notification occurs within 15 seconds of the change.
Microsoft Exchange MTA Stacks service (EMSMTA.exe)
The Microsoft Exchange MTA Stacks service (MTA) routes messages through X.400 and gateway connectors to non-Exchange messaging systems. In a mixed environment with servers running Exchange Server 5.5 in the local routing group, the MTA is also used to transfer messages between Exchange Server 2003 and Exchange Server 5.5. This occurs because Exchange Server 5.5 MTAs communicate with each other in the local site directly through RPCs. Exchange Server 2003 must rely on this communication method for backward compatibility.
The executable file of the Microsoft Exchange MTA Stacks service is EMSMTA.exe, which is located in the \Program Files\Exchsrvr\bin directory. This service depends on System Attendant and maintains its own specific message queues outside the Exchange store in the \Program Files\Exchsrvr\Mtadata directory.
The registry key is HKEY_LOCAL_MACHINE \System\CurrentControlSet\Services\MSExchangeMTA
Routing Engine (RESvc.dll)
The Exchange Routing Engine service provides topology and routing information to servers running Exchange Server 2003. The advanced queuing engine (AQE) within the SMTP transport subsystem uses this service to provide next-hop information when routing messages within the Exchange organization. The Exchange Routing Engine service depends on the IIS Admin service and runs within the Inetinfo.exe process. This service is implemented in a file called RESvc.dll, which is palced in the \Program Files\Exchsrvr\Bin directory.
The registry key is HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\RESvc
IIS Admin service
The IIS Admin service (IIS Admin) manages the IIS Metabase and updates the registry for the following services:
- WWW service
- FTP service
- SMTP service
- POP3 service
- IMAP4 service
- NNTP service
The IIS Admin service also provides access to the IIS configuration information to other applications, such as to the metabase update service, which is an internal component of System Attendant.
The registry key for the IIS Admin service is HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IISAdmin.
The IIS Admin service depends on the Remote Procedure Call (RPC) service and Security Accounts Manager (SAM) service.
In this article I have tried to give you some helpful information about the Exchange Server core services and how they work together. This article can’t give you all the information about the “Big Picture” from Exchange Server and all its components. There are quite more dependencies and Services in Exchange Server 2003 and the dependency from Exchange Server 2003 on Windows Server Active Directory and DNS (Domain Name System) which I don’t explain in my article.