Loggar för spårning av meddelanden i Exchange Server

  • Möjliga användningsområden för loggar för spårning av meddelanden
  • Placering och struktur för loggar för spårning av meddelanden
  • Konfigurera spårning av meddelanden
  • Vad som finns i loggarna för spårning av meddelanden
  • Användning av Get-MessageTrackingLog cmdlet

Meddelsspårningsloggar är en värdefull informationskälla för alla Exchange-administratörer. Medan Office 365 har sin meddelandespårning, som fungerar alldeles utmärkt, lagrar Exchange på plats mycket mer data i loggarna, som kan tjäna många syften.

Message Tracking logs Exchange

Möjliga användningsområden för loggar för spårning av meddelanden

Goda gamla loggar för spårning av meddelanden kan tjäna många olika syften:

  • Lösning av leveransproblem – Om du vet vad du letar efter kan loggar för spårning av meddelanden berätta varför ett meddelande inte levererades, om leveransen fördröjdes med mera (se vad som finns i loggar för spårning av meddelanden)
  • Statistik – Loggar för spårning av meddelanden sparar spår av varje enskilt meddelande som gick genom dina servrar. Det är ett ganska enkelt sätt att få fram viss data för analys – hur många meddelanden som behandlades eller vem som skickade flest meddelanden i företaget.
  • Forensics – Säg att någon raderar ett e-postmeddelande och att du inte hade någon e-postbackup. Vad värre är, e-postmeddelandet innehöll konfidentiell information och skickades till ditt konkurrerande företag. Det är här som loggar för spårning av meddelanden kan rädda dig genom att tillhandahålla värdefull information om e-postmeddelanden.
  • Tvistemål – Liknar situationen ovan. Loggar för spårning av meddelanden kan och används ofta när bevis krävs för rättstvister.
  • Testning av transportregler – Särskilt användbart när du har konfigurerat flera transportregler i din organisation. När en transportregel tillämpas lämnar den ett spår, och du kan använda Get-MessageTrackingLog för att se när en transportregel eller en DLP-policy utlöstes.

Message tracking logs location and structure

Vad är message tracking logs? Loggar för spårning av meddelanden är enkla CSV-filer (med ett LOG-tillägg) som lagras på din Exchange-server. Standardvägen till deras fysiska plats är %ExchangeInstallPath%TransportRoles\Logs\MessageTracking. Loggarna har en bestämd namnkonvention. Tänk på att även om du kan ändra filnamnen i loggarna så hindrar det dig från att söka i dem med hjälp av cmdlet Get-MessageTrackingLog. Dessutom kommer filer med ändrade namn inte att räknas in i gränsen för mappstorlek. Detta kan leda till att du överskrider de gränser du har konfigurerat.

För att hantera utrymme och mängden data som lagras på servrar använder Exchange cirkulär loggning. Med andra ord skrivs de äldsta filerna över när en mapp överskrider sin maximala storlek eller när en loggfil når sin maximala ålder. Om du håller dig till standardinställningarna är den maximala åldern för en loggfil 30 dagar och den maximala storleken för en enskild fil är 10 MB. Som standard kan alla loggar för spårning av meddelanden i standardkatalogen inte överstiga 1 GB. Du kan ändra alla dessa gränser med hjälp av PowerShell (se Konfigurera meddelandespårning för detaljer)

Varje dag skapas en ny loggfil för meddelandespårning. Namnkonventionen är:

MSGTRKServiceyyyymmdd-nnnn.log där:

  • Tjänsten beror på vilken tjänst som skapade en logg. MSGTRK pekar på loggar som skapats av transporttjänsten; ytterligare bokstäver anger vilka andra tjänster som genererat loggen. MA står för Message Approval, MD för tjänsten Mailbox Transport Delivery, MS för tjänsten Mailbox Transport Submission.
  • yyyymmdd anger det datum då loggen för meddelanden skapades.
  • nnnn är numret för loggfilen. När en loggfil når sin maximala storleksgräns skapas en ny kopia. Värdet är inkrementellt och varje dag börjar det från (helt logiskt) 1.

Jag har nämnt några standardvärden. Som du kanske misstänker kan dessa värden enkelt ändras.

Konfigurera meddelandeuppföljning

För att börja ändra standardvärdena för loggar för meddelandeuppföljning ska du se till att du vet vad du gör. Loggar för meddelandeuppföljning kan bli ganska besvärliga, storleksmässigt. Om du dessutom bestämmer dig för att samla in data under en obestämd tidsperiod kommer varje storskalig sökning i loggarna för spårning av meddelanden att ta avsevärd tid i anspråk. Särskilt om du inte begränsar dina sökkriterier. Om du planerar att samla in information om ditt e-postflöde under en obestämd tidsperiod bör du överväga att exportera innehållet i loggarna för spårning av meddelanden till filer. Då kan du lagra data om alla e-postmeddelanden, utom de som pekar på till exempel hälsopostlådor.

Du kan konfigurera loggar för spårning av meddelanden med hjälp av cmdlet Set-TransportService. Med den här cmdlet kan du:

  • Aktivera eller inaktivera spårning av meddelanden,
  • Ändra platsen för lagring av loggar för spårning av meddelanden,
  • Modifiera storleks- och åldersgränserna för loggar för spårning av meddelanden
  • Och aktivera eller inaktivera loggning av ämnen. En förklaring: Som standard lagrar loggar för spårning av meddelanden inte något innehåll i e-postmeddelanden, förutom ämnesraden. Att ha ämnesraden i loggarna förbättrar spårningsupplevelsen avsevärt, men vissa organisationer kräver att den här funktionen inaktiveras av säkerhets- eller integritetsskäl.

Här är ett exempel som ändrar alla parametrar på en gång:

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

Cmdletten ovan aktiverar meddelandespårning för Mailbox_Server och ställer in logglagringen till M:\logs. Storleksgränsen för en enskild loggfil ändras till 30 MB. Det är mest en kosmetisk ändring som styr antalet loggfiler – ju större gränsen är, desto färre csv skapas varje dag. Den maximala katalogstorleken (innan de äldsta filerna skrivs över) är satt till 2,5 GB och loggfilerna sparas i 365 dagar. Om du ställer in -MessageTrackingLogMaxAge till 00:00:00:00 kan du spara loggar för spårning av meddelanden under en obestämd tid. Eller åtminstone innan katalogstorleken nås. Men vem behöver spara utrymme i Exchange, eller hur?

Vad finns i loggarna för spårning av meddelanden

Det finns några saker du behöver veta om hur loggarna för spårning av meddelanden lagrar sina poster.

  1. Varje meddelande genererar vanligen mer än en enda post i loggen för spårning av meddelanden.
  2. Huvudledare i loggarna är inte desamma som deras motsvarande PowerShell-attribut. Event-id i loggfilerna är till exempel EventId i PowerShell. Recipient-address i loggarna motsvarar recipients i PowerShell. När du är osäker på hur du ska söka med hjälp av ett visst attribut använder du Get-MessageTrackingLog –ResultSize 1 | FL * or Get-MessageTrackingLog | Get-Member. Dessa cmdlets ger dig en fullständig lista över attribut.
  3. Vissa fält är ofta tomma i loggarna för spårning av meddelanden. Vissa kanske inte innehåller information som du kan tycka är viktig eller relevant.

De viktigaste fälten i loggar för spårning av meddelanden

  • Sender, Recipient, MessageSubject – ganska självförklarande, visar vem som skickade ett meddelande till vem och vad som var ämnet
  • TotalBytes – visar storleken på ett meddelande
  • Timestamp – ger information om när händelsen ägde rum
  • EventID – ett av de viktigaste fälten i loggar för spårning av meddelanden. Det är den primära källan till information om vad som hände med meddelandet. De vanligaste värdena är Receive (ta emot), Send (skicka), Submit (skicka) och Fail (Fail) (Den här Microsoft-dokumentationen beskriver alla typer av meddelandehändelser.)
  • MessageInfo (meddelandeinformation) och RecipientStatus (mottagarstatus) ger detaljerad information om vad som har hänt med meddelandet.
  • MessageLatency (meddelandetid) visar hur lång tid som servern behövde för att bearbeta e-postmeddelandet.

Den viktigaste delen är hur du använder PowerShell för att få rätt data från loggarna.

Användning av cmdlet Get-MessageTrackingLog

