Nachrichtenverfolgungsprotokolle in Exchange Server

  • Verwendungsmöglichkeiten für Nachrichtenverfolgungsprotokolle
  • Speicherort und Struktur von Nachrichtenverfolgungsprotokollen
  • Konfigurieren der Nachrichtenverfolgung
  • Was steht in den Nachrichtenverfolgungsprotokollen
  • Verwenden des Get-.MessageTrackingLog cmdlet

Nachrichtenverfolgungsprotokolle sind eine wertvolle Informationsquelle für jeden Exchange-Administrator. Während Office 365 seine Nachrichtenverfolgung hat, die sehr gut funktioniert, speichert On-Premises Exchange viel mehr Daten in den Protokollen, die vielen Zwecken dienen können.

Nachrichtenverfolgungsprotokolle Exchange

Mögliche Verwendungszwecke für Nachrichtenverfolgungsprotokolle

Die guten alten Nachrichtenverfolgungsprotokolle können vielen verschiedenen Zwecken dienen:

  • Lösung von Zustellungsproblemen – Wenn Sie wissen, wonach Sie suchen, können Nachrichtenverfolgungsprotokolle Ihnen sagen, warum eine Nachricht nicht zugestellt wurde, ob sich ihre Zustellung verzögert hat und vieles mehr (siehe, was in den Nachrichtenverfolgungsprotokollen steht)
  • Statistiken – Nachrichtenverfolgungsprotokolle zeichnen jede einzelne Nachricht auf, die Ihre Server durchlaufen hat. Es ist recht einfach, Daten für die Analyse zu erhalten – wie viele Nachrichten verarbeitet wurden oder wer die meisten Nachrichten im Unternehmen verschickt hat.
  • Forensik – Angenommen, jemand löscht eine E-Mail und Sie haben keine E-Mail-Sicherung. Schlimmer noch, die E-Mail enthielt vertrauliche Informationen und wurde an Ihr Konkurrenzunternehmen gesendet. In diesem Fall können Nachrichtenverfolgungsprotokolle Sie retten, indem sie wertvolle Informationen über E-Mails liefern.
  • Rechtsstreitigkeiten – Ähnlich wie in der obigen Situation. Nachrichtenverfolgungsprotokolle können und werden oft verwendet, wenn Beweise für Rechtsstreitigkeiten benötigt werden.
  • Testen von Transportregeln – Besonders nützlich, wenn Sie mehrere Transportregeln in Ihrem Unternehmen konfiguriert haben. Jedes Mal, wenn eine Transportregel angewendet wird, hinterlässt sie eine Spur, und Sie können das Get-MessageTrackingLog verwenden, um zu sehen, wann eine Transportregel oder eine DLP-Richtlinie ausgelöst wurde.

Ort und Struktur der Message-Tracking-Protokolle

Was sind Message-Tracking-Protokolle? Nachrichtenverfolgungsprotokolle sind einfache CSV-Dateien (mit einer LOG-Erweiterung), die auf Ihrem Exchange-Server gespeichert werden. Der Standardpfad zu ihrem physischen Speicherort lautet %ExchangeInstallPath%TransportRoles\Logs\MessageTracking. Die Protokolle haben eine feste Namenskonvention. Beachten Sie, dass Sie zwar die Dateinamen in den Protokollen ändern können, dies jedoch die Suche mit dem Cmdlet Get-MessageTrackingLog verhindert. Außerdem werden Dateien mit geänderten Namen nicht auf das Größenlimit des Ordners angerechnet. Dies kann dazu führen, dass die von Ihnen konfigurierten Grenzen überschritten werden.

Um den Speicherplatz und die Menge der auf Servern gespeicherten Daten zu verwalten, verwendet Exchange eine zirkuläre Protokollierung. Das heißt, die ältesten Dateien werden überschrieben, wenn ein Ordner seine maximale Größe überschreitet oder eine Protokolldatei ihr maximales Alter erreicht. Wenn Sie die Standardeinstellungen beibehalten, beträgt das maximale Alter für eine Protokolldatei 30 Tage und die maximale Größe für eine einzelne Datei 10 MB. Standardmäßig dürfen alle Nachrichtenverfolgungsprotokolle im Standardverzeichnis 1 GB nicht überschreiten. Sie können alle diese Grenzwerte mithilfe von PowerShell ändern (Details finden Sie unter Konfigurieren der Nachrichtenverfolgung)

