Exchange pour de vrai

De Justine's wiki
Aller à la navigation Aller à la recherche

https://sourcedaddy.com/windows-7/troubleshooting-exchange-server.html

Introduction

Cette page est destinée à contenir de vraies informations pratiques concernant les serveurs Exchange et comment les administrer, notamment en PowerShell.

Microsoft Exchange Server est un groupware (logiciel de groupe de travail) pour serveur de messagerie électronique créé par Microsoft. Il existe aussi en SaaS avec Office365.

Console ECP

La console ecp est accessible via https://<adresse>/ecp.

Elle permet de gérer la messagerie depuis une GUI.

Calendriers

Les calendriers (collectifs) sont liés à une adresse de type *utilisateur* (et non pas ressource, ce serait si logique). Un calendrier donne une adresse, à laquelle les gens sont sensés pouvoir accéder par OWA > ouvrir une autre boîte mail.

Ci-dessous, une commande pour donner des droits sur ce genre de calendrier à quelqu'un (testé mais pas validé...):

<syntaxhighlight lang="pshell"> PS Z:\> Add-MailboxFolderPermission -Identity "calendrier" -User "autre.user" -AccessRights "Contributor" FolderName User AccessRights


---- ------------

Haut de la banque... Anaise Leroy {Contributor}


PS Z:\> Get-MailboxFolderPermission -identity orientation-calendrier | fl </syntaxhighlight>


Commandes PowerShell

Boîtes partagées

<syntaxhighlight lang="pshell">

  1. Membres d'une BP

Get-Mailbox formation-continue-iae | Get-MailboxPermission | select identity,user,accessrights

</syntaxhighlight>

Autres

Sources:

Use the following commands to add or remove an email alias using Powershell commands:

To check current exchange mailbox aliases:

'''Get-Mailbox mailboxname | select -expand emailaddresses alias'''

To add an email alias to an exchange mailbox:

'''Set-Mailbox mailboxname -EmailAddresses @{Add='alias@somedomain.co.uk'}'''

To delete an email alias from an exchange mailbox:

Set-Mailbox mailboxname -EmailAddresses @{Remove=’alias@somedomain.co.uk’}

Re-lier une boîte dans une configuration avec une boîte liée

Dans un contexte avec plusieurs domaines AD, il se peut que les boîtes d'un domaine soient liées au comptes sur un autre domaine. Chaque boite est liée grâce au SID, un identifiant unique qui désigne le compte sur le domaine AD lié. Nous avons donc :

  • Un domaine 1 avec un AD.
  • Un autre domaine 2, avec des boîtes et avec son propre AD; mais pour une raison X les boites du domaine 2 sont liées au domaine 1.

Parfois, certaines boîtes peuvent se retrouver liées au mauvais SID. Voilà comment faire :

<syntaxhighlight lang="Powershell"> Get-Mailbox xxx@yyy | fl #On récupère les infos Disable-Mailbox xxx@yyy #On désactive la boîte d'une façon ou d'une autre Connect-Mailbox -LinkedDomainController "adc.domaine1" -LinkedMasterAccount "domaine1\madametruc" -Alias "truc" -Identity "Josiane Truc" -Database BASE-DB1 </syntaxhighlight>

Troubleshooting

MessageTrackingLog

Similaire à un maillog Linux, mais en moins pratique.

<syntaxhighlight lang="powershell"> Get-MessageTrackingLog -Recipients justine@domaine.fr Get-MessageTrackingLog -ResultSize Unlimited | Where-Object {$_.Recipients -like "*sarah.connor*"} Get-MessageTrackingLog -Start "09/30/2019 08:00:00" -End "09/30/2019 20:00:00" -Sender "luke.skywalker@rebellion.org" </syntaxhighlight>

On dispose bien entendu des autres logs Windows (voir Analyse de logs), mais ils ne sont pas pratiques non plus.

Commandes de test

PowerShell contient de nombreux cmdlets de test, et il serait bête de ne pas s'en servir !

On peut les voir toutes avec :

<syntaxhighlight lang='powershell'>

  1. Vérification du statuts des migrations en cours :
               Get-MoveRequest | where status -eq "InProgress" | Get-MoveRequestStatistics
  1. Vérification des users sur une database particulière :
               Get-Mailbox -database <db_name>
  1. Récupération des noms de databases :
               Get-MailboxDatabase
  1. Récupération des données Mailbox pour un utilisateur :
               Get-Mailbox <user>
  1. Récupération des données statistiques d’une mailbox :
               Get-mailbox <user> | get-mailboxstatistics
  1. Pour obtenir le maximum d’info, rajouter en fin de ligne : | fl