Med Get-MessageTrackingLog kan du söka igenom alla loggar för spårning av meddelanden. Om du använder cmdlet utan några ytterligare attribut returneras upp till 1000 poster, varav de flesta förmodligen är kopplade till aktiviteten Hälsa brevlådor. Om du vill inkludera fler än 1000 poster med en enda Get-MessageTrackingLog-cmdlet lägger du till attributet -ResultSize unlimited. Jag är ändå ganska säker på att du inte planerar att använda cmdlet för att övervaka Health Mailboxes-aktiviteten. Rätt filtrering är nyckeln till framgång. Nedan presenterar jag några tekniker som du kan använda för att filtrera resultaten.

Hur man får allmän information om postflödet i Exchange Server

Om du siktar på att få en mycket allmän uppfattning om det senaste postflödet i din organisation använder du syntaxen som beskrivs nedan:

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

Cmdletten ovan går igenom de senaste 14 dagarnas loggar för meddelandehantering. Du kanske undrar varför du ska använda delen Where-Object -Property Recipients -NotLike ”HealthMailbox*”. Det här filtret tar bort alla poster som är dedikerade till Health Mailboxes. Om du är nyfiken kan du jämföra resultaten med och utan Where-Object-filtret. Slutligen exporterar den sista cmdlet i pipelinen resultaten till filen mtl.html. Du kan också exportera resultaten till en CSV-fil med hjälp av cmdlet ConvertTo-Csv.

Problemet är att när du konverterar resultaten till en HTML- eller CSV-fil visas inte fält som innehåller information om mottagare korrekt. Istället för rätt värden innehåller fälten System.String-uttryck. För att åtgärda detta kan du behöva pipelinerar resultaten till ytterligare en Select-Object-cmdlet. När du ändå håller på, varför inte begränsa utmatningen så att den bara innehåller de viktigaste fälten?

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"

Om du vill registrera alla misslyckade leveranser och registrera dem i en fil använder du cmdlet nedan.

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

Det bästa är att tecknet >> lägger till nya värden i failed.deliveries.csv-filen, så att du kan köra cmdletten regelbundet för att logga alla misslyckade händelser.

Hur du samlar in statistik med Get-MessageTracking Log

Om du vill utföra några mer komplicerade operationer på dina loggoperationer för spårning av meddelanden sparar du dem i en variabel.

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

Cmdletten ovan lagrar information om alla meddelanden som skickats de senaste två dagarna. Om du vill mäta hur många e-postmeddelanden dina användare har skickat i allmänhet skriver du helt enkelt:

$mtl | measure

count sent items in message tracking logs

För mer detaljerad information kan du använda några ytterligare cmdlets för att gruppera, sortera och visa resultaten. Du kan till exempel visa antalet e-postmeddelanden för specifika användare, sorterade i fallande ordning:

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

sortering av resultat i loggar för spårning av meddelanden

Med hjälp av trion Group-Object, Select-Object och Sort-Object tillsammans med cmdlet Get-MessageTrackingLog kan du enkelt få fram all statistik om e-postflödet som du vill.

Hur du spårar specifika meddelanden med Get-MessageTrackingLog

Som du slutligen vill kontrollera vad som hände med ett visst olevererat meddelande kan du snabbt visa all den viktigaste informationen genom att pumpa din sökning till en Format-List-cmdlet:

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

detailed results info - forensics in message tracking logs

I exemplet ovan kan du enkelt se att meddelandet inte levererades på grund av en transportregel. Här visade det sig att någon vid något tillfälle har lanserat en postflödesregel som blockerar alla meddelanden som har en bilaga och nyckelordet Kitten i ämnesraden.

Vad sägs om att några hemliga uppgifter har läckt ut från företaget. Loggar för spårning av meddelanden kan hjälpa dig att lokalisera användare som har skickat e-post utanför ditt företag, till exempel till ett visst konkurrerande företag.

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

Med hjälp av sökningen kan du hitta de misstänkta. Naturligtvis kan du behöva bredda eller skärpa sökkriterierna, men det beror på hur mycket data du har. Vad du gör med resultaten är inte en diskussion för administratörens blogg.

Fortsatt läsning:

  • Messagespårning i Office 365 (Exchange Online)
  • Exchange 2019, 2016, 2013, 2010 mailbox backup by export to PST (PowerShell)

Lämna ett svar

Din e-postadress kommer inte publiceras.