- Mogelijke toepassingen voor logboeken voor het bijhouden van berichten
- Locatie en structuur van logboeken voor het bijhouden van berichten
- Berichten bijhouden configureren
- Wat staat er in de logboeken voor het bijhouden van berichten
- Gebruik van het cmdlet Get-MessageTrackingLog cmdlet
Message tracking logs zijn een waardevolle bron van informatie voor elke Exchange-beheerder. Terwijl Office 365 zijn message tracing heeft, wat prima werkt, slaat on-premises Exchange veel meer gegevens op in de logs, die vele doelen kunnen dienen.
- Mogelijke toepassingen voor message tracking logs
- Plaats en structuur van de logboeken voor het bijhouden van berichten
- Configureer message tracking
- Wat staat er in de message tracking logs
- De belangrijkste velden in logs voor het volgen van berichten
- Met behulp van het cmdlet Get-MessageTrackingLog
- Hoe verkrijg je algemene informatie over de mail flow in Exchange Server
- Hoe statistieken verzamelen met Get-MessageTracking Log
- Hoe specifieke berichten te traceren met Get-MessageTrackingLog
Mogelijke toepassingen voor message tracking logs
Goede oude message tracking logs kunnen veel verschillende doeleinden dienen:
- Oplossing van leveringsproblemen – Als u weet waar u naar zoekt, kunnen message tracking logs u vertellen waarom een bericht niet is afgeleverd, of de aflevering ervan is vertraagd en nog veel meer (zie wat er in de message tracking logs staat)
- Statistieken – Message tracking logs houden sporen bij van elk bericht dat door uw servers is gegaan. Er is een vrij eenvoudige manier om gegevens te verkrijgen voor analyse – hoeveel berichten werden verwerkt, of wie de meeste berichten verzonden in het bedrijf.
- Forensics – Stel dat iemand verwijdert een e-mail en je had geen e-mail back-up. Erger nog, de e-mail bevatte vertrouwelijke informatie en was verzonden naar uw concurrerende bedrijf. Dat is waar message tracking logs u kunnen redden door waardevolle informatie over e-mails te verstrekken.
- Litigation – Vergelijkbaar met de bovenstaande situatie. Message Tracking Logs kunnen en worden vaak gebruikt wanneer bewijs nodig is voor een rechtszaak.
- Testen van transportregels – Vooral nuttig wanneer u meerdere transportregels in uw organisatie hebt geconfigureerd. Telkens wanneer een transportregel wordt toegepast, laat deze een spoor achter, en u kunt de Get-MessageTrackingLog gebruiken om te zien wanneer een transportregel of een DLP-beleid is geactiveerd.
Plaats en structuur van de logboeken voor het bijhouden van berichten
Wat zijn logboeken voor het bijhouden van berichten? Logboeken voor het bijhouden van berichten zijn eenvoudige CSV-bestanden (met een LOG-extensie) die zijn opgeslagen op uw Exchange-server. Het standaardpad naar hun fysieke locatie is %ExchangeInstallPath%TransportRoles\Logs\MessageTracking. De logs hebben een vaste naamgevingsconventie. Hoewel je de bestandsnamen in de logs kunt veranderen, kun je ze dan niet meer doorzoeken met het cmdlet Get-MessageTrackingLog. Bovendien worden bestanden met gewijzigde namen niet meegeteld voor de limiet op de mapgrootte. Dit kan leiden tot het overschrijden van de limieten die u hebt geconfigureerd.
Om de ruimte en de hoeveelheid gegevens op servers te beheren, maakt Exchange gebruik van circulaire logging. Met andere woorden, de oudste bestanden worden overschreven wanneer een map zijn maximale grootte overschrijdt, of een logbestand zijn maximale leeftijd bereikt. Als u zich houdt aan de standaardinstellingen, is de maximale leeftijd voor een logbestand 30 dagen, en de maximale grootte voor een enkel bestand 10 MB. Standaard mogen alle logbestanden voor het bijhouden van berichten in de standaardmap niet groter zijn dan 1 GB. U kunt al deze limieten wijzigen met PowerShell (zie Berichttracering configureren voor details)
Elke dag wordt een nieuw logbestand voor berichttracering gemaakt. De naamgevingsconventie is:
MSGTRKServiceyyyymmdd-nnnn.log waarbij:
- De service hangt af van welke service een log heeft gemaakt. MSGTRK wijst naar logs die door de Transportdienst zijn gemaakt; extra letters geven aan welke andere diensten het log hebben gegenereerd. MA staat voor de Message Approval, MD voor de Mailbox Transport Delivery service, MS voor de Mailbox Transport Submission service.
- yyyymmdd specificeert de datum waarop het berichtenlog is aangemaakt.
- nnnn is het nummer voor het logbestand. Telkens wanneer een logbestand zijn maximumgrootte bereikt, wordt een volgende kopie aangemaakt. De waarde is incrementeel, en elke dag begint het vanaf (heel logisch) 1.
Ik heb een aantal standaard waarden genoemd. Zoals u wellicht vermoedt, kunnen die waarden gemakkelijk worden gewijzigd.
Configureer message tracking
Voordat u begint met het wijzigen van de standaardwaarden van de message tracking logs, zorg ervoor dat u weet wat u aan het doen bent. Logboeken voor het bijhouden van berichten kunnen nogal log worden, qua omvang. Bovendien, als u beslist om gegevens te verzamelen voor een onbepaalde periode, zal elke grootschalige opzoeking in de message tracking logs een aanzienlijke hoeveelheid tijd in beslag nemen. Vooral als u uw zoekcriteria niet beperkt. Als u van plan bent voor onbepaalde tijd informatie over uw mailstroom te verzamelen, kunt u overwegen de inhoud van de logboeken voor het bijhouden van berichten naar bestanden te exporteren. Dan kunt u gegevens over alle e-mails opslaan, met uitzondering van de e-mails die bijvoorbeeld naar Health Mailboxes wijzen.
U kunt message tracking logs configureren met het cmdlet Set-TransportService. Met dit cmdlet kunt u:
- Message tracking in- of uitschakelen,
- De locatie voor het opslaan van message tracking logs wijzigen,
- De grootte- en leeftijdslimieten voor message tracking logs wijzigen
- En subject logging in- of uitschakelen. Een woordje uitleg: standaard slaan logboeken voor het bijhouden van berichten geen inhoud van e-mailberichten op, behalve de onderwerpregel. Hoewel de onderwerpregel in de logboeken de traceerervaring aanzienlijk verbetert, willen sommige organisaties deze functie om veiligheids- of privacyredenen uitschakelen.
Hier volgt een voorbeeld waarbij alle parameters in één keer worden gewijzigd:
Set-TransportService Mailbox_Server -MessageTrackingLogEnabled $true -MessageTrackingLogPath "M:\logs" -MessageTrackingLogMaxFileSize 30MB -MessageTrackingLogMaxDirectorySize 2.5GB -MessageTrackingLogMaxAge 365.00:00:00
Het bovenstaande cmdlet schakelt berichtentracering in voor Mailbox_Server en stelt de logopslag in op M:logs. De limiet voor de grootte van een enkel logbestand wordt gewijzigd in 30 MB. Het is vooral een cosmetische verandering, die het aantal logbestanden regelt – hoe groter de limiet, hoe minder csv er elke dag worden aangemaakt. De maximale mapgrootte (voordat de oudste bestanden worden overschreven) is ingesteld op 2,5 GB, en de logbestanden worden 365 dagen bewaard. Door de -MessageTrackingLogMaxAge in te stellen op 00:00:00 kun je de message tracking logs voor onbepaalde tijd bewaren. Of in ieder geval voordat de directory grootte is bereikt. Maar wie wil er nu ruimte besparen in Exchange?
Wat staat er in de message tracking logs
Er zijn een paar dingen die je moet weten over hoe message tracking logs hun entries opslaan.
- Elk bericht genereert meestal meer dan een enkele entry in de message tracking log.
- Headers in de logs zijn niet hetzelfde als hun corresponderende PowerShell attributen. Bijvoorbeeld, Event-id in de logbestanden is EventId in PowerShell. Recipient-address in de logs is gelijk aan recipients in PowerShell. Als je twijfelt over hoe je moet zoeken met een bepaald attribuut, gebruik dan
Get-MessageTrackingLog –ResultSize 1 | FL * or Get-MessageTrackingLog | Get-Member
. Deze cmdlets geven u een volledige lijst van attributen. - Sommige velden zijn vaak leeg in de logboeken voor het traceren van berichten. Sommige bevatten misschien geen informatie die u belangrijk of relevant vindt.
De belangrijkste velden in logs voor het volgen van berichten
- Afzender, Ontvanger, Berichtonderwerp – spreekt voor zich, laat zien wie een bericht aan wie heeft gestuurd en wat het onderwerp was
- TotalBytes – laat de grootte van een bericht zien
- Tijdstempel – geeft info over wanneer de gebeurtenis plaatsvond
- EventID – een van de belangrijkste velden in logs voor het volgen van berichten. Het is de primaire bron van informatie over wat er met het bericht is gebeurd. De meest voorkomende waarden zijn Receive, Send, Submit, en Fail (Deze Microsoft documentatie beschrijft alle berichtgebeurtenistypes.)
- MessageInfo en RecipientStatus geven de gedetailleerde informatie over wat er met het bericht is gebeurd.
- MessageLatency laat zien hoeveel tijd de server nodig had om de e-mail te verwerken.
Het belangrijkste deel is hoe je PowerShell gebruikt om de juiste gegevens uit de logs te halen.
Met behulp van het cmdlet Get-MessageTrackingLog
Get-MessageTrackingLog laat je zoeken door alle message tracking logs. Indien u het cmdlet gebruikt zonder enige additionele attributen, zal het tot 1000 entries teruggeven, waarvan de meeste waarschijnlijk verbonden zijn met de Health Mailboxes activiteit. Indien je meer dan 1000 entries wilt opnemen met een enkel Get-MessageTrackingLog cmdlet, voeg dan het -ResultSize unlimited attribuut toe. Toch ben ik er vrij zeker van dat je niet van plan bent om het cmdlet te gebruiken om Health Mailboxes activiteit te monitoren. De juiste filtering is de sleutel tot succes. Hieronder volgen een aantal technieken die je kunt gebruiken om de resultaten te filteren.
Hoe verkrijg je algemene informatie over de mail flow in Exchange Server
Als je een heel algemeen beeld wilt krijgen van de recente mail flow in je organisatie, gebruik dan de hieronder beschreven syntax:
Get-MessageTrackingLog -Start (Get-Date).AddDays(-14) -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*" | ConvertTo-Html > "C:\mtl.html"
Het bovenstaande cmdlet doorloopt de laatste 14 dagen van de message tracking logs. U vraagt zich misschien af waarom u het onderdeel Where-Object -Property Recipients -NotLike “HealthMailbox*” moet gebruiken. Dit filter verwijdert alle items die zijn gewijd aan Health Mailboxes. Als je nieuwsgierig bent, kun je de resultaten vergelijken met en zonder het Where-Object filter. Tenslotte, het laatste cmdlet in de pijplijn exporteert de resultaten naar het mtl.html bestand. Je kunt de resultaten ook exporteren naar een CSV bestand, met behulp van het ConvertTo-Csv cmdlet.
Het probleem is, dat wanneer je de resultaten converteert naar een HTML of een CSV bestand, velden met info over ontvangers niet correct worden weergegeven. In plaats van de juiste waarden, zullen de velden System.String expressies bevatten. Om dit te verhelpen, moet je de resultaten misschien pipen naar een extra Select-Object cmdlet. Als u toch bezig bent, waarom beperkt u de uitvoer dan niet zodat deze alleen de belangrijkste velden bevat?
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"
Als u alle mislukte leveringen wilt registreren en in een bestand wilt opnemen, gebruikt u het onderstaande cmdlet.
Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize Unlimited –EventId Fail | Where -Property Recipients -NotLike "HealthMailbox*" >> "C:\failed deliveries.csv"
Het mooiste is dat het teken >> nieuwe waarden toevoegt aan het bestand failed.deliveries.csv-bestand, zodat u het cmdlet periodiek kunt uitvoeren om alle mislukte gebeurtenissen te loggen.
Hoe statistieken verzamelen met Get-MessageTracking Log
Als u wat ingewikkeldere bewerkingen wilt uitvoeren op uw message-tracking log-bewerkingen, slaat u ze op in een variabele.
$mtl Get-MessageTrackingLog -Start (Get-Date).AddDays(-2) –eventId Send -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*"
Het cmdlet hierboven slaat informatie op over alle berichten die de afgelopen twee dagen zijn verzonden. Om te meten hoeveel e-mails uw gebruikers in het algemeen hebben verzonden, typt u eenvoudigweg:
$mtl | measure
Voor meer gedetailleerde informatie kunt u enkele aanvullende cmdlets gebruiken om de resultaten te groeperen, te sorteren en weer te geven. U kunt bijvoorbeeld het aantal e-mails voor specifieke gebruikers weergeven, gesorteerd op aflopende volgorde:
$mtl | group-object -property sender | Select-Object name,count | Sort-Object count -desc
Met de cmdlets Group-Object, Select-Object en Sort-Object kunt u, in combinatie met het cmdlet Get-MessageTrackingLog, eenvoudig alle gewenste statistieken van de mailstroom verkrijgen.
Hoe specifieke berichten te traceren met Get-MessageTrackingLog
Ten slotte, als u wilt nagaan wat er met een bepaald niet-bezorgd bericht is gebeurd, kunt u snel alle belangrijkste informatie tonen door uw zoekopdracht te pompen naar een Format-List cmdlet:
… | FL –Property Sender, Recipients, MessageSubject, RecipientStatus
In het bovenstaande voorbeeld kun je eenvoudig zien dat het bericht niet is afgeleverd vanwege een transportregel. Hier is gebleken dat iemand op een bepaald moment een mail flow rule heeft gestart die alle berichten blokkeert die een bijlage en het trefwoord Kitten in het onderwerp hebben.
Laten we eens aannemen dat er geheime gegevens uit het bedrijf zijn gelekt. Logboeken voor het bijhouden van berichten kunnen u helpen bij het lokaliseren van gebruikers die e-mails buiten uw bedrijf hebben verzonden, bijvoorbeeld naar een bepaald concurrerend bedrijf.
Get-MessageTrackingLog –ResultSize Unlimited | Where -Property Recipients -Like "*@competitive-company.com"
Met de zoekfunctie kunt u de verdachten vinden. Natuurlijk kan het nodig zijn de zoekcriteria te verruimen of aan te scherpen, maar dat hangt af van de hoeveelheid gegevens die u hebt. Wat u met de resultaten doet, is geen discussie voor de blog van de admin.
Verder lezen:
- Berichten bijhouden in Office 365 (Exchange Online)
- Exchange 2019, 2016, 2013, 2010 mailbox back-up door export naar PST (PowerShell)