Share via


Configurar caixas de correio de site no SharePoint Server

APLICA-SE A:yes-img-132013 yes-img-16 2016yes-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint no Microsoft 365

Este artigo descreve como configurar as caixas de correio de site no SharePoint Server e no Exchange Server. Elas oferecem aos usuários do SharePoint Server um email de equipe em um site do SharePoint. Elas também fornecem links para bibliotecas de documentos do SharePoint no Microsoft Outlook, permitindo que os usuários compartilhem arquivos e enviem mensagens por email para outros membros de uma equipe que esteja trabalhando em um projeto conjunto.

Antes de começar

Antes de começar essa operação, revise as informações a seguir sobre pré-requisitos:

  • As caixas de correio do site exigem Exchange Server 2013 ou posterior.

  • Todas as versões anteriores dos EWS (Serviços Web do Exchange) precisarão ser desinstaladas dos servidores do SharePoint.

    Observação

    Talvez seja preciso determinar se uma versão anterior do EWS está instalada. Em caso afirmativo, execute o script Check-SiteMailboxConfig referenciado abaixo.

  • O recurso Caixas de Correio do Site exige que a sincronização do perfil do usuário esteja configurada no farm. Para obter informações sobre a configuração da sincronização do perfil de usuário, consulte Planejar perfis de usuário e identidades e Gerenciar a sincronização de perfil de usuário no SharePoint Server.

  • O recurso de caixas de correio de site exige que o aplicativo de serviço de gerenciamento do aplicativo seja configurado no farm. Para obter informações sobre a configuração do aplicativo de serviço de gerenciamento do aplicativo, consulte New-SPAppManagementServiceApplication.

  • O protocolo SSL configurado para a zona padrão é um requisito para os aplicativos Web implantados nos cenários que suportam a autenticação de servidor para servidor e a de aplicativos. Este é um cenário. Como pré-requisito para configurar as caixas de correio de site, o computador que executa o SharePoint Server deve ter SSL configurado. Confira mais informações em Criar aplicativos web baseados em declarações no SharePoint Server e siga as etapas para criar um conjunto de sites SSL e um certificado de servidor.

Observe que talvez seja necessário importar o certificado SSL Exchange Server de Exchange Server para o SharePoint Server e do SharePoint Server para Exchange Server. Isso só será necessário se o certificado não for confiável para os pontos de extremidade da API (como um Certificado Auto-SSL em um ambiente de laboratório). Para importar um certificado SSL não confiável para um novo servidor:

  • Abra o Internet Explorer e navegue para o Outlook Web App (se a implantação for no SharePoint Server) ou para o site SSL do SharePoint (se a implantação for no Exchange Server): https://<ExServerName>/owa ou https://<SP_FQDN>.

  • Aceite confiar no certificado clicando em Continuar para o site.

  • Clique nas informações do Erro de Certificado no Internet Explorer ao lado da barra de Endereço e clique em Exibir Certificados.

  • Selecione Instalar Certificado e Colocar todos os certificados no armazenamento a seguir.

  • Marque as caixas de seleção para mostrar os armazenamentos físicos.

  • Instale o certificado no computador local autoridades > de certificação raiz confiáveis.

  • Para executar esses procedimentos, você deve ser um membro dos grupos de administradores do SharePoint e do Exchange Server e ter um Exchange Server funcionando com caixas postais de usuários finais.

  • Uma solução de backup do SharePoint não incorporará caixas de correio do site do Exchange. Um administrador do Exchange deverá assegurar que backups de caixas de correio de site estejam ocorrendo em tempo hábil.

  • Os usuários que acessam arquivos em uma biblioteca de documentos do SharePoint de uma Caixa de Correio do Site devem ter a biblioteca de documentos configurada como um site confiável em seu navegador ou um aviso será exibido que pergunta ao usuário se ele deseja confiar no arquivo.

Configure o SharePoint para Caixas de Correio de Site no SharePoint Server

A primeira etapa na configuração de Caixas de Correio de Site é instalar a API dos Serviços Web do Exchange Server em cada servidor de aplicativos e Web no farm do SharePoint Server.

