Exportar (0) Imprimir
Expandir todo

Configurar buzones de sitio en SharePoint Server 2013

SharePoint 2013
 

Se aplica a: SharePoint Server 2013, Exchange Server 2013

Última modificación del tema: 2013-12-18

Resumen: configure Exchange Server 2013 y SharePoint Server 2013 para el correo electrónico de equipo con la función Buzones del sitio de SharePoint Server 2013.

En este artículo, se describe cómo configurar los buzones del sitio en SharePoint Server 2013 y Exchange Server 2013. La característica de buzones del sitio proporciona a los usuarios de SharePoint Server 2013 el correo electrónico de equipo en un sitio de SharePoint. Los buzones del sitio también proporcionan vínculos a bibliotecas de documentos de SharePoint en Outlook 2013, lo que permite a los usuarios compartir archivos y mensajes de correo electrónico con otros miembros de un equipo que trabajan en un proyecto común.

Antes de empezar esta operación, revise la siguiente información sobre los requisitos previos:

  • Los buzones del sitio necesitan Exchange Server 2013.

  • Es necesario desinstalar todas las versiones anteriores de Servicios Web Exchange (EWS) de los servidores de SharePoint.

    NotaNota:
    Es posible que tenga que averiguar si está instalada alguna versión anterior de EWS. Si está instalada, ejecute el script Check-SiteMailboxConfig al que se hace referencia a continuación. Su versión debe ser 15.0.516.25 o superior.
  • La función de buzones del sitio requiere que esté configurada la sincronización de perfiles de usuario en la granja de servidores. Para obtener información sobre cómo configurar la sincronización de perfiles de usuario, consulte Planear identidades y perfiles de usuario (SharePoint Server 2013) y Administración de la sincronización de perfiles en SharePoint Server 2013.

  • La función de buzones del sitio requiere que esté configurada la aplicación de servicio de administración de aplicaciones en la granja de servidores. Para obtener información sobre la configuración de la aplicación de servicio de administración de aplicaciones, consulte New-SPAppManagementServiceApplication.

  • La Capa de sockets seguros (SSL) configurada para la Zona predeterminada es un requisito de las aplicaciones web que se implementan en escenarios compatibles con la autenticación de servidor a servidor y la autenticación de aplicaciones, como el escenario que describimos ahora. Como requisito previo para configurar Buzones del sitio, el equipo que ejecuta SharePoint Server debe tener configurado SSL. Para obtener más información, consulte Crear aplicaciones web basadas en notificaciones en SharePoint 2013 y siga los pasos para crear una colección de sitios SSL y un certificado de servidor.

    NotaNota:
    Puede que tenga que importar el certificado SSL de Exchange Server de Exchange 2013 a SharePoint 2013, y de SharePoint 2013 a Exchange 2013. Solo es necesario hacerlo si los extremos de la API no consideran que el certificado es de confianza (por ejemplo, un autocertificado SSL en un entorno de laboratorio).
    Para importar un certificado SSL que no es de confianza en un nuevo servidor:
    • Abra Internet Explorer y navegue hasta Outlook Web App Preview (si la implementación está en SharePoint Server) o hasta el sitio SSL de SharePoint (si la implementación está en Exchange Server): https://<NombreServidorEx>/owa o https://<FQDN_SP>.

    • Para aceptar confiar en el certificado, haga clic en Continuar al sitio web.

    • Haga clic en la información de Error de certificado en Internet Explorer junto a la barra de direcciones y, después, haga clic en Ver certificados.

    • Elija Instalar certificado y, a continuación, elija Colocar todos los certificados en el siguiente almacén.

    • Active la casilla para mostrar los almacenes físicos.

    • Instale el certificado en Entidades de certificación raíz de confianza > Equipo local.

  • Para realizar estos procedimientos, debe ser miembro de SharePoint y de los grupos de administradores de Exchange Server y tener Exchange Server operativo con buzones de usuario final.

  • Las soluciones de copia de seguridad de SharePoint no tienen incorporados los buzones del sitio de Exchange. Los administradores de Exchange deberán asegurarse de que se realicen las copias de seguridad oportunas de los buzones del sitio.

  • Los usuarios que obtengan acceso a archivos de una biblioteca de documentos de SharePoint desde un buzón del sitio deben tener la biblioteca de documentos que se configura como un sitio de confianza en su navegador o que pregunta al usuario si él o ella desea confía en el archivo aparecerá una advertencia.

