6 Appendix A: Product Behavior

The information in this specification is applicable to the following Microsoft products or supplemental software. References to product versions include updates to those products.

  • Microsoft Exchange Server 2003

  • Microsoft Exchange Server 2007

  • Microsoft Exchange Server 2010

  • Microsoft Exchange Server 2013

  • Microsoft Exchange Server 2016

  • Microsoft Exchange Server 2019

  • Microsoft Office Outlook 2003

  • Microsoft Office Outlook 2007

  • Microsoft Outlook 2010

  • Microsoft Outlook 2013

  • Microsoft Outlook 2016

  • Microsoft Outlook 2019

  • Microsoft Outlook 2021

  • Microsoft Outlook LTSC 2024

Exceptions, if any, are noted in this section. If an update version, service pack or Knowledge Base (KB) number appears with a product name, the behavior changed in that update. The new behavior also applies to subsequent updates unless otherwise specified. If a product edition appears with the product version, behavior is different in that product edition.

Unless otherwise specified, any statement of optional behavior in this specification that is prescribed using the terms "SHOULD" or "SHOULD NOT" implies product behavior in accordance with the SHOULD or SHOULD NOT prescription. Unless otherwise specified, the term "MAY" implies that the product does not follow the prescription.

<1> Section 2.2.1.1.1: In Exchange 2003, Exchange 2007, and Exchange 2010, if the Private flag is set, the Ghosted flag is not set by the client and is ignored by the server; if the OpenFlags field has either the ALTERNATE_SERVER flag or the IGNORE_HOME_MDB flag set, the Ghosted flag is ignored by the server; if the Ghosted flag is set, the client is requesting a logon to the public folder database that is present on the server. If the Ghosted flag is not set, the client is requesting a logon to the default public folder database. In Exchange 2013, Exchange 2016, and Exchange 2019 the Ghosted flag is deprecated.

<2> Section 2.2.1.1.1: Exchange 2003 and Exchange 2007 use the HOME_LOGON flag as follows: When the flag is set in a public folder logon, per-user read/unread information is tracked. This flag is ignored in a private mailbox logon.

<3> Section 2.2.1.1.1: Exchange 2003 and Exchange 2007 use the TAKE_OWNERSHIP flag as follows: If set, then the server checks to determine whether the user can act as an owner of the mailbox. If not set, then the user is considered a delegate.

<4> Section 2.2.1.1.1:  Exchange 2003, Exchange 2007, and Exchange 2010 use the NO_MAIL flag as follows: If set, the client expects the server to take full responsibility for transmission of submitted mails. If this flag is not set, the client attempts to act as a transport agent to handle submitted mails.

<5> Section 2.2.1.1.1: Office Outlook 2003 does not set the USE_PER_MDB_REPLID_MAPPING flag. Office Outlook 2007 uses this flag to control whether the server maintains one REPLID-to-REPLGUID mapping and one named property-to-property ID mapping for all logon sessions.

<6> Section 2.2.1.1.1: Microsoft Exchange Server 2010 Service Pack 1 (SP1), Exchange 2013, Exchange 2016, Exchange 2019, Microsoft Outlook 2010 Service Pack 1 (SP1), Outlook 2013, Outlook 2016, and Outlook 2019 implement this flag. Exchange 2003, Exchange 2007, Exchange 2010, Office Outlook 2003, Office Outlook 2007, and Outlook 2010 do not implement this flag.

<7> Section 2.2.1.1.1: Exchange 2003, Exchange 2007, Exchange 2010, Office Outlook 2003, Office Outlook 2007, and Outlook 2010 require passing 0x00 in the EssdnSize field for public folder logon and that the Essdn field be empty.

<8> Section 2.2.1.1.3: If the mailbox currently has any active search folders, then Exchange 2003 and Exchange 2007 set this field to 0x01000000; otherwise, this file is set to 0x00000000.

<9> Section 2.2.1.1.4: Exchange 2013, Exchange 2016, and Exchange 2019 return the empty Folder ID structures for the following folders: Free/Busy Data, Offline Address Book Data, Local Site's Free/Busy Data, Local Site's Offline Address Book Data, and NNTP Article Index.

<10> Section 2.2.1.1.4: Exchange 2007 does not set the PerUserGuid field to an empty GUID.

<11> Section 2.2.1.5: Exchange 2010, Exchange 2013, Exchange 2016, and Exchange 2019 do not implement the RopGetStoreState ROP ([MS-OXCROPS] section 2.2.3.5), but it is implemented in Exchange 2003 and Exchange 2007.