Instalar a API de serviços Web do Exchange no SharePoint Server

  1. Baixe o EWSManagedAPI.msi no Centro de Download da Microsoft e salve-o em uma pasta em cada servidor Web e de aplicativos.

  2. Abra uma janela de comando como administrador e navegue até a pasta onde você salvou o EWSManagedAPI.msi.

  3. Execute o comando a seguir:

    msiexec /I EwsManagedApi.msi addlocal="ExchangeWebServicesApi_Feature"
    
  4. Redefina o IIS da linha de comando, digitando IISReset.

Estabelecer Permissões de serviço e Confiança OAuth no SharePoint Server

A etapa seguinte é copiar os dois scripts a seguir. O primeiro deve ser salvo como Set-SiteMailboxConfig.ps1 e o segundo, como Check-SiteMailboxConfig.ps1.

Set-SiteMailboxConfig.ps1:

# .SYNOPSIS
#
# Set-SiteMailboxConfig helps configure Site Mailboxes for a SharePoint farm
#
# .DESCRIPTION
#
# Establishes trust with an Exchange Server, sets Site Mailbox settings and enables Site Mailboxes for a farm.
#
# .PARAMETER ExchangeSiteMailboxDomain
#
# The FQDN of the Exchange Organization where Site Mailboxes will be created
#
# .PARAMETER ExchangeAutodiscoverDomain
#
# [Optional] The FQDN of an Exchange Autodiscover Virtual Directory
#
# .PARAMETER WebApplicationUrl
#
# [Optional] The URL of a specific web application to configure. If not specified all Web Applications will be configured
#
# .PARAMETER Force
#
# [Optional] Indicate that the script should ignore any configuration issues and enable Site Mailboxes anyway
#
Param
(
   [Parameter(Mandatory=$true)]
   [ValidateNotNullOrEmpty()]   
   [string]$ExchangeSiteMailboxDomain,
   [Parameter(Mandatory=$false)]
   [ValidateNotNullOrEmpty()]   
   [string]$ExchangeAutodiscoverDomain,
   [Parameter(Mandatory=$false)]
   [ValidateNotNullOrEmpty()]   
   [string]$WebApplicationUrl,
   [Parameter(Mandatory=$false)]
   [switch]$Force
)
$script:currentDirectory = Split-Path $MyInvocation.MyCommand.Path
if($WebApplicationUrl -ne $NULL -and $WebApplicationUrl -ne "")
{
    $webapps = Get-SPWebApplication $WebApplicationUrl
}
else
{
    $webapps = Get-SPWebApplication
}
if($webapps -eq $NULL)
{
    if($WebApplicationUrl -ne $NULL)
    {
        Write-Warning "No Web Application Found at $($WebApplicationUrl). Please create a web application and re-run Set-SiteMailboxConfig"
    }
    else
    {
        Write-Warning "No Web Applications Found. Please create a web application and re-run Set-SiteMailboxConfig"
    }
    
    return
}
$rootWeb = $NULL
foreach($webapp in $webapps)
{
    if($rootWeb -eq $NULL)
    {
        $rootWeb = Get-SPWeb $webApp.Url -EA SilentlyContinue
    }
}
if($rootWeb -eq $NULL)
{
    Write-Warning "Unable to find a root site collection. Please create a root site collection on a web application and re-run Set-SiteMailboxConfig"
    return
}
$exchangeServer = $ExchangeAutodiscoverDomain
if($exchangeServer -eq $NULL -or $exchangeServer -eq "")
{
    $exchangeServer = "autodiscover.$($ExchangeSiteMailboxDomain)"
}
Write-Host "Establishing Trust with Exchange Server: $($exchangeServer)"
$metadataEndpoint = "https://$($exchangeServer)/autodiscover/metadata/json/1"
$exchange = Get-SPTrustedSecurityTokenIssuer | Where-Object { $_.MetadataEndpoint -eq $metadataEndpoint }
if($exchange -eq $NULL)  
{
    $exchange = New-SPTrustedSecurityTokenIssuer -Name $exchangeServer -MetadataEndPoint $metadataEndpoint
}
if($exchange -eq $NULL)
{
    Write-Warning "Unable to establish trust with Exchange Server $($exchangeServer). Ensure that $($metadataEndpoint) is accessible."
    if($ExchangeAutodiscoverDomain -eq $NULL -or $ExchangeAutodiscoverDomain -eq "")
    {
        Write-Warning "If $($metadataEndpoint) doesn't exist, you may specify an alternate FQDN using ExchangeAutodiscoverDomain."
    }
    return
}
Write-Host "Granting Permissions to Exchange Server: $($exchangeServer)"
$appPrincipal = Get-SPAppPrincipal -Site $rootWeb.Url -NameIdentifier $exchange.NameId
Set-SPAppPrincipalPermission -AppPrincipal $appPrincipal -Site $rootWeb -Scope SiteSubscription -Right FullControl -EnableAppOnlyPolicy
Write-Host
Write-Host
Write-Host "Verifying Site Mailbox Configuration"
$warnings = & $script:currentDirectory\Check-SiteMailboxConfig.ps1 -ReturnWarningState
if($warnings -and -not $Force)
{
    Write-Warning "Pre-requisites not satisfied. Stopping Set-SiteMailboxConfig. Use -Force to override"
    return
}
elseif($warnings)
{
    Write-Warning "Pre-requisites not satisfied. -Force used to override"
}
foreach($webapp in $webapps)
{
    Write-Host "Configuring Web Application: $($webapp.Url)"
    Write-Host "Setting Exchange Site Mailbox Domain to $($ExchangeSiteMailboxDomain)"
    $webapp.Properties["ExchangeTeamMailboxDomain"] = $ExchangeSiteMailboxDomain
        
    if($ExchangeAutodiscoverDomain -ne $NULL -and $ExchangeAutodiscoverDomain -ne "")
    {
        Write-Host "Setting Exchange Autodiscover Domain to $($ExchangeAutodiscoverDomain)"
        $webapp.Properties["ExchangeAutodiscoverDomain"] = $ExchangeAutodiscoverDomain;
    }
    $webapp.Update()
}
$feature = Get-SPFeature CollaborationMailboxFarm -Farm -ErrorAction Ignore
if($feature -eq $NULL)
{
    Write-Host "Enabling Site Mailboxes for Farm"
    Enable-SPFeature CollaborationMailboxFarm
}
else
{
    Write-Host "Site Mailboxes already enabled for Farm"
}

