Configure MAPI over HTTP in Exchange Server
In Exchange 2016 and Exchange 2019, you can configure MAPI over HTTP at the organization level or at the individual mailbox level. Mailbox-level settings always take precedence over organization-wide settings.
The scenarios where MAPI over HTTP is enabled or disabled by default at the organization level are described in the following table:
Scenario | Exchange 2019 | Exchange 2016 |
---|---|---|
Upgrading from an Exchange 2016 environment | MAPI over HTTP is enabled by default | n/a |
Upgrading from an environment that contains any Exchange 2013 servers | MAPI over HTTP is disabled by default | MAPI over HTTP is disabled by default |
Upgrading from an Exchange 2010 environment | n/a | MAPI over HTTP is enabled by default |
Note
When MAPI over HTTP is enabled at the organization level, the MapiHttpEnabled property value that's returned by the Get-OrganizationConfig cmdlet is True
.
This topic describes how to configure and then enable MAPI over HTTP for Exchange organizations that contain Exchange 2013 servers, or for any topology where MAPI over HTTP has been previously disabled. You can also use the procedures in this article to disable MAPI over HTTP at the organization level.
This topic also describes how to enable or disable MAPI over HTTP for an individual mailbox. At the mailbox level, you have the ability to allow or block MAPI over HTTP connections internally, externally, or both. In all cases, when MAPI over HTTP is disabled, connections will be made with Outlook Anywhere.
Configure MAPI over HTTP
Complete the following steps to configure MAPI over HTTP for your organization. These steps assume you have already configured the prerequisites described in MAPI over HTTP in Exchange Server. Once configured (steps 1-3), use step 4 to enable or disable specific permission scenarios at the organization level, at the mailbox level, or both.
Virtual directory configuration: By default, Exchange creates a virtual directory for MAPI over HTTP. You use the Set-MapiVirtualDirectory cmdlet to configure the virtual directory. You need to configure an internal URL, an external URL, or both. For more information see, Set-MapiVirtualDirectory.
For example, to configure the default MAPI virtual directory on the local Exchange server by setting the internal URL value to https://contoso.com/mapi, and the authentication method to
Negotiate
, run the following command:Set-MapiVirtualDirectory -Identity "Contoso\mapi (Default Web Site)" -InternalUrl https://Contoso.com/mapi -IISAuthenticationMethods Negotiate
Certificate configuration: The digital certificate used by your Exchange environment must include the same InternalURL and ExternalURL values that are defined on the MAPI virtual directory. For more information on Exchange certificate management, see Digital certificates and encryption in Exchange Server. Make sure the Exchange certificate is trusted on the Outlook client workstation and that there are no certificate errors, especially when you access the URLs configured on the MAPI virtual directory.
Update server rules: Verify that your load balancers, reverse proxies, and firewalls are configured to allow access to the MAPI over HTTP virtual directory.
Use the following steps to enable MAPI over HTTP in your entire Exchange organization, or enable MAPI over HTTP for one or more individual mailboxes.
Note
After you run the commands below, Outlook clients with MAPI over HTTP enabled will see a message to restart Outlook to use MAPI over HTTP.
Enable MAPI over HTTP in your Exchange organization:
To enable or disable MAPI over HTTP at the organizational level, use the Set-OrganizationConfig cmdlet with the MapiHttpEnabled parameter. Valid values are:
$true: MAPI over HTTP connections are allowed for all mailboxes in the organization (unless MAPI over HTTP is disabled on a specific mailbox).
$false: MAPI over HTTP connections aren't allowed for all mailboxes in the organization (unless MAPI over HTTP is enabled on a specific mailbox).
The following example enables MAPI over HTTP connections for the entire organization:
Set-OrganizationConfig -MapiHttpEnabled $true
Enable MAPI over HTTP for an individual mailbox:
To enable or disable MAPI over HTTP at the mailbox level, use the Set-CasMailbox cmdlet with the MapiHttpEnabled parameter. Valid values are:
$null: The mailbox follows organization-level settings. This is the default value.
$true: Enable MAPI over HTTP for the mailbox. If MAPI over HTTP is disabled at the organizational level, it's enabled for the mailbox.
$false: Disable MAPI over HTTP for the mailbox. If MAPI over HTTP is enabled at the organizational level, it's disabled for the mailbox, so the mailbox will use Outlook Anywhere connections.
The following example enables MAPI over HTTP connections for a single mailbox:
Set-CasMailbox <user or mailbox ID> -MapiHttpEnabled $true
Test MAPI over HTTP connections
You can test the end-to-end MAPI over HTTP connection by using the Test-OutlookConnectivity cmdlet. To use the Test-OutlookConnectivity cmdlet, the Microsoft Exchange Health Manager (MSExchangeHM) service must be started.
The following example tests the MAPI over HTTP connection from the Exchange server named ContosoMail.
Test-OutlookConnectivity -RunFromServerId ContosoMail -ProbeIdentity OutlookMapiHttpSelfTestProbe
A successful test returns output that's similar to the following example:
MonitorIdentity StartTime EndTime Result Error Exception
--------------- --------- ------- ------ ----- ---------
OutlookMapiHttp.Protocol\OutlookMapiHttpSelfTestProbe 2/14/2018 7:15:00 AM 2/14/2018 7:15:10 AM Succeeded
For more information, see Test-OutlookConnectivity.
Logs for MAPI over HTTP activity are at the following locations:
%ExchangeInstallPath%Logging\MAPI Address Book Service\
%ExchangeInstallPath%Logging\MAPI Client Access\
%ExchangeInstallPath%Logging\HttpProxy\Mapi\
Combining MAPI over HTTP configurations and internal or external connections
In addition to the organization and mailbox settings described earlier in this topic, you can use the MapiBlockOutlookExternalConnectivity parameter on the Set-CasMailbox cmdlet to allow or deny external Outlook Anywhere or MAPI over HTTP connections to a specific mailbox. Valid values are:
True: Only internal connections are allowed to the mailbox.
False: Internal and external connections are allowed to the mailbox. This is the default value.
The following table summarizes the results of the different setting combinations at the organization level and on individual mailboxes.
MapiHttpEnabled value on Set-OrganizationConfig | MapiHttpEnabled value on Set-CasMailbox | MapiBlockOutlookExternalConnectivity value on Set-CasMailbox | AutoDiscover result |
---|---|---|---|
$true | $null | $false | MAPI over HTTP, internal and external |
$true | $null | $true | MAPI over HTTP, internal only |
$true | $true | $false | MAPI over HTTP, internal and external |
$true | $true | $true | MAPI over HTTP, internal only |
$true | $false | $false | Outlook Anywhere, internal and external |
$true | $false | $true | Outlook Anywhere, internal only |
$false | $null | $false | Outlook Anywhere, internal and external |
$false | $null | $true | Outlook Anywhere, internal only |
$false | $true | $false | MAPI over HTTP, internal and external |
$false | $true | $true | MAPI over HTTP, internal only |
$false | $false | $false | Outlook Anywhere, internal and external |
$false | $false | $true | Outlook Anywhere, internal only |
Manage MAPI over HTTP
You can manage the configuration of MAPI over HTTP by using the following cmdlets: