Configurer des boîtes aux lettres de site dans SharePoint Server
S’APPLIQUE À :2013 2016 2019 Édition d’abonnement SharePoint dans Microsoft 365
Cet article explique comment configurer des boîtes aux lettres de site dans SharePoint Server et Exchange Server. La fonctionnalité Boîtes aux lettres de site fournit aux utilisateurs SharePoint Server des e-mails d’équipe sur un site. Les boîtes aux lettres de site fournissent également des liens vers des bibliothèques de documents SharePoint dans Microsoft Outlook, ce qui permet aux utilisateurs de partager des fichiers et des messages électroniques avec d’autres membres d’une équipe qui travaillent sur un projet conjoint.
Avant de commencer
Avant de commencer cette opération, lisez les informations suivantes sur les éléments prérequis :
Les boîtes aux lettres de site nécessitent Exchange Server 2013 ou version ultérieure.
Toute version antérieure des services web Exchange doit être désinstallée des serveurs SharePoint.
Notes
Vous devrez peut-être déterminer si une version antérieure des services web Exchange est installée. Si tel est le cas, exécutez le script Check-SiteMailboxConfig référencé ci-dessous.
La fonctionnalité Boîtes aux lettres de site nécessite que la synchronisation des profils utilisateur soit configurée dans la batterie de serveurs. Pour plus d'informations sur la configuration de la synchronisation des profils utilisateur, voir Planifier les profils utilisateur et les identités et Gérer la synchronisation des profils utilisateur dans SharePoint Server.
La fonctionnalité Boîtes aux lettres du site nécessite que l'application de service Gestion des applications soit configurée dans la batterie de serveurs. Pour plus d'informations sur la configuration de l'application de service Gestion des applications, voir New-SPAppManagementServiceApplication.
Le protocole SSL (Secure Sockets Layer) configuré pour la zone par défaut est une condition requise pour les applications web déployées dans les scénarios qui prennent en charge l'authentification serveur à serveur et l'authentification des applications. Il s'agit d'un scénario de ce type. En guise de condition préalable à la configuration des boîtes aux lettres de site, le protocole SSL doit être configuré sur l'ordinateur qui exécute SharePoint Server. Pour plus d'informations, consultez l'article Créer les applications web basée sur les revendications dans SharePoint Server et suivez les étapes de création d'une collection de sites SSL et d'un certificat de serveur.
Notez que vous devrez peut-être importer le certificat SSL Exchange Server d’Exchange Server vers SharePoint Server et de SharePoint Server vers Exchange Server. Cela n’est nécessaire que si le certificat n’est pas approuvé pour les points de terminaison d’API (par exemple, un certificat AUTO-SSL dans un environnement lab). Pour importer un certificat SSL non approuvé vers un nouveau serveur :
Ouvrez Internet Explorer et naviguez jusqu’à Outlook Web App (si le déploiement est sur SharePoint Server) ou jusqu’au site SSL SharePoint (si le déploiement est sur Exchange) : https://<ExServerName>/owa ou https://<SP_FQDN>.
Acceptez d’approuver le certificat en cliquant sur Poursuivre vers le site web.
Cliquez sur les informations Erreur de certificat dans Internet Explorer en regard de la barre d’adresse, puis cliquez sur Afficher les certificats.
Sélectionnez Installer le certificat, puis Placer tous les certificats dans le magasin suivant.
Activez cette case à cocher pour afficher les magasins physiques.
Installez le certificat sur l’ordinateur local des autorités > de certification racines de confiance.
Pour pouvoir appliquer ces procédures, vous devez être membre des groupes d'administrateurs SharePoint et Exchange Server et disposer d'un système Exchange Server opérationnel avec des boîtes aux lettres d'utilisateurs finals.
Une solution de sauvegarde SharePoint n’incorpore pas de boîtes aux lettres de site Exchange. Un administrateur Exchange doit s'assurer que les sauvegardes des boîtes aux lettres du site s'effectuent au moment opportun.
Les utilisateurs qui accèdent aux fichiers d’une bibliothèque de documents SharePoint à partir d’une boîte aux lettres de site doivent avoir la bibliothèque de documents configurée en tant que site approuvé dans leur navigateur, ou un avertissement s’affiche pour demander à l’utilisateur s’il souhaite approuver le fichier.
Configurer SharePoint pour les boîtes aux lettres de site dans
La première étape de configuration des boîtes aux lettres de site consiste à installer l'API Services web Exchange Server sur chaque serveur web et d'applications dans la batterie SharePoint Server.
Installer l'API Services web Exchange sur SharePoint Server
Téléchargez le fichier EWSManagedAPI.msi à partir du centre de téléchargement Microsoft et enregistrez-le dans un dossier sur chaque serveur web et d'applications.
Ouvrez une invite de commandes en tant qu'administrateur et naviguez jusqu'au dossier où vous avez enregistré EWSManagedAPI.msi.
Exécutez la commande suivante :
msiexec /I EwsManagedApi.msi addlocal="ExchangeWebServicesApi_Feature"
Réinitialisez IIS depuis la ligne de commande en tapant IISReset.
Établir une approbation OAuth et des autorisations de service sur SharePoint Server
L'étape suivante consiste à copier les deux scripts suivants. Le premier doit être enregistré sous le nom Set-SiteMailboxConfig.ps1 et le second doit être enregistré sous le nom 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
}
Enregistrez les deux fichiers .ps1 dans le même dossier sur un serveur frontal ou d'applications SharePoint Server, car un script appelle l'autre lors de l'exécution. Dans une fenêtre Microsoft PowerShell (cliquez avec le bouton droit sur l'icône PowerShell et sélectionnez Exécuter en tant qu'administrateur pour ouvrir la fenêtre), accédez au dossier contenant les fichiers .ps1 et exécutez le script Set-SiteMailboxConfig.ps1. Cela permet aux utilisateurs d'effectuer les actions suivantes :
Récupérer et installer les métadonnées Exchange, en donnant au principal du service Exchange les autorisations Contrôle total pour l'abonnement de site SharePoint
Activer la fonctionnalité de boîte aux lettres de site dans l'environnement SharePoint
(Facultatif) Définir le domaine cible de la boîte aux lettres de site Exchange, si le DNS du domaine n’a pas été configuré pour la découverte automatique
Check-SiteMailboxConfig.ps1 est appelé dans le cadre du script Set-SiteMailboxConfig et confirme que la configuration a été effectuée (il peut également être exécuté séparément).
Le format doit être le suivant :
.\Set-SiteMailboxConfig.ps1 -ExchangeSiteMailboxDomain \<Domain\> -ExchangeAutodiscoverDomain [Exchange Server] -WebApplicationUrl [URL]
Où <Domain> correspond au nom de domaine complet de votre serveur Exchange et où <Exchange Server> correspond au serveur Exchange auquel vous avez l'intention de vous connecter. Ces paramètres sont obligatoires.
Les paramètres facultatifs sont [Exchange Server], qui correspond au serveur Exchange auquel vous voulez vous connecter (ce paramètre est nécessaire si la découverte automatique n’est pas activée ou configurée correctement) et [URL], qui correspond à une URL spécifique que vous pouvez configurer (généralement utilisée dans un environnement avec des applications web SSL et non SSL).
Exemple :
.\Set-SiteMailboxConfig.ps1 -ExchangeSiteMailboxDomain tailspintoys.com -ExchangeAutodiscoverDomain exchange1.tailspintoys.com -WebApplicationUrl https://tailspintoys.com
Si vous rencontrez une erreur pendant l’exécution du script, reportez-vous à la section « Résolution des problèmes » de cet article pour obtenir des instructions.
Configurer Exchange Server pour les boîtes aux lettres de site
L’étape finale consiste à établir une approbation OAuth et des autorisations de service sur le serveur Exchange.
Établir une approbation OAuth et une autorisation de service sur Exchange
Sur votre instance Exchange Server, ouvrez la fenêtre Exchange Management PowerShell en tant qu'administrateur et accédez au répertoire « C:\Program Files\Microsoft\Exchange Server\V15\Scripts ».
Exécutez la commande suivante :
.\Configure-EnterprisePartnerApplication.ps1 -ApplicationType Sharepoint -AuthMetadataUrl https://<SP_FQDN>/_layouts/15/metadata/json/1
Où <SP_FQDN> est l'URL de la collection de sites racine SSL SharePoint que vous souhaitez configurer.
Résolution des problèmes
Si vous rencontrez des problèmes, consultez le tableau suivant.
Tableau des codes d'erreur pour référence lorsque vous exécutez un script de liste de vérification de configuration
Code d'erreur | Erreur | Remarques |
---|---|---|
0 |
NoError |
Examinez les éléments prérequis. |
1 |
ExchangeClientNotAvailable |
Le client EWS est introuvable sur le WFE SharePoint. Exécutez le script De vérification et vérifiez que les entrées sont correctement dans le GAC ; vous devrez peut-être réinstaller le client EWS. |
2 |
UnsupportedVersion |
Version du client des services web Exchange incompatible avec SharePoint. Exécutez le script de vérification pour vous assurer que la version répond aux exigences minimales. Sinon, il est possible que le serveur Exchange corresponde à la version 2010 ou une version antérieure. |
3 |
InvalidUser |
Le paramètre TeamMailboxDomain n'est pas un nom de domaine complet ou une adresse SMTP valide. |
4 |
UnauthorizedUser |
Le script a reçu un code 401 de la part du serveur Exchange, examinez les étapes de configuration d'Exchange. |
5 |
ServerBusy |
L’échange a expiré pendant la découverte automatique. Il doit être intermittent. Veuillez réessayer, mais s’il est persistant, effectuez un suivi auprès de l’administrateur Exchange. |
6 |
URLNotAvailable |
La découverte automatique n'a pas pu retourner d'URL pour ECP/OWA, ce qui signifie généralement que la version du client des services web Exchange est incompatible avec SharePoint. Cela peut aussi signifier que les boîtes aux lettres du site ne sont pas activées sur Exchange, ce qui nécessite de contacter l'administrateur Exchange. |
7 |
OAuthNotSupported |
Impossible de générer un jeton OAuth pour SharePoint. Cela est généralement dû à la désactivation de l'authentification basée sur les revendications sur l'application web SharePoint. |
8 |
OAuthException |
Une erreur s’est produite durant l’établissement d’une liaison OAuth entre SharePoint et Exchange. Cela est généralement dû à des problèmes de configuration des relations de serveur à serveur, par exemple une incompatibilité de valeur de domaine, des problèmes de certificat pour Exchange ou SharePoint, etc. Examinez les certificats et tentez d’établir ou de rétablir l’approbation. |
9 |
InvalidAutodiscoverDomain |
La propriété de domaine pour la découverte automatique n'a pas un nom de domaine complet valide. |
10 |
UnknownError |
Une condition d’erreur inconnue s’est produite. Exécutez le script Vérifier et vérifiez qu’une instance valide et approuvée de SharePoint est disponible, passez en revue les prérequis, vérifiez que la découverte automatique a été configurée correctement avec l’administrateur Exchange. |
101 |
OAuthNotSupportedOverHttp |
Si cette erreur est retournée, cela signifie que la zone par défaut de votre application web n'est pas configurée pour SSL et que AllowOauthoverHttp a la valeur false. Exécutez le script de vérification pour vous assurer que les applications web pour lesquelles vous avez l'intention d'héberger des boîtes aux lettres du site sont définies avec SSL dans la zone par défaut, conformément à ce qui est indiqué dans les éléments prérequis. |
102 |
AssociatedOwnersGroupNull |
Les groupes par défaut Propriétaires et/ou Membres du site ont été supprimés. Ces deux groupes par défaut doivent exister sur tout site où les utilisateurs installent des boîtes aux lettres de site. Un administrateur de site doit être en mesure d’indiquer à un propriétaire de site de recréer ces groupes requis. |
103 |
ExchangeTeamMailboxDomainNotSet |
La propriété ExchangeTeamMailboxDomain n'a pas été définie. |
104 |
ExchangeAppPrincipalNotFound |
Aucun principal d'application Exchange approuvé n'a été trouvé. En règle générale, cela signifie que l'étape SPTrustedSecureTokenService a été omise. Exécutez le script de vérification et assurez-vous que la ou les URL de principal d'application émises sont correctes. |
105 |
ExchangeAppPrincipalMissingPermissions |
Le principal d'application Exchange connecté ne dispose pas des autorisations appropriées pour la batterie de serveurs SharePoint. Exécutez le script de vérification et assurez-vous que le principal d'application Exchange dispose des autorisations nécessaires pour la batterie de serveurs. |
Voir aussi
Concepts
Plan email integration for a SharePoint Server farm
Configure email integration for a SharePoint Server farm