Check-SiteMailboxConfig.ps1:

Param
(
   [Parameter(Mandatory=$false)]
   [ValidateNotNullOrEmpty()]   
   [switch]$ReturnWarningState
)
Add-PSSnapin Microsoft.SharePoint.Powershell
$anyWarnings = $false
Write-Host "Step 1: Checking for Exchange Web Services"
try
{
    $assm = [System.Reflection.Assembly]::Load("Microsoft.Exchange.WebServices, Version=15.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")
    if($assm.GlobalAssemblyCache)
    {
        Write-Host -Foreground Green "Found Exchange Web Services in Global Assembly Cache"
        Write-Host "Exchange Web Services Version: $([System.Diagnostics.FileVersionInfo]::GetVersionInfo($assm.Location).FileVersion)"
    }
    else
    {
        Write-Warning "Unable to find Exchange Web Services in Global Assembly Cache"
        $anyWarnings = $true
    }
}
catch
{
    Write-Warning "Unable to find Exchange Web Services in Global Assembly Cache"
    $anyWarnings = $true
}
Write-Host
Write-Host
Write-Host "Step 2: Checking for https web application"
$webapps = Get-SPWebApplication -EA SilentlyContinue
$rootWeb = $NULL
if($webapps -ne $NULL)
{
    $sslWebAppExists = $false
    foreach($webapp in $webapps)
    {
        if($rootWeb -eq $NULL)
        {
            $rootWeb = Get-SPWeb $webApp.Url -EA SilentlyContinue
        }
        if(-not $webapp.Url.StartsWith("https://"))
        {
            Write-Warning "Web Application at $($webapp.Url) does not use HTTPS. Site Mailboxes will not work on this Web Application."
        }
        else
        {
            $sslWebAppExists = $true
            Write-Host -Foreground Green "Found Web Application at $($webapp.Url) that uses HTTPS"
        }
    }
    if(-not $sslWebAppExists)
    {
        Write-Warning "At least one Web Application must be configured for HTTPS in the default zone."
        $anyWarnings = $true
    }
}
else
{
    Write-Warning "No Web Applications Found. Please create a web application and re-run Check-SiteMailboxConfig"
    $anyWarnings = $true
    if($ReturnWarningState)
    {
        return $anyWarnings
    }
    return;
}
if($rootWeb -eq $NULL)
{
    Write-Warning "Unable to find any Sites. Please create a root site collection on a web application and re-run Check-SiteMailboxConfig"
    $anyWarnings = $true
    if($ReturnWarningState)
    {
        return $anyWarnings
    }
    return;
}
# Get App Permissions Management Objects
$appPrincipalManager = [Microsoft.SharePoint.SPAppPrincipalManager]::GetManager($rootWeb)
$appPrincipalPermissionsManager = New-Object -TypeName Microsoft.SharePoint.SPAppPrincipalPermissionsManager -ArgumentList $rootWeb        
Write-Host
Write-Host
Write-Host "Step 3: Checking for trusted Exchange Servers"
$trustedIssuers = Get-SPTrustedSecurityTokenIssuer
$trustedIssuerHosts = @()
if($trustedIssuers -ne $NULL)
{
    $foundTrustedIssuer = $false
    foreach($trustedIssuer in $trustedIssuers)
    {
        if($trustedIssuer.RegisteredIssuerName.StartsWith("00000002-0000-0ff1-ce00-000000000000@"))
        {
            if($trustedIssuer.IsSelfIssuer)
            {
                $foundTrustedIssuer = $true
                $uri = New-Object -TypeName System.Uri -ArgumentList $trustedIssuer.MetadataEndPoint
                
                Write-Host -Foreground Green "Found trusted Exchange Server at $($uri.Host)"
                $appPrincipalName = [Microsoft.SharePoint.SPAppPrincipalName]::CreateFromNameIdentifier($trustedIssuer.RegisteredIssuerName)
                $appPrincipal = $appPrincipalManager.LookupAppPrincipal([Microsoft.SharePoint.SPAppPrincipalIdentityProvider]::External, $appPrincipalName);
                
                if($appPrincipal -ne $NULL)
                {
                    $isValidAppPrincipal = $true;
                    if($appPrincipalPermissionsManager.GetAppPrincipalSiteSubscriptionContentPermission($appPrincipal) -eq [Microsoft.SharePoint.SPAppPrincipalPermissionKind]::FullControl)
                    {
                        Write-Host -Foreground Green "Exchange Server at $($uri.Host) has Full Control permissions"
                        
                    }
                    else
                    {
                        Write-Warning "Exchange Server at $($uri.Host) does not have Full Control permissions"
                        $isValidAppPrincipal = $false;
                        $anyWarnings = $true
                    }
                    if($appPrincipalPermissionsManager.IsAppOnlyPolicyAllowed($appPrincipal))
                    {
                        Write-Host -Foreground Green "Exchange Server at $($uri.Host) has App Only Permissions"
                    }
                    else
                    {
                        Write-Warning "Exchange Server at $($uri.Host) does not have App Only Permissions"
                        $isValidAppPrincipal = $false;
                        $anyWarnings = $true
                    }
                    
                    if($isValidAppPrincipal)
                    {
                        $trustedIssuerHosts += $uri.Host
                    }
                }
                else
                {
                    Write-Warning "Unable to get App Principal for $($uri.Host). Unable to check permissions for this Exchange Server"
                    $anyWarnings = $true
                }
            }
            else
            {
                Write-Warning "Found trusted Exchange Server at $($uri.Host) but it is not a Self Issuer"
                $anyWarnings = $true
            }
        }
    }
    if(-not $foundTrustedIssuer)
    {
        Write-Warning "Unable to find any trusted Exchange Servers"
        $anyWarnings = $true
    }
}
else
{
    Write-Warning "Unable to find any trusted Exchange Servers"
    $anyWarnings = $true
}
Write-Host
Write-Host
Write-Host "Step 4: Report current Site Mailbox Configuration"
if($webapps -ne $NULL)
{
    foreach($webapp in $webapps)
    {
        Write-Host
        Write-Host "Web Application Site Mailbox Configuration: $($webapp.Url)"
        Write-Host "Exchange Site Mailbox Domain: $($webapp.Properties["ExchangeTeamMailboxDomain"])"
        
        if($webapp.Properties["ExchangeAutodiscoverDomain"] -ne $NULL)
        {
            Write-Host "Exchange Autodiscover Domain: $($webapp.Properties["ExchangeAutodiscoverDomain"])"
        }
    }
}
Write-Host
Write-Host "Trusted Exchange Services: $([String]::Join(", ", $trustedIssuerHosts))"
$feature = Get-SPFeature CollaborationMailboxFarm -Farm -ErrorAction Ignore
if($feature -eq $NULL)
{
    Write-Host -ForegroundColor Red "Site Mailboxes are NOT enabled for Farm"
}
else
{
    Write-Host -ForegroundColor Green "Site Mailboxes are enabled for Farm"
}
if($ReturnWarningState)
{
    return $anyWarnings
}

Salve os dois arquivos .ps1 na mesma pasta em um servidor de aplicativos ou front-end do SharePoint Server, pois um script chama o outro durante a execução. Em uma janela do Microsoft PowerShell (clique com o botão direito do mouse e selecione Executar como administrador para abrir), navegue para a pasta que contém os arquivos .ps1 e execute o script Set-SiteMailboxConfig.ps1. Isso permitirá que os usuários façam o seguinte:

  • Recupere e instale os metadados do Exchange, dando à entidade de segurança de serviço do Exchange permissões de controle total da assinatura do site do SharePoint

  • Ativa o recurso de caixa de correio de site no ambiente SharePoint

  • (opcional) Define o domínio de destino da caixa de correio de site do Exchange caso o DNS do domínio não tenha sido configurado para a descoberta automática

O Check-SiteMailboxConfig.ps1 é chamado como parte do script Set-SiteMailboxConfig e confirmará que a configuração foi bem-sucedida (ele também pode ser executado separadamente).

O formato deve ser o seguinte:

   .\Set-SiteMailboxConfig.ps1 -ExchangeSiteMailboxDomain \<Domain\> -ExchangeAutodiscoverDomain [Exchange Server] -WebApplicationUrl [URL]

Onde <Domínio> é igual ao FQDN do domínio em que seu Exchange Server está, e <Exchange Server> é o Exchange Server ao qual você pretende se conectar. É um parâmetro obrigatório.

Os parâmetros opcionais são [Exchange Server], que é o Exchange Server ao qual você pretende se conectar (será necessário caso a Descoberta Automática não esteja habilitada ou adequadamente configurada) e [URL], que deve ser uma URL específica que pode estar sendo configurada (normalmente usada em um ambiente com aplicativos Web SSL e não SSL).

Exemplo:

   .\Set-SiteMailboxConfig.ps1 -ExchangeSiteMailboxDomain tailspintoys.com -ExchangeAutodiscoverDomain exchange1.tailspintoys.com -WebApplicationUrl https://tailspintoys.com

Se um erro for encontrado durante a execução do script, confira a seção "Solução de problemas" deste artigo para receber orientação.

Configure o Exchange Server para caixas de correio de site

A etapa final é estabelecer a confiança OAuth e as permissões de serviço no servidor do Exchange.

Estabeleça a Confiança OAuth e as Permissões de Serviço no Exchange

  1. Em sua instância de Exchange Server abra a janela do PowerShell de Gerenciamento do Exchange como Administrador e altere para o diretório "C:\Program Files\Microsoft\Exchange Server\V15\Scripts".

  2. Execute o seguinte comando:

    .\Configure-EnterprisePartnerApplication.ps1 -ApplicationType Sharepoint -AuthMetadataUrl https://<SP_FQDN>/_layouts/15/metadata/json/1
    

    Onde <SP_FQDN> é a URL para o conjunto de sites raiz SSL do SharePoint que você deseja configurar.