NotaNota:
Puesto que SharePoint 2013 se ejecuta como un sitio web en Internet Information Services (IIS), los administradores y los usuarios dependen de las funciones de accesibilidad que proporcionan los exploradores. SharePoint 2013 admite las funciones de accesibilidad de los exploradores compatibles. Para más información, vea los siguientes recursos:

El primer paso en la configuración de los buzones del sitio es instalar la API de Servicios web de Exchange Server en cada servidor front-end web (WFE) de la granja de servidores de SharePoint Server 2013.

Instalación de la API de Servicios web de Exchange en SharePoint Server
  1. Descargue EWSManagedAPI.msi del Centro de descarga de Microsoft (http://www.microsoft.com/en-us/download/details.aspx?id=35371) y guárdelo en una carpeta en cada servidor WFE.

  2. Abra una ventana de comandos como administrador y desplácese hasta la carpeta donde guardó EWSManagedAPI.msi.

  3. Ejecute el siguiente comando:

    msiexec /i EwsManagedApi.msi addlocal="ExchangeWebServicesApi_Feature,ExchangeWebServicesApi_Gac"
    
  4. Reinicie IIS desde la línea de comando escribiendo IISReset.

El siguiente paso es copiar los dos scripts siguientes. El primero se debe guardar como Set-SiteMailboxConfig.ps1, y el segundo se debe guardar 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) does not 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
}

Guarde los dos archivos .ps1 en la misma carpeta en un servidor WFE de SharePoint 2013, ya que uno de los scripts llama al otro durante la ejecución. En una ventana de PowerShell de SharePoint (haga clic con el botón secundario y elija Ejecutar como administrador para abrirlo), navegue hasta la carpeta que contiene los archivos .ps1 y ejecute el script Set-SiteMailboxConfig.ps1. Esto permitirá a los usuarios hacer lo siguiente:

  • Recuperar e instalar los metadatos de Exchange, para conceder a la entidad de servicio de Exchange permisos de control total sobre la suscripción al sitio de SharePoint

  • Habilitar la función de buzones del sitio en el entorno de SharePoint

  • (Opcional) Establecer el dominio de destino de los buzones del sitio de Exchange, si no se ha configurado el DNS del dominio para la Detección automática

Se llama a Check-SiteMailboxConfig.ps1 como parte del script Set-SiteMailboxConfig, y confirma que la configuración se ha realizado correctamente (también se puede ejecutar de forma independiente).

El formato debe ser como sigue:

.\Set-SiteMailboxConfig.ps1 -ExchangeSiteMailboxDomain <Dominio> -ExchangeAutodiscoverDomain [Servidor de Exchange] -WebApplicationUrl [URL]

Donde <Dominio> es el nombre completo del dominio en el que se encuentra su servidor de Exchange, y <Servidor de Exchange> es el servidor de Exchange al que desea conectarse. Este parámetro es obligatorio.

Los parámetros opcionales son [Servidor de Exchange], que es el servidor de Exchange al que desea conectarse (esto es necesario si la Detección automática no está habilitada o no está correctamente configurada) y [URL], que sería una dirección URL específica que estuviera configurando (generalmente se usa en un entorno con aplicaciones web SSL y aplicaciones web que no sean de SSL).

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

Si se produce algún error durante la ejecución del script, consulte la sección "Solución de problemas" más adelante en este artículo para obtener instrucciones.

El último paso consiste en establecer la confianza OAuth, y los permisos del servicio, en el servidor Exchange.

Establecer la confianza OAuth y el permiso del servicio en Exchange
  1. En su instancia de Exchange Server, abra la ventana de Exchange Management PowerShell como Administrador y vaya al directorio “C:\Archivos de programa\Microsoft\Exchange Server\V15\Scripts”.

  2. Ejecute el siguiente comando:

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

    Donde <SP_FQDN> es la dirección URL de la colección de sitios raíz SSL de SharePoint que quiere configurar.