<12> Section 2.2.1.6.1: Exchange 2003, Exchange 2007, and Exchange 2010 successfully complete a RopGetOwningServers ROP ([MS-OXCROPS] section 2.2.3.6) when issued against a private mailbox logon, but the results are undefined.

<13> Section 2.2.1.7: In Exchange 2013, Exchange 2016, and Exchange 2019, each public folder has exactly one replica, the folder's content mailbox.

<14> Section 2.2.2.1.2.1:  Microsoft Exchange Server 2013 Service Pack 1 (SP1), Exchange 2016, and Exchange 2019 return 0x80070005 (ecAccessDenied) when the client attempts to set the PidTagComment property by using the RopSetProperties ROP ([MS-OXCROPS] section 2.2.8.6).

<15> Section 2.2.2.1.2.2:  Exchange 2013, Exchange 2016, and Exchange 2019 return 0x80070005 (ecAccessDenied) when the client attempts to set this property by using the RopSetProperties ROP.

<16> Section 2.2.2.1.2.3:  Exchange 2013 SP1, Exchange 2016, and Exchange 2019 return 0x80070005 (ecAccessDenied) when the client attempts to set the PidTagDisplayName property by using the RopSetProperties ROP.

<17> Section 3.1.4.1:  Exchange 2003, Exchange 2007, Exchange 2010, the initial release of Exchange 2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release of Outlook 2013 do not support the Connect request type. The Connect request type was introduced in Microsoft Outlook 2013 Service Pack 1 (SP1) and Exchange 2013 SP1.

<18> Section 3.2.3: When a database is restored from backup, Exchange 2003 and Exchange 2007 assign a new randomly-generated REPLGUID to the database and then add this new REPLGUID, along with a new REPLID, to the REPLID and REPLGUID to-and-from mapping table.

<19> Section 3.2.5:  Exchange 2003, Exchange 2007, Exchange 2010, the initial release version of Exchange 2013, Office Outlook 2003, Office Outlook 2007, Outlook 2010, and the initial release version of Outlook 2013 do not support the Connect request type. The Connect request type was introduced in Outlook 2013 SP1 and Exchange 2013 SP1.

<20> Section 3.2.5.1.1:  Exchange 2010 and Exchange 2013 return RPC fault 0x6ba.

<21> Section 3.2.5.1.1: Exchange 2003 returns ecMailboxDisabled. Exchange 2007 returns ecLoginFailure, then, after 5 minutes, the server returns ecUnknownUser.

<22> Section 3.2.5.1.1: Exchange 2010 does not return ecUnknownCodePage.

<23> Section 3.2.5.1.1: The behavior of Exchange 2003, Exchange 2007, Exchange 2010, Exchange 2013, Exchange 2016, and Exchange 2019 is undefined if the client sets an undefined flag in either the LogonFlags field or the OpenFlags field.

<24> Section 3.2.5.1.1: Exchange 2010 SP1, Exchange 2013, Exchange 2016, and Exchange 2019 implement the SUPPORT_PROGRESS flag. Exchange 2003, Exchange 2007, and Exchange 2010 do not implement the flag.

<25> Section 3.2.5.1.1: Exchange 2003 and Exchange 2007 do not support the GET/read operation for the PidTagSortLocaleId property. Exchange 2010, Exchange 2013, Exchange 2016, and Exchange 2019 support the GET/read operation for this property.

<26> Section 3.2.5.1.1: Exchange 2003 ignores the USE_PER_MDB_REPLID_MAPPING flag, and therefore, the behavior of Exchange 2003 is not affected by this flag. Exchange 2003 maintains one REPLID-to-REPLGUID mapping and one named property-to-property ID mapping per RPC session, and these mappings are shared by all logons on the RPC session.

<27> Section 3.2.5.1.1:  In Exchange 2013, Exchange 2016, and Exchange 2019, if the logon is the first on the RPC session, then the server fails with an RPC fault; if the logon is additional on the RPC session and it is to the same mailbox that is associated with the first logon, then the server returns ecInvalidParameter.

<28> Section 3.2.5.1.1: If the USE_PER_MDB_REPLID_MAPPING flag is not set, Exchange 2007 does not fail the ROP and instead has the following behavior: Exchange 2007 maintains one REPLID-to-REPLGUID mapping and one named property-to-property ID mapping per RPC session, and these mappings are shared by all logons on the TRPC session.