Solução de problemas

Analise a tabela abaixo caso encontre erros.

Tabela de códigos de erro para referência ao executar um script de lista de verificação de configuração

Código do erro Erro Anotações
0
NoError
Pré-requisitos de análise
1
ExchangeClientNotAvailable
O cliente EWS não foi localizado no WFE do SharePoint. Execute o script de verificação e assegure que as entradas estejam no GAC de forma adequada; pode ser preciso reinstalar o cliente EWS.
2
UnsupportedVersion
A versão do cliente EWS não é compatível com o SharePoint. Execute o script de verificação para assegurar que a versão atenda aos requisitos mínimos. Como alternativa, o servidor do Exchange pode ser 2010 ou anterior.
3
InvalidUser
O parâmetro TeamMailboxDomain não é um endereço FQDN ou SMTP válido.
4
UnauthorizedUser
O script recebeu um 401 do Exchange Server, analise as etapas de configuração do Exchange.
5
ServerBusy
Tempo limite do Exchange atingido durante a descoberta automática. Deve ser intermitente, tente novamente, mas se for persistente, siga com o Administrador do Exchange.
6
URLNotAvailable
A descoberta automática falhou ao retornar uma URL para ECP/OWA, o que significa normalmente que a versão do cliente EWS não é compatível com o SharePoint. Isso pode significar também que as caixas de correio de site não foram habilitadas no Exchange, o que exigirá acompanhamento com o administrador do Exchange.
7
OAuthNotSupported
Falha ao gerar um token OAuth em nome do SharePoint. Normalmente, isso é causado por uma autenticação baseada em declarações sendo desabilitada no aplicativo Web do SharePoint.
8
OAuthException
Ocorreu um erro durante o handshake OAuth entre o SharePoint e o Exchange. Normalmente, isso é causado por problemas de configuração de servidor para servidor, como uma incompatibilidade de valor do realm em cada uma das partes, problemas de certificado do Exchange ou SharePoint etc. Analise os certificados e tente estabelecer ou restabelecer a confiança.
9
InvalidAutodiscoverDomain
A propriedade do domínio da descoberta automática não está definida como um FQDN válido.
10
UnknownError
Ocorreu uma condição de erro desconhecida. Execute o script Verificar e confirme se uma instância válida e confiável do SharePoint está disponível, examine os pré-requisitos e confirme se o AutoDiscover foi configurado corretamente com o Administrador do Exchange.
101
OAuthNotSupportedOverHttp
Se este erro é descartado, a zona padrão de seu aplicativo Web não está definida como SSL e AllowOauthoverHttp também está definido como falso. Execute o script de verificação para assegurar que qualquer aplicativo Web em que você pretende hospedar caixas de correio de site esteja definido como SSL na zona padrão conforme destacado nos pré-requisitos.
102
AssociatedOwnersGroupNull
Um ou ambos os grupos padrão de proprietários e membros do site foram excluídos. Ambos os dois grupos padrão são necessários para existir em qualquer site em que os usuários instalem caixas de correio do site. Um administrador do site deve ser capaz de direcionar um proprietário do site para recriar esses grupos necessários.
103
ExchangeTeamMailboxDomainNotSet
A propriedade TeamMailboxDomain do Exchange não foi definida.
104
ExchangeAppPrincipalNotFound
Nenhuma entidade de segurança confiável do aplicativo do Exchange foi localizada. Normalmente, isso significa que a etapa New-SPTrustedSecureTokenService foi ignorada. Execute o script de verificação para assegurar que as URLs principais do aplicativo fornecidas sejam as corretas.
105
ExchangeAppPrincipalMissingPermissions
A entidade de segurança do aplicativo do Exchange sendo conectada não tem as permissões de direito no farm do SharePoint. Execute o script de verificação e assegure que a entidade de segurança do aplicativo do Exchange tenha as permissões necessárias no farm.

Confira também

Conceitos

Plan email integration for a SharePoint Server farm

Configure email integration for a SharePoint Server farm

Outros recursos

Caixas de correio de site

Colaboração