Journaux de suivi des messages dans Exchange Server

  • Utilisations possibles des journaux de suivi des messages
  • Emplacement et structure des journaux de suivi des messages
  • Configurer le suivi des messages
  • Qu’est-ce qui se trouve dans les journaux de suivi des messages
  • Utilisation de la cmdlet Get-.MessageTrackingLog cmdlet

Les journaux de suivi des messages sont une source d’information précieuse pour tout administrateur Exchange. Alors qu’Office 365 a son suivi des messages, qui fonctionne très bien, Exchange sur site stocke beaucoup plus de données dans les journaux, qui peuvent servir à plusieurs fins.

Les journaux de suivi des messages Exchange

Utilisations possibles des journaux de suivi des messages

Les bons vieux journaux de suivi des messages peuvent servir à de nombreuses fins différentes :

  • Résoudre les problèmes de livraison – Si vous savez ce que vous cherchez, les journaux de suivi des messages peuvent vous dire pourquoi un message n’a pas été livré, si sa livraison a été retardée et plus encore (voir ce que contiennent les journaux de suivi des messages)
  • Statistiques – Les journaux de suivi des messages conservent les traces de chaque message qui est passé par vos serveurs. Il y a un moyen assez facile d’obtenir certaines données pour l’analyse – combien de messages ont été traités, ou qui a envoyé le plus de messages dans l’entreprise.
  • Forensics – Disons que quelqu’un supprime un e-mail et que vous n’aviez pas de sauvegarde des e-mails. Pire encore, l’email contenait des informations confidentielles et a été envoyé à votre entreprise concurrente. C’est là que les journaux de suivi des messages peuvent vous sauver en fournissant des informations précieuses sur les emails.
  • Litiges – Similaire à la situation ci-dessus. Les journaux de suivi des messages peuvent et sont souvent utilisés lorsque des preuves sont requises à des fins de litige.
  • Tester les règles de transport – Particulièrement utile lorsque vous avez configuré plusieurs règles de transport dans votre organisation. Chaque fois qu’une règle de transport est appliquée, elle laisse une trace, et vous pouvez utiliser le Get-MessageTrackingLog pour voir quand une règle de transport ou une politique DLP a été déclenchée.

L’emplacement et la structure des journaux de suivi des messages

Que sont les journaux de suivi des messages ? Les journaux de suivi des messages sont de simples fichiers CSV (avec une extension LOG) stockés sur votre serveur Exchange. Le chemin par défaut vers leur emplacement physique est %ExchangeInstallPath%TransportRoles\Logs\MessageTracking. Les journaux ont une convention d’appellation définie. Sachez que, bien que vous puissiez modifier les noms de fichiers dans les journaux, cela vous empêchera de les rechercher à l’aide de la cmdlet Get-MessageTrackingLog. De plus, les fichiers dont le nom a été modifié ne seront pas pris en compte dans la limite de taille des dossiers. Cela peut conduire à dépasser les limites que vous avez configurées.

Pour gérer l’espace et la quantité de données stockées sur les serveurs, Exchange emploie la journalisation circulaire. En d’autres termes, les fichiers les plus anciens sont écrasés chaque fois qu’un dossier dépasse sa taille maximale, ou qu’un fichier journal atteint son âge maximal. Si vous vous en tenez aux paramètres par défaut, l’âge maximal d’un fichier journal est de 30 jours, et la taille maximale d’un seul fichier est de 10 Mo. Par défaut, tous les journaux de suivi des messages dans le répertoire par défaut ne peuvent pas dépasser 1 Go. Vous pouvez modifier toutes ces limites à l’aide de PowerShell (Voir configurer le suivi des messages pour plus de détails)

Chaque jour, un nouveau fichier journal de suivi des messages est créé. La convention de nommage est :

MSGTRKServiceyyyymmdd-nnnn.log où :

  • Le service dépend du service qui a créé un journal. MSGTRK pointe vers les journaux créés par le service Transport ; les lettres supplémentaires précisent quels autres services ont généré le journal. MA signifie l’approbation des messages, MD le service de livraison de transport de boîtes aux lettres, MS le service de soumission de transport de boîtes aux lettres.
  • yyyymmdd spécifie la date à laquelle le journal des messages a été créé.
  • nnnn est le numéro du fichier journal. Chaque fois qu’un fichier journal atteint sa limite de taille maximale, une copie suivante sera créée. La valeur est incrémentale, et chaque jour, elle commence à partir de (assez logiquement) 1.

J’ai mentionné quelques valeurs par défaut. Comme vous pouvez le soupçonner, ces valeurs peuvent être facilement modifiées.

Configurer le suivi des messages

Avant de commencer à modifier les valeurs par défaut des journaux de suivi des messages, assurez-vous de savoir ce que vous faites. Les journaux de suivi des messages peuvent devenir assez encombrants, en termes de taille. De plus, si vous décidez de collecter des données pendant une période indéfinie, chaque recherche à grande échelle dans les journaux de suivi des messages prendra un temps considérable. Surtout si vous ne limitez pas vos critères de recherche. Si vous prévoyez de collecter des informations sur votre flux de courrier pendant une période indéfinie, pensez à exporter le contenu des journaux de suivi des messages vers des fichiers. Vous pouvez alors stocker des données sur tous les courriels, à l’exclusion de ceux qui pointent vers, par exemple, des boîtes aux lettres de santé.