Revise la siguiente tabla si tiene problemas.

Tabla de códigos de error para consultar al ejecutar un script de lista de comprobación de configuración

Código de error Error Notas

0

NoError

Revise los requisitos previos.

1

ExchangeClientNotAvailable

No se encontró el cliente de EWS en el WFE de SharePoint. Ejecute el script de comprobación y compruebe que las entradas de la GAC son correctas; es posible que tenga que reinstalar el cliente de EWS.

2

UnsupportedVersion

La versión del cliente de EWS es incompatible con SharePoint. Ejecute el script de comprobación para comprobar que la versión cumple los requisitos mínimos. También es posible que el servidor Exchange sea 2010 o anterior.

3

InvalidUser

El parámetro TeamMailboxDomain no es una dirección SMTP ni un FQDN válido.

4

UnauthorizedUser

El script recibió un 401 de Exchange Server; revise los pasos de configuración de Exchange.

5

ServerBusy

Exchange agotó el tiempo de espera durante la Detección automática. Debería ser intermitente; inténtelo de nuevo pero, si persiste, realice un seguimiento con el Administrador de Exchange.

6

URLNotAvailable

La Detección automática no pudo devolver una dirección URL para ECP/OWA, lo que suele significar que la versión del cliente de EWS es incompatible con SharePoint. También puede querer decir que los buzones del sitio no están habilitados en Exchange; si ocurre esto último, es necesario que realice un seguimiento con el Administrador de Exchange.

7

OAuthNotSupported

No se pudo generar un token de OAuth en nombre de SharePoint. Esto suele deberse a que la autenticación basada en notificaciones está deshabilitada en la aplicación web de SharePoint.

8

OAuthException

Error del protocolo de enlace de OAuth entre SharePoint y Exchange. Suele deberse a problemas de configuración de servidor a servidor como, por ejemplo, que no coincidan los valores de territorio de ambos lados, que haya problemas de certificados de Exchange o SharePoint, etc. Revise los certificados e intente establecer o restablecer la confianza.

9

InvalidAutodiscoverDomain

La propiedad de dominio de Detección automática no tiene configurado un FQDN válido.

10

UnknownError

Se ha producido una condición de error desconocido. Ejecute el script de comprobación y confirme que está disponible una sesión válida y de confianza de SharePoint, revise los requisitos previos y confirme que la Detección automática se ha configurado correctamente con el Administrador de Exchange.

101

OAuthNotSupportedOverHttp

Si aparece este error, la zona predeterminada de la aplicación web no está configurada como SSL, y AllowOauthoverHttp también está configurado como false. Ejecute el script de comprobación para comprobar que todas las aplicaciones web en las que desea hospedar buzones del sitio están configuradas con SSL en la zona predeterminada, como se indica en los requisitos previos.

102

AssociatedOwnersGroupNull

El grupo predeterminado del sitio Propietarios, el grupo predeterminado del sitio Miembros o ambos grupos se han eliminado. Es necesario que existan estos dos grupos predeterminados en todos los sitios donde los usuarios instalen buzones del sitio. Los administradores del sitio deberían poder indicar a un propietario del sitio cómo volver a crear estos grupos obligatorios.

103

ExchangeTeamMailboxDomainNotSet

La propiedad ExchangeTeamMailboxDomain no se ha establecido.

104

ExchangeAppPrincipalNotFound

No se encontró ninguna entidad de aplicación de Exchange que sea de confianza. En general, esto significa que no se ha realizado el paso New-SPTrustedSecureTokenService. Ejecute el script de comprobación y compruebe que las direcciones URL de entidades de aplicación resultantes son las correctas.

105

ExchangeAppPrincipalMissingPermissions

La entidad de aplicación de Exchange a la que se está conectando no tiene los permisos correctos en la granja de servidores de SharePoint. Ejecute el script de comprobación y compruebe que la entidad de aplicación de Exchange cuenta con los permisos necesarios en la granja de servidores.

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios
Mostrar:
© 2014 Microsoft