<29> Section 3.2.5.1.1: Exchange 2003 and Exchange 2007 allow the logon to proceed. Exchange 2010 returns ecWrongServer (0x00000478). For more information about properly forming the response when a ReturnValue of 0x00000478 is sent, see section 2.2.1.1.2.

<30> Section 3.2.5.1.1: If the USE_PER_MDB_REPLID_MAPPING flag is set, Exchange 2007 maintains one REPLID-to-REPLGUID mapping and one named property-to-property ID mapping for each logon session.

<31> Section 3.2.5.1.1: Exchange 2003 and Exchange 2007 return ecAccessDenied. Exchange 2010 returns ecLoginPerm. Exchange 2013, Exchange 2016, and Exchange 2019 return ecNone.

<32> Section 3.2.5.1.1: Exchange 2010 returns ecLoginPerm ReturnValue. Exchange 2007 returns ecAccessDenied ReturnValue.

<33> Section 3.2.5.1.2: Exchange 2003, Exchange 2007, and Exchange 2010 do not support public folders contained in a mailbox.

<34> Section 3.2.5.1.2: Exchange 2013, Exchange 2016, and Exchange 2019 set the USE_AUTODISCOVER_FOR_PUBLIC_FOLDER_CONFIGURATION flag. Exchange 2003, Exchange 2007, and Exchange 2010 do not support this flag. Office Outlook 2003, Office Outlook 2007, and Outlook 2010 ignore this flag.

<35> Section 3.2.5.1.2: The behavior of Exchange 2003, Exchange 2007, Exchange 2010, Exchange 2013, Exchange 2016, and Exchange 2019 is undefined if the client sets an undefined flag in either the LogonFlags field or the OpenFlags field.

<36> Section 3.2.5.1.3: If the user doesn't exist in the Active Directory forest, Exchange 2003 returns ecLoginFailure.

<37> Section 3.2.5.5: Exchange 2003 and Exchange 2007 implement the RopGetStoreState ROP ([MS-OXCROPS] section 2.2.3.5).

<38> Section 3.2.5.6: Exchange 2003 queries the transport engine for cost information. Exchange 2007 and Exchange 2010 query Active Directory for cost information.

<39> Section 3.2.5.6: Exchange 2003 removes servers that have a connection cost of "infinite". Exchange 2007, Exchange 2010, Exchange 2013, Exchange 2016, and Exchange 2019 remove servers that have a connection cost greater than 500.

<40> Section 3.2.5.7: In Exchange 2013, Exchange 2016, and Exchange 2019, each public folder has exactly one replica, the folder's content mailbox.

<41> Section 3.2.5.7: Exchange 2003 queries the transport engine for cost information. Exchange 2007, Exchange 2010, Exchange 2013, Exchange 2016, and Exchange 2019 query Active Directory for cost information.

<42> Section 3.2.5.7: Exchange 2003 removes servers that have a connection cost of "infinite". Exchange 2007, Exchange 2010, Exchange 2013, Exchange 2016, and Exchange 2019 remove servers that have a connection cost greater than 500.

<43> Section 3.2.5.8: If the ObjectId field is set to zero, Exchange 2013, Exchange 2016, and Exchange 2019 return ecNone. 

<44> Section 3.2.5.9:  Exchange 2007 and Exchange 2019 return ecNone if the LongTermId field of the request contains zeros for the replica GUID (REPLGUID) component.

<45> Section 3.2.5.12.1: Exchange 2003, Exchange 2007, and Exchange 2010 fail the operation with 0x000004B6 (ecRpcFormat).

<46> Section 3.2.5.12.1: Exchange 2003, Exchange 2007, Exchange 2010, Exchange 2013, Exchange 2016, and Exchange 2019 use 4096 for the default value.

<47> Section 3.2.5.12.1: Exchange 2003, Exchange 2007, Exchange 2010, Exchange 2013, Exchange 2016, and Exchange 2019 use 4096 for the maximum value.

<48> Section 3.2.5.13.1:  If the data is not properly formed, Exchange 2007 fails the operation with 0x000004ED (ecFmtError). For public folder logon, Exchange 2010 fails the operation with 0x000004ED; Exchange 2013 fails the operation with 0x8004011B. For private mailbox logon, Exchange 2010 fails the operation with 0x80070057; Exchange 2013 returns 0x00000000.