</syntaxhighlight>


Commandes de suivi des migrations

<syntaxhighlight lang="powershell">

  1. Vérification du statuts des migrations en cours :
Get-MoveRequest | where status -eq "InProgress" | Get-MoveRequestStatistics
  1. Vérification des users sur une database particulière :

Get-Mailbox -database <db_name>

  1. Récupération des noms de databases :

Get-MailboxDatabase

  1. Récupération des données Mailbox pour un utilisateur :

Get-Mailbox <user>

  1. Récupération des données statistiques d’une mailbox :

Get-mailbox <user> | get-mailboxstatistics

  1. Pour obtenir le maximum d’info, rajouter en fin de ligne : | fl

</syntaxhighlight>

Convertir une boite partagée en boite normale

Ici, je part de la boîte partagée "morpheus".

<source lang="powershell"> set-mailbox -id morpheus -type regular

  1. Une fois cela fait, il faut modifier l'utilisateur AD "morpheus" pour lui donner un mot de passe

</source>

Rôles d'une infra Exchange

MBX (Mailbox)

  • Héberge boîtes aux lettres / dossiers publics
  • Génération OAB / haute disponibilité CCR, SCC, LCR et SCR ou DAG
  • Ne fait pas le transport de messages (l’envoi / réception d'email échue si pas de serveur transport HUB)
  • Serveur membre du domaine

HUB

  • Catégorisation (résolution des destinataires) / conversion format de mails / routage des messages / règles de transport/ journalisation / taille maximum message envoyé et/ou reçu
  • Anti-spam (désactivé par défaut)
  • Serveur membre du domaine

CAS (Client Access Server)

  • Accès boîtes aux lettres via protocole NON MAPI (EAS, OWA, etc)
  • Les services WEB (Auto-Discover) / Distribution OAB
  • Serveur membre du domaine
  • En Exchange 2010, les clients Outlook se connectent sur le serveur CAS pas sur le serveur MAILBOX

EDGE

  • Joue le rôle de relais SMTP
  • Remise des messages Internet
  • Antispam
  • Analyse antivirus (nécessite une solution tierce)
  • Serveur NON membre du domaine et dans la DMZ

UM (Unified Messaging)

  • Réponse aux appels
  • Réception de télécopie
  • Accès à ses mails à distance via Outlook Voice Access (consulter ses messages et son calendrier via module vocal, accepter ou annuler des demandes de rendez-vous)
  • Machine membre du domaine
  • Non supporté en machine virtuelle
  • Nécessite IP-BPX / passerelle VoIP

Shadow redundancy (en lien avec les mentions HADISCARD du trackinglog)

https://pmeijden.wordpress.com/2011/06/01/shadow-redundancy-explained/

How it works

The HUB01 will deliver a message that is intended for a user outside the organization to the EDGE01 server. HUB01 detects that the EDGE01 supports shadow redundancy. HUB01 will move the message to the shadow redundancy queue and marks it with EDGE01 as the primary owner. When opening the Queue Viewer you’ll notice that there is one email in the Shadow Redundancy Queue.

clip_image002

Success

When EDGE01 delivers the message to the internet it updates the discard status of the message indicating that the delivery was successful. HUB01 will check the status of all sent messages (default every 15 minutes) by issuing a XQDISCARD command to EDGE01. EDGE01 will check the discard status and responds with a list of all the messages that are considered to be successfully delivered. HUB01 will delete the messages from the Shadow Redundancy Queue if they are on that list.

image

Failure (EDGE01 Outage)

If HUB01 can’t contact the EDGE01 within the time-out period after it has sent the message, the HUB01 resubmits the message to the EDGE02. The message in the Shadow Redundancy Queue now has the EDGE02 as the primary owner. If there is not alternative route the message won’t be resubmitted and remains in the shadow queue until the Auto Discard Interval is up.

image

Temporary Failure

So what happens if the EDGE01 is temporary offline? For example the EDGE01 is down for let’s say 15 minutes when our time-out is 10 minutes and the retry is 0. This means that the message is resubmitted to the EDGE02 because the HUB01 isn’t sure that the message is delivered properly. In this case it’s possible that the message is already delivered and that the EDGE02 is delivering the same message ‘again’. Exchange mailbox users won’t see duplicate messages in their mailbox because Exchange has duplicate message detection. However recipients on other email systems may have a duplicate message if it doesn’t support duplicate message detection. For more information about duplicate message detection checkout this blog.