====== Diagnostiquer les problèmes Exchange ======
Ce guide permet de diagnostiquer les problèmes avec Microsoft Exchange. Si rien n'est précisé, les toutes les commandes proposées ont à utiliser dans un invité de commande Echange (Exchange Management Shell).
Dans un premier temps, un tour rapide sur la commande de diagnostique Microsoft s'impose :
Get-ExchangeServer | Get-HealthReport | Where-Object {$_.AlertValue -eq "UnHealthy"}
Pour avoir les details des tests d'un set, utilisez la commande suivante :
Get-ServerHealth -HealthSet $HealthSet -Server $YourServer | Format-Table Name, AlertValue -Auto
===== Collecte des logs =====
Pour collecter les logs, nous recommandons d'utiliser le script [[https://github.com/dpaulson45/ExchangeLogCollector|ExchangeLogCollector]]. L'article du blog Microsoft [[https://techcommunity.microsoft.com/t5/exchange-team-blog/exchange-log-collector-script/ba-p/607638|Exchagne log collector script]] explique comment correctement l'utiliser.
Les logs particulièrement intéressants se trouvent dans les dossiers ci-dessous :
* C:\Program Files\Microsoft\Exchange Server\V15\Logging\HttpProxy\RpcHttp
* C:\Program Files\Microsoft\Exchange Server\V15\Logging\HttpProxy\Mapi
* C:\Program Files\Microsoft\Exchange Server\V15\Logging\HttpProxy\AutoDiscover
* C:\Windows\System32\LogFiles\HTTPERR
* C:\Program Files\Microsoft\Exchange Server\V16\Logging\Diagnostics\DailyPerformanceLogs
Le logiciel [[https://techcommunity.microsoft.com/t5/exchange-team-blog/introducing-log-parser-studio/ba-p/601131|Log Parser Studio]] peut aussi permettre de rechercher plus facilement les problème dans les logs.
===== Test de connectivité =====
Pour la connectivité, il faut dans un premier temps comprendre le fonctionnement d'Exchange et quel protocole est utilisé par le client pour orienter les recherches.
^ Client ^ Autodiscover ^ Outlook Anyware((RPC over HTTP)) ^ MAPI over HTTP ^ ActiveSync ^ POP / IMAP ^
| Outlook (iOS et Android) | Non | Non | Non | Oui | Non |
| GMail (Android) | Non | Non | Non | Oui | Non |
| Samsung Mail | Non | Non | Non | Oui | Non |
| Outlook PC 2007 et 2010 | Oui | Oui | Non | Non | Non |
| Outlook 2011 (Mac) | Oui | Oui | Non | Non | Non |
| Outlook 2013 et 2016 | Oui | Oui | Oui | Non | Non |
| Outlook 2019 | Oui | Non | Oui | Non | Non |
| Autre | Non | Non | Non | Non | Oui |
Une fois le protocole identifié, il convient de noter aussi les différents protocoles d'authentification mis en place. Voici la liste des protocoles disponibles sur Exchange :
* Basic
* NTLM
* Negociate
* oAuth
==== Test en ligne ====
Première étape, faire un test en ligne avec les outils de Microsoft sur le site suivant :
[[https://testconnectivity.microsoft.com/]]
Cliquez sur ''Exchange Server'' pour les tests vers un serveur Exchange On Premise (hébergé par vos soins). Les tests proposés sont les suivants :
* ''Exchange ActiveSync'' pour les problèmes de connexion des périphériques mobiles (tablettes / smartphones).
* ''Connectivité Outlook'' pour tester les protocoles utilisés par Outlook, notamment MAPI over HTTP, Outlook Anywhere et Autodiscover.
* ''Synchronisation, notification, disponibilité et réponses automatiques'' test les API Exchange, notamment utilisé pour paramétrer le compte.
Les autres tests proposés ne sont pas directement utiles dans le diagnostique Outlook.
Vous pouvez aussi faire régulièrement des test d'envoi et réception de mail pour s'assurer du bon cheminement des emails.
==== Journal Outlook ====
Pour avoir des journaux sur le fonctionnement Outlook, il faut utiliser [[https://aka.ms/SaRA-Download_ExRCA|l'assistant SARA]] proposé par Microsoft. Une fois lancé, choisir "Diagnostics avancés". Les autres options de l'outil concerne les comptes Office 365.
==== Tests de connectivité via PowerShell ====
Microsoft fourni un outil en PowerShell pour tester la connectivité d'une boite. La commande est sous la forme suivante :
Test-OutlookConnectivity -ProbeIdentity $ProbeTest -MailboxID $mailbox
Le $ProbeTest correspond au test à effectuer. Il peut s'agir d'un des tests suivants pour ce qui est RPC over HTTP (Outlook Anywhere) :
* ''Outlook.Protocol\OutlookRpcSelfTestProbe'' : vérifie seulement si le port écoute.
* ''Outlook.Protocol\OutlookRpcDeepTestProbe'' : test de se connecter à la première mailbox database.
* ''Outlook.Protocol\OutlookRpcDeepTestProbe\MaiboxDatabaseName'' : test de se connecter à la mailbox database ''MailboxDatabaseName''
Pour ce qui concerne MAPI over HTTP, il suffit de remplacer ''Rpc'' par ''MapiHttp'' et ''Outlook.Protocol'' par ''OutlookMapiHttp.Protocol'', ce qui donne respectivement :
* ''OutlookMapiHttp.Protocol\OutlookMapiHttpSelfTestProbe'' : vérifie seulement si le port écoute.
* ''OutlookMapiHttp.Protocol\OutlookMapiHttpDeepTestProbe'' : test de se connecter à la première mailbox database.
* ''OutlookMapiHttp.Protocol\OutlookMapiHttpDeepTestProbe\MaiboxDatabaseName'' : test de se connecter à la mailbox database ''MailboxDatabaseName''
Le ProbeTest est case sentivite. Faites bien attention aux majuscules, notamment sur le nom de la MailboxDatabase.
===== Test sur le serveur =====
Si l'erreur n'est toujours pas identifier, alors il vaut mieux reprendre tout depuis le début.
- [[https://technet.microsoft.com/en-us/office/dn756393.aspx|l'assistant de déploiement Exchange]]
- [[https://ashdrewness.wordpress.com/2014/09/10/troubleshooting-issues-with-client-access-servers/|Diagnostique CAS]]
- [[https://www.tech-kb.com/checklist-for-troubleshooting-outlook-connectivity-in-exchange-2013-and-2016-on-premises|Checklist outlook connectivity]]
- [[https://techcommunity.microsoft.com/t5/exchange-team-blog/checklist-for-troubleshooting-performance-related-issues-in/ba-p/604792|Checklist pour les performances Exchange]]
- [[https://techcommunity.microsoft.com/t5/exchange-team-blog/client-connectivity-in-an-exchange-2016-coexistence-environment/ba-p/604284|Coexistance entre plusieurs Exchange]]
- [[http://o365info.com/outlook-autodiscover-decision-process-choosing-the-right-autodiscover-method-part-14-of-36/|Fonctionnement et configuration de l'Autodiscover]]
- [[https://blogs.technet.microsoft.com/rmilne/2015/04/29/office-365-autodiscover-lookup-process/|Processus d'autodiscover sur Office 365]]
- [[http://enterpriseit.co/microsoft-exchange/outlook-autodiscover-order/|Résumé de l'ordre de décision d'Autodiscover]]
- [[https://technet.microsoft.com/en-us/library/bb310762%28v=exchg.141%29.aspx|Avoir plusieurs certificat sur Outlook Anywhere]]
- [[https://support.microsoft.com/en-us/kb/2990117|Mot de passe demandé en continu sur Exchange 2013 et 2016]]
- [[https://techcommunity.microsoft.com/t5/exchange-team-blog/exchange-2013-client-access-server-role/ba-p/596493|Role d'accès client sur Exchange 2013]]
- [[http://o365info.com/exchange-cas-server-proxy-versus-redirection/|Exchange CAS, proxy ou redirection]]
- [[https://support.office.com/en-us/article/Client-connectivity-4232abcf-4ae5-43aa-bfa1-9a078a99c78b|Connectivité client sur Exchange]]
- [[https://www.experts-exchange.com/articles/17339/Understanding-and-Setting-Up-AutoDiscover-for-Exchange-2010-2013.html|Comprendre et configurer l'autodiscover]]
- [[https://vanhybrid.com/2012/10/09/exchange-2013-interoperability-with-legacy-exchange-versions/|Interopérabilité exchange 2013 avec les versions obsolètes]]