Jeden Tag wird eine neue Protokolldatei für die Nachrichtenverfolgung erstellt. Die Namenskonvention lautet:

MSGTRKServiceyyyymmdd-nnnn.log wobei:

  • Der Dienst hängt davon ab, welcher Dienst ein Protokoll erstellt. MSGTRK weist auf Protokolle hin, die vom Transportdienst erstellt wurden; weitere Buchstaben geben an, welche anderen Dienste das Protokoll erstellt haben. MA steht für das Message Approval, MD für den Mailbox Transport Delivery Service, MS für den Mailbox Transport Submission Service.
  • yyyymmdd gibt das Datum an, an dem das Nachrichtenprotokoll erstellt wurde.
  • nnnn ist die Nummer für die Protokolldatei. Immer wenn eine Protokolldatei ihre maximale Größe erreicht, wird eine neue Kopie erstellt. Der Wert ist inkrementell und beginnt jeden Tag (logischerweise) bei 1.

Ich habe einige Standardwerte genannt. Wie Sie vielleicht vermuten, können diese Werte leicht geändert werden.

Konfigurieren Sie die Nachrichtenverfolgung

Bevor Sie beginnen, die Standardwerte der Nachrichtenverfolgungsprotokolle zu ändern, stellen Sie sicher, dass Sie wissen, was Sie tun. Nachrichtenverfolgungsprotokolle können vom Umfang her recht unhandlich werden. Wenn Sie sich entscheiden, Daten über einen unbestimmten Zeitraum zu sammeln, wird jede groß angelegte Suche in den Nachrichtenverfolgungsprotokollen sehr viel Zeit in Anspruch nehmen. Vor allem, wenn Sie Ihre Suchkriterien nicht einschränken. Wenn Sie planen, über einen unbestimmten Zeitraum Informationen über Ihren Postfluss zu sammeln, sollten Sie den Inhalt der Nachrichtenverfolgungsprotokolle in Dateien exportieren. Dann können Sie Daten zu allen E-Mails speichern, mit Ausnahme derjenigen, die z. B. auf Gesundheits-Postfächer verweisen.

Sie können Nachrichtenverfolgungsprotokolle mit dem Cmdlet Set-TransportService konfigurieren. Mit diesem Cmdlet können Sie:

  • die Nachrichtenverfolgung aktivieren oder deaktivieren,
  • den Speicherort für Nachrichtenverfolgungsprotokolle ändern,
  • die Größen- und Altersgrenzen für Nachrichtenverfolgungsprotokolle ändern
  • und die Betreffprotokollierung aktivieren oder deaktivieren. Ein Wort zur Erklärung: Standardmäßig werden in den Protokollen zur Nachrichtenverfolgung keine Inhalte von E-Mails gespeichert, mit Ausnahme der Betreffzeile. Obwohl die Betreffzeile in den Protokollen die Nachverfolgung erheblich verbessert, ist es in einigen Unternehmen aus Sicherheits- oder Datenschutzgründen erforderlich, diese Funktion zu deaktivieren.

Hier ist ein Beispiel, bei dem alle Parameter auf einmal geändert werden:

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

Das obige Cmdlet aktiviert die Nachrichtenverfolgung für Mailbox_Server und legt die Protokollspeicherung auf M:\logs fest. Die Größenbegrenzung für eine einzelne Protokolldatei wird auf 30 MB geändert. Dabei handelt es sich hauptsächlich um eine kosmetische Änderung, die die Anzahl der Protokolldateien steuert – je höher das Limit, desto weniger csv-Dateien werden jeden Tag erstellt. Die maximale Verzeichnisgröße (bevor die ältesten Dateien überschrieben werden) wird auf 2,5 GB festgelegt, und die Protokolldateien werden 365 Tage lang aufbewahrt. Wenn Sie die Option -MessageTrackingLogMaxAge auf 00:00:00 setzen, können Sie die Nachrichtenverfolgungsprotokolle für einen unbestimmten Zeitraum aufbewahren. Oder zumindest bevor die Verzeichnisgröße erreicht ist. Aber wer muss schon Platz in Exchange sparen?

