How to use MFCMAPI to create a MAPI profile to connect to Exchange 2013

Well it's finally released.  The long awaited MAPI/CDO download that includes the documentation which outlines how to connect to Exchange 2013.  As a supplement to that I have created this blog post to walk you through the steps of creating a profile using MFCMAPI to troubleshoot issues.  The intention of this article was to provide a quick and simple guide.  It outlines the default case, but it is out of the scope of this article to provide an in depth discussion of every scenario.  I have provided these steps to many customers and for the most part they ring true.

First things first, please download the latest version of MAPI/CDO found here: https://aka.ms/mapicdo. It is assumed that you are using at least version 6.5.8309.  However, these steps do not work with any version of Outlook.  This profile will also not work against a legacy version of Exchange even if the target server is Outlook Anywhere enabled.  Lastly, make sure you are using the latest version of MFCMAPI.

  1. Make sure that you have Exchange 2013 properly configured.  The best way to do this is confirm that Outlook can connect successfully.
  2. Open up MFCMAPI, go to Profile > Show Profiles
  3. Click Actions > Create Profile Create Profile Selection
  4. Give the new profile a name and click OK. Give the Profile a name
  5. Select the new profile
  6. Right-Click and choose Services > Add Service...Choose Add Service
  7. Enter MSEMS for the service name
  8. Uncheck the box which says 'Display Service UI'AddMSEMS
  9. Click OK
  10. Double-click the newly created profile
  11. Double-click the MSEMS service
  12. Find the Global Profile Section.  It's the provider with the PROVIDER_UID that is 13DBB0C8AA05101A9BB000AA002FC45A and single click it.Select the Exchange User Guid
  13. Go to Property > Additional PropertiesSelect Additional Properties
  14. Click Add and add the following properties PR_CONVERSION_PROHIBITED, PR_PROFILE_UNRESOLVED_NAME, PR_PROFILE_UNRESOLVED_SERVER, PR_PROFILE_RPC_PROXY_SERVER, PR_PROFILE_RPC_PROXY_SERVER_FLAGS, PR_PROFILE_RPC_PROXY_SERVER_AUTH_PACKAGE, PR_PROFILE_AUTH_PACKAGE.Add additional propertiesAdding an example propertyAll properties added
  15. Click OK
  16. Configure each property using the guidance below.
    Property: PR_CONVERSION_PROHIBITED
    Value: True
    Property: PR_PROFILE_UNRESOLVED_NAME
    Value: mailbox alias
    The alias for the target mailbox. For example, Administrator
    Property: PR_PROFILE_UNRESOLVED_SERVER
    Value: The personalized server id
    This is the value retrieved from Autodiscover. It will be in the format guid@domain. For example, F5FA2827-5978-43cd-8FA8-E07BC3BB5591@contoso.com
    Property: PR_PROFILE_RPC_PROXY_SERVER
    Value: FQDN of your Client Access Server.  You don't need to specify or https://.  For example, e2013cas.contoso.com
    6.5.8309 requires the use of the ANSI version of this property
    Property: PR_PROFILE_RPC_PROXY_SERVER_FLAGS
    Value: PRXF_ENABLED (0x1)
    Instructs the MAPI subsystem to use RPC over HTTP to connect to the server
    Property: PR_PROFILE_RPC_PROXY_SERVER_AUTH_PACKAGE
    Value: RPC_C_HTTP_AUTHN_SCHEME_NTLM (0x2)
    Describes the authentication scheme to use for RPC over HTTP
    Property: PR_PROFILE_AUTH_PACKAGE
    Value: RPC_C_AUTHN_WINNT (0xA)
    Describes the authentication scheme to use for RPC
    Property: PR_PROFILE_CONNECT_FLAGS
    Value: CONNECT_USE_SEPARATE_CONNECTION (0x4) | CONNECT_IGNORE_NO_PF (0x8000)
    Tells the subsystem to use a separate connection and still connect if no public folders are in the organization
    [![Configuration Complete](https://msdntnarchive.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/67/98/metablogapi/1258.Config_Complete_thumb_32737D5B.jpg "Configuration Complete")](https://msdntnarchive.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/67/98/metablogapi/2620.Config_Complete_5052015C.jpg)
  17. Select Session > Logon and display store, and select the profile is not already selected.

The personalized server id is the server name returned from Autodiscover.  You can find this in a variety of ways. If you are using the SOAP based Autodiscover the property you are looking for is InternalRpcClientServer.  If you are using the Plain Old XML (POX) based Autodiscover the property you are looking for is of type EXHTTP in the protocol node.  The node name is Server.  You can use Outlook to make an Autodiscover request on your behalf by right clicking the Outlook icon in the System Tray while holding down the CTRL button and choosing 'Test E-Mail Autoconfiguration'.

For PR_PROFILE_RPC_PROXY_FLAGS your environment may require the flag PRXF_SSL (0x2) to tell MAPI to use SSL.  If your certificate is not trusted then add the flag PRXF_SEC_WARNING (0x10).

I will be writing a subsequent article which describes how to use the RPCHttpProxyMap registry key. [Edit: 5/27/2013: That post is completed.]

The version of MAPI/CDO was incorrectly stated on the download page as 8.3.8309 for 6.5.8309.

If you have questions, just add a comment and I will approve them and respond as time permits

[Edit: 7/8/2014] I added screenshots and I wanted to point out that these steps may not work out in all environments.  In order to use these steps your environment must support NTLM as the authentication protocol for Outlook Anywhere.  For environments that support Basic you will need to alter these settings.  The best way to know what your environment requires is to review the Autodiscover response for the target mailbox.  You can use the steps documented in this Technet Article in the section entitled Step 3: Check Autodiscover and Exchange Web Services to perform an Autodiscover and see the response using Outlook 2007 and above.

[Edit: 10/14/2015] Updated the link to the latest version of MAPI \ CDO