Vous pouvez configurer les journaux de suivi des messages à l’aide du cmdlet Set-TransportService. Grâce à cette cmdlet, vous pouvez :

  • Activer ou désactiver le suivi des messages,
  • Changer l’emplacement de stockage des journaux de suivi des messages,
  • Modifier les limites de taille et d’âge des journaux de suivi des messages
  • Et activer ou désactiver la journalisation des sujets. Un mot d’explication : par défaut, les journaux de suivi des messages ne stockent aucun contenu des emails, à l’exception de la ligne d’objet. Bien que la présence de la ligne d’objet dans les journaux améliore grandement l’expérience de suivi, certaines organisations exigent la désactivation de cette fonctionnalité pour des raisons de sécurité ou de confidentialité.

Voici un exemple qui modifie tous les paramètres en une seule fois:

Set-TransportService Mailbox_Server -MessageTrackingLogEnabled $true -MessageTrackingLogPath "M:\logs" -MessageTrackingLogMaxFileSize 30MB -MessageTrackingLogMaxDirectorySize 2.5GB -MessageTrackingLogMaxAge 365.00:00:00

Le cmdlet ci-dessus active le suivi des messages pour Mailbox_Server et définit le stockage des journaux à M:\logs. La limite de taille pour un seul fichier journal est modifiée à 30 Mo. Il s’agit principalement d’un changement cosmétique, qui contrôle le nombre de fichiers journaux – plus la limite est élevée, moins de csv sont créés chaque jour. La taille maximale du répertoire (avant que les fichiers les plus anciens ne soient écrasés) est fixée à 2,5 Go, et les fichiers journaux sont conservés pendant 365 jours. En définissant l’option -MessageTrackingLogMaxAge à 00:00:00, vous pourrez conserver les journaux de suivi des messages pendant une période indéfinie. Ou du moins avant que la taille du répertoire ne soit atteinte. Mais qui a besoin d’économiser de l’espace dans Exchange, n’est-ce pas ?

Ce que contiennent les journaux de suivi des messages

Il y a quelques choses que vous devez savoir sur la façon dont les journaux de suivi des messages stockent leurs entrées.

  1. Chaque message génère généralement plus d’une seule entrée dans le journal de suivi des messages.
  2. Les en-têtes dans les journaux ne sont pas les mêmes que leurs attributs PowerShell correspondants. Par exemple, Event-id dans les fichiers journaux est EventId dans PowerShell. Recipient-address dans les journaux est égal à recipients dans PowerShell. Lorsque vous avez un doute sur la façon de rechercher à l’aide d’un attribut particulier, utilisez Get-MessageTrackingLog –ResultSize 1 | FL * or Get-MessageTrackingLog | Get-Member. Ces cmdlets vous donneront une liste complète des attributs.
  3. Certains champs sont souvent vides dans les journaux de suivi des messages. Certains pourraient ne pas inclure des informations que vous pourriez trouver importantes ou pertinentes.

Les champs les plus importants dans les journaux de suivi des messages

  • Sender, Recipient, MessageSubject – assez explicite, montre qui a envoyé un message à qui et quel était le sujet
  • TotalBytes – montre la taille d’un message
  • Timestamp – donne des infos sur le moment où l’événement a eu lieu
  • EventID – l’un des champs les plus importants dans les journaux de suivi des messages. C’est la principale source d’information sur ce qui est arrivé au message. Les valeurs les plus courantes sont Receive, Send, Submit et Fail (Cette documentation Microsoft décrit tous les types d’événements de message.)
  • MessageInfo et RecipientStatus donnent les informations détaillées sur ce qui est arrivé au message.
  • MessageLatency vous montre combien de temps le serveur a eu besoin pour traiter le courriel.

La partie la plus importante est de savoir comment utiliser PowerShell pour obtenir les bonnes données à partir des journaux.

Utilisation de la cmdlet Get-MessageTrackingLog

Get-MessageTrackingLog vous permet de rechercher dans tous les journaux de suivi des messages. Si vous utilisez la cmdlet sans aucun attribut supplémentaire, elle retournera jusqu’à 1000 entrées, dont la plupart seront probablement liées à l’activité Health Mailboxes. Si vous souhaitez inclure plus de 1000 entrées avec une seule cmdlet Get-MessageTrackingLog, ajoutez l’attribut -ResultSize unlimited. Cependant, je suis certain que vous ne prévoyez pas d’utiliser la cmdlet pour surveiller l’activité des boîtes aux lettres de santé. Le bon filtrage est la clé du succès. Ci-dessous, je présente quelques techniques que vous pouvez utiliser pour filtrer les résultats.

Comment obtenir des informations générales sur le flux de courrier dans Exchange Server

Si votre objectif est d’obtenir une idée très générale du flux de courrier récent dans votre organisation, utilisez la syntaxe décrite ci-dessous :

Get-MessageTrackingLog -Start (Get-Date).AddDays(-14) -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*" | ConvertTo-Html > "C:\mtl.html"

La cmdlet ci-dessus parcourt les 14 derniers jours des journaux de suivi des messages. Vous vous demandez peut-être pourquoi utiliser la partie Where-Object -Property Recipients -NotLike « HealthMailbox* ». Ce filtre supprime toutes les entrées dédiées aux boîtes aux lettres de santé. Si vous êtes curieux, vous pouvez comparer les résultats avec et sans le filtre Where-Object. Enfin, la dernière cmdlet du pipeline exporte les résultats vers le fichier mtl.html. Vous pouvez également exporter les résultats vers un fichier CSV, en utilisant la cmdlet ConvertTo-Csv.

Le problème est que, lorsque vous convertissez les résultats vers un fichier HTML ou CSV, les champs contenant des informations sur les destinataires ne s’affichent pas correctement. Au lieu des bonnes valeurs, les champs contiendront des expressions System.String. Pour remédier à ce problème, vous devrez peut-être canaliser les résultats vers une autre cmdlet Select-Object. Pendant que vous y êtes, pourquoi ne pas limiter la sortie pour qu’elle ne contienne que les champs les plus importants ?

Get-MessageTrackingLog -Start (Get-Date).AddDays(-7) -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*" | Select-Object sender,@{Name="Recipients";Expression={$_.recipients}},@{Name="RecipientStatus";Expression={$_.recipientstatus}},messagesubject,totalbytes,eventid,messageinfo,messagelatency | ConvertTo-Html > "C:\mtlx.html"

Si vous voulez enregistrer toutes les livraisons échouées et les enregistrer dans un fichier, utilisez le cmdlet ci-dessous.

Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize Unlimited –EventId Fail | Where -Property Recipients -NotLike "HealthMailbox*" >> "C:\failed deliveries.csv"

La meilleure partie est que le signe >> ajoute de nouvelles valeurs au fichier failed.deliveries.csv, de sorte que vous pouvez exécuter le cmdlet périodiquement pour enregistrer tous les événements d’échec.

Comment recueillir des statistiques en utilisant Get-MessageTracking Log

Si vous voulez effectuer des opérations plus compliquées sur vos opérations de journal de suivi des messages, enregistrez-les dans une variable.

$mtl Get-MessageTrackingLog -Start (Get-Date).AddDays(-2) –eventId Send -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*"

Le cmdlet ci-dessus stocke des informations sur tous les messages envoyés au cours des deux derniers jours. Pour mesurer le nombre d’emails envoyés par vos utilisateurs en général, il suffit de taper :

$mtl | measure

count sent items in message tracking logs

Pour des informations plus détaillées, vous pouvez utiliser quelques cmdlets supplémentaires pour regrouper, trier et afficher les résultats. Par exemple, vous pouvez afficher le nombre d’emails pour des utilisateurs spécifiques, triés par ordre décroissant:

$mtl | group-object -property sender | Select-Object name,count | Sort-Object count -desc

tri des résultats dans les journaux de suivi des messages

L’utilisation du trio Group-Object, Select-Object et Sort-Object, avec la cmdlet Get-MessageTrackingLog vous permet d’obtenir facilement toutes les statistiques de flux de courrier que vous voulez.

Comment tracer des messages spécifiques en utilisant Get-MessageTrackingLog

Enfin, si vous voulez vérifier ce qui est arrivé à un message non distribué particulier, vous pouvez rapidement montrer toutes les informations les plus importantes en pompant votre recherche vers un cmdlet Format-List :

… | FL –Property Sender, Recipients, MessageSubject, RecipientStatus

detailed results info - forensics in message tracking logs

Dans l’exemple ci-dessus, vous pouvez facilement voir que le message n’a pas été remis à cause d’une règle de transport. Ici, il s’est avéré qu’à un moment donné, quelqu’un a lancé une règle de flux de courrier qui bloque tous les messages qui ont une pièce jointe et le mot clé Kitten dans le sujet.

Supposons que des données classifiées ont fuité de l’entreprise. Les journaux de suivi des messages peuvent vous aider à repérer les utilisateurs qui ont envoyé des courriels en dehors de votre entreprise, par exemple à une entreprise concurrente particulière.

Get-MessageTrackingLog –ResultSize Unlimited | Where -Property Recipients -Like "*@competitive-company.com"

La recherche vous permet de trouver les suspects. Bien sûr, vous pouvez avoir besoin d’élargir ou de resserrer les critères de recherche, mais cela dépend de la quantité de données dont vous disposez. Ce que vous faites avec les résultats n’est pas une discussion pour le blog de l’administrateur.

Lecture complémentaire:

  • Le suivi des messages dans Office 365 (Exchange Online)
  • Exchange 2019, 2016, 2013, 2010 sauvegarde des boîtes aux lettres par exportation vers PST (PowerShell)

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.