Was steht in den Nachrichtenverfolgungsprotokollen

Es gibt ein paar Dinge, die Sie darüber wissen müssen, wie Nachrichtenverfolgungsprotokolle ihre Einträge speichern.

  1. Jede Nachricht erzeugt normalerweise mehr als einen einzelnen Eintrag im Nachrichtenverfolgungsprotokoll.
  2. Header in den Protokollen sind nicht dasselbe wie ihre entsprechenden PowerShell-Attribute. Zum Beispiel ist Event-id in den Protokolldateien EventId in PowerShell. Die Empfängeradresse in den Protokollen entspricht den Empfängern in PowerShell. Wenn Sie sich nicht sicher sind, wie Sie mit einem bestimmten Attribut suchen sollen, verwenden Sie Get-MessageTrackingLog –ResultSize 1 | FL * or Get-MessageTrackingLog | Get-Member. Mit diesen Cmdlets erhalten Sie eine vollständige Liste der Attribute.
  3. Einige Felder sind in den Nachrichtenverfolgungsprotokollen oft leer. Einige enthalten möglicherweise keine Informationen, die Sie für wichtig oder relevant halten.

Die wichtigsten Felder in Nachrichtenverfolgungsprotokollen

  • Sender, Recipient, MessageSubject – ziemlich selbsterklärend, zeigt an, wer eine Nachricht an wen geschickt hat und was der Betreff war
  • TotalBytes – zeigt die Größe einer Nachricht
  • Timestamp – gibt Auskunft darüber, wann das Ereignis stattgefunden hat
  • EventID – eines der wichtigsten Felder in Nachrichtenverfolgungsprotokollen. Es ist die Hauptinformationsquelle darüber, was mit der Nachricht passiert ist. Die gebräuchlichsten Werte sind Receive, Send, Submit und Fail (In dieser Microsoft-Dokumentation werden alle Nachrichtenereignistypen beschrieben.)
  • MessageInfo und RecipientStatus geben detaillierte Informationen darüber, was mit der Nachricht geschehen ist.
  • MessageLatency zeigt an, wie viel Zeit der Server für die Verarbeitung der E-Mail benötigt hat.

Der wichtigste Teil ist die Verwendung von PowerShell, um die richtigen Daten aus den Protokollen zu erhalten.

Verwenden des Cmdlets Get-MessageTrackingLog

Mit Get-MessageTrackingLog können Sie alle Nachrichtenverfolgungsprotokolle durchsuchen. Wenn Sie das Cmdlet ohne zusätzliche Attribute verwenden, werden bis zu 1000 Einträge zurückgegeben, von denen die meisten wahrscheinlich mit der Aktivität „Integritätspostfächer“ verbunden sind. Wenn Sie mit einem einzigen Cmdlet Get-MessageTrackingLog mehr als 1000 Einträge erfassen möchten, fügen Sie das Attribut -ResultSize unlimited hinzu. Ich bin mir jedoch ziemlich sicher, dass Sie nicht vorhaben, das Cmdlet zur Überwachung der Aktivität „Integritätspostfächer“ zu verwenden. Die richtige Filterung ist der Schlüssel zum Erfolg. Im Folgenden stelle ich Ihnen einige Techniken vor, mit denen Sie die Ergebnisse filtern können.

Wie Sie allgemeine Informationen über den E-Mail-Verkehr in Exchange Server erhalten

Wenn Sie sich einen sehr allgemeinen Überblick über den aktuellen E-Mail-Verkehr in Ihrer Organisation verschaffen möchten, verwenden Sie die unten beschriebene Syntax:

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

Das obige Cmdlet durchsucht die Protokolle der letzten 14 Tage zur Nachrichtenverfolgung. Sie fragen sich vielleicht, warum Sie den Teil Where-Object -Property Recipients -NotLike „HealthMailbox*“ verwenden. Dieser Filter löscht alle Einträge, die sich auf Gesundheitsmailboxen beziehen. Wenn Sie neugierig sind, können Sie die Ergebnisse mit und ohne den Where-Object-Filter vergleichen. Schließlich exportiert das letzte Cmdlet in der Pipeline die Ergebnisse in die Datei mtl.html. Sie können die Ergebnisse auch mit dem Cmdlet „ConvertTo-Csv“ in eine CSV-Datei exportieren.

Das Problem ist, dass bei der Konvertierung der Ergebnisse in eine HTML- oder CSV-Datei Felder mit Informationen zu den Empfängern nicht korrekt angezeigt werden. Anstelle der richtigen Werte enthalten die Felder System.String-Ausdrücke. Um dies zu beheben, müssen Sie die Ergebnisse möglicherweise an ein zusätzliches Cmdlet „Select-Object“ weiterleiten. Wenn Sie schon dabei sind, können Sie die Ausgabe so einschränken, dass sie nur die wichtigsten Felder enthält.

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"

Wenn Sie alle fehlgeschlagenen Zustellungen registrieren und in einer Datei speichern möchten, verwenden Sie das folgende Cmdlet.

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

Das Beste daran ist, dass das >>-Zeichen neue Werte zur Datei failed.deliveries.csv-Datei hinzufügt, sodass Sie das Cmdlet regelmäßig ausführen können, um alle fehlgeschlagenen Ereignisse zu protokollieren.

So erfassen Sie Statistiken mit Get-MessageTracking Log

Wenn Sie einige kompliziertere Operationen mit Ihren Message-Tracking-Protokollvorgängen durchführen möchten, speichern Sie sie in einer Variablen.

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

Das obige Cmdlet speichert Informationen über alle in den letzten zwei Tagen gesendeten Nachrichten. Um zu messen, wie viele E-Mails Ihre Benutzer im Allgemeinen gesendet haben, geben Sie einfach ein:

$mtl | measure

Gesendete Elemente in Nachrichtenverfolgungsprotokollen zählen

Für detailliertere Informationen können Sie einige zusätzliche Cmdlets zum Gruppieren, Sortieren und Anzeigen der Ergebnisse verwenden. Sie können beispielsweise die Anzahl der E-Mails für bestimmte Benutzer in absteigender Reihenfolge anzeigen:

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

Sortieren von Ergebnissen in Nachrichtenverfolgungsprotokollen

Mit den Cmdlets Group-Object, Select-Object und Sort-Object können Sie zusammen mit dem Cmdlet Get-MessageTrackingLog ganz einfach alle gewünschten E-Mail-Statistiken abrufen.

Mit Get-MessageTrackingLog bestimmte Nachrichten verfolgen

Wenn Sie schließlich überprüfen möchten, was mit einer bestimmten nicht zugestellten Nachricht passiert ist, können Sie schnell alle wichtigen Informationen anzeigen, indem Sie Ihre Suche auf ein Format-List-Cmdlet ausweiten:

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

Detaillierte Ergebnisinformationen - Forensik in Nachrichtenverfolgungsprotokollen

Im obigen Beispiel können Sie leicht erkennen, dass die Nachricht aufgrund einer Transportregel nicht zugestellt wurde. In diesem Fall stellte sich heraus, dass jemand irgendwann eine Mailflow-Regel eingeführt hat, die alle Nachrichten blockiert, die einen Anhang und das Schlüsselwort „Kitten“ in der Betreffzeile enthalten.

Angenommen, es sind geheime Daten aus dem Unternehmen nach außen gelangt. Nachrichtenverfolgungsprotokolle können Ihnen dabei helfen, Benutzer ausfindig zu machen, die E-Mails außerhalb Ihres Unternehmens verschickt haben, zum Beispiel an ein bestimmtes Konkurrenzunternehmen.

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

Mit der Suche können Sie die Verdächtigen finden. Natürlich müssen Sie die Suchkriterien möglicherweise erweitern oder verschärfen, aber das hängt davon ab, wie viele Daten Sie haben. Was Sie mit den Ergebnissen machen, ist keine Diskussion für den Blog des Administrators.

Weiter lesen:

  • Nachrichtenverfolgung in Office 365 (Exchange Online)
  • Exchange 2019, 2016, 2013, 2010 Postfachsicherung durch Export in PST (PowerShell)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.