Meddelandespårning
Sök i spårningsloggen och belägg leveransvägen: Exchange on-prem, Exchange Online och Postfix.
Sök på avsändare och mottagare
Standardsökningen: alla händelser för ett avsändar/mottagar-par i vald period, sorterade kronologiskt.
Letzte 48 Stunden
- Avsändare
-
sender@example.comÄndra i generatorn →
Exchange on-prem
Get-MessageTrackingLog (Exchange) Inbyggt
Get-TransportService | Get-MessageTrackingLog -WarningAction 0 `
-Sender "sender@example.com" -Recipients "empfaenger@example.com" `
-Start (Get-Date).AddHours(-48) -End (Get-Date) -ResultSize Unlimited |
Where-Object { $_.Sender -notmatch "HealthMailbox" -and $_.Recipients -notmatch "Health" } |
Sort-Object Timestamp |
Format-Table Timestamp, EventId, Source, Sender, @{N="Recipients";E={$_.Recipients -join ","}}, MessageSubject -AutoSize journalctl / grep (Postfix) Inbyggt
journalctl -u postfix --since "48 hours ago" | grep -iE "from=<sender@example.com>|to=<empfaenger@example.com>" | tail -40
# Ohne systemd-Journal direkt im Log, dann aber ohne Zeitfilter:
grep -iE "from=<sender@example.com>|to=<empfaenger@example.com>" /var/log/mail.log | tail -40 Exchange Online
Get-MessageTraceV2 Tilläggsverktyg
Connect-ExchangeOnline
Get-MessageTraceV2 -SenderAddress "sender@example.com" -RecipientAddress "empfaenger@example.com" `
-StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date) |
Sort-Object Received |
Format-Table Received, SenderAddress, RecipientAddress, Subject, Status -AutoSize Get-MessageTrace (alt) Tilläggsverktyg
# Vor der Umstellung auf V2; identische Parameter, kleinere Ergebnisgrenzen.
Get-MessageTrace -SenderAddress "sender@example.com" -RecipientAddress "empfaenger@example.com" `
-StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date) Fenster am Vormittag
- Avsändare
-
sender@example.comÄndra i generatorn → - Från (datum och tid)
-
2026-08-09T08:00Ändra i generatorn → - Till (datum och tid)
-
2026-08-09T12:00Ändra i generatorn →
Exchange on-prem
Get-MessageTrackingLog (Exchange) Inbyggt
Get-TransportService | Get-MessageTrackingLog -WarningAction 0 `
-Sender "sender@example.com" -Recipients "empfaenger@example.com" `
-Start (Get-Date "2026-08-09 08:00") -End (Get-Date "2026-08-09 12:00") -ResultSize Unlimited |
Where-Object { $_.Sender -notmatch "HealthMailbox" -and $_.Recipients -notmatch "Health" } |
Sort-Object Timestamp |
Format-Table Timestamp, EventId, Source, Sender, @{N="Recipients";E={$_.Recipients -join ","}}, MessageSubject -AutoSize journalctl / grep (Postfix) Inbyggt
journalctl -u postfix --since "2026-08-09 08:00" --until "2026-08-09 12:00" | grep -iE "from=<sender@example.com>|to=<empfaenger@example.com>" | tail -40
# Ohne systemd-Journal direkt im Log, dann aber ohne Zeitfilter:
grep -iE "from=<sender@example.com>|to=<empfaenger@example.com>" /var/log/mail.log | tail -40 Exchange Online
Get-MessageTraceV2 Tilläggsverktyg
Connect-ExchangeOnline
Get-MessageTraceV2 -SenderAddress "sender@example.com" -RecipientAddress "empfaenger@example.com" `
-StartDate (Get-Date "2026-08-09 08:00") -EndDate (Get-Date "2026-08-09 12:00") |
Sort-Object Received |
Format-Table Received, SenderAddress, RecipientAddress, Subject, Status -AutoSize Get-MessageTrace (alt) Tilläggsverktyg
# Vor der Umstellung auf V2; identische Parameter, kleinere Ergebnisgrenzen.
Get-MessageTrace -SenderAddress "sender@example.com" -RecipientAddress "empfaenger@example.com" `
-StartDate (Get-Date "2026-08-09 08:00") -EndDate (Get-Date "2026-08-09 12:00") De två datumfälten anger intervallet på minuten när; lämnas de tomma använder kommandot de senaste 48 timmarna. Get-TransportService frågar alla transportservrar, inte bara den lokala. HealthMailbox-raderna (Microsofts egna övervakningsmeddelanden) filtreras bort, annars drunknar de riktiga träffarna. Exchange Online kräver modulen ExchangeOnlineManagement; där har Get-MessageTraceV2 ersatt Get-MessageTrace.
Sök på ämne
Hittar meddelanden via en del av ämnet: den vanliga vägen när användaren bara kan säga "min faktura från igår".
- Ämne (del)
-
RechnungÄndra i generatorn →
Exchange on-prem
Get-MessageTrackingLog (Exchange) Inbyggt
Get-TransportService | Get-MessageTrackingLog -WarningAction 0 `
-MessageSubject "Rechnung" `
-Start (Get-Date).AddHours(-48) -End (Get-Date) -ResultSize Unlimited |
Where-Object { $_.Sender -notmatch "HealthMailbox" } |
Sort-Object Timestamp |
Format-Table Timestamp, EventId, Sender, @{N="Recipients";E={$_.Recipients -join ","}}, MessageSubject -AutoSize journalctl / grep (Postfix) Inbyggt
journalctl -u postfix --since "48 hours ago" | grep -i "Rechnung" | tail -40
grep -i "Rechnung" /var/log/mail.log | tail -40 Exchange Online
Get-MessageTraceV2 Tilläggsverktyg
# V2 kennt keinen Betreff-Parameter, darum nachträglich filtern.
Get-MessageTraceV2 -StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date) |
Where-Object { $_.Subject -like "*Rechnung*" } |
Format-Table Received, SenderAddress, RecipientAddress, Subject, Status -AutoSize On-prem matchar -MessageSubject en delsträng. I Exchange Online filtrerar kommandot i efterhand, eftersom Get-MessageTraceV2 saknar en ämnesparameter.
Spåra ett meddelande
Visar varje station för ett specifikt meddelande via dess Message-ID, över alla transportservrar.
Message-ID aus dem Kopf
- Message-ID
-
<a1b2c3@example.com>Ändra i generatorn →
Exchange on-prem
Get-MessageTrackingLog (Exchange) Inbyggt
Get-TransportService | Get-MessageTrackingLog -WarningAction 0 `
-MessageId "<a1b2c3@example.com>" `
-Start (Get-Date).AddHours(-48) -End (Get-Date) -ResultSize Unlimited |
Sort-Object Timestamp |
Format-Table Timestamp, ServerHostname, EventId, Source, SourceContext, @{N="Recipients";E={$_.Recipients -join ","}} -AutoSize grep (Postfix) Inbyggt
qid=$(grep -F "<a1b2c3@example.com>" /var/log/mail.log | grep -oE "[A-F0-9]{8,}" | head -1)
echo "Queue-ID: $qid"
grep "$qid" /var/log/mail.log Exchange Online
Get-MessageTraceV2 Tilläggsverktyg
Get-MessageTraceV2 -MessageId "<a1b2c3@example.com>" `
-StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date) |
Format-List Received, SenderAddress, RecipientAddress, Subject, Status, MessageTraceId Message-ID finns i meddelandets huvud (vår analysator för e-posthuvuden visar det). Ta med vinkelparenteserna exakt som i huvudet.
Leveransväg med tidsförskjutning
Leveransvägen som kedja med sekunder sedan den första händelsen: visar vilken station som förlorade tiden.
- Message-ID
-
<a1b2c3@example.com>Ändra i generatorn →
Exchange on-prem
Get-MessageTrackingLog (Exchange) Inbyggt
$log = Get-TransportService | Get-MessageTrackingLog -WarningAction 0 `
-MessageId "<a1b2c3@example.com>" -Start (Get-Date).AddHours(-48) -End (Get-Date) -ResultSize Unlimited |
Sort-Object Timestamp
$first = $log[0].Timestamp
$log | Select-Object @{N="+Sek";E={[math]::Round(($_.Timestamp - $first).TotalSeconds,1)}},
Timestamp, ServerHostname, EventId, Source, @{N="Detail";E={$_.RecipientStatus -join " "}} |
Format-Table -AutoSize
# Kette: RECEIVE -> SUBMIT -> TRANSFER -> SEND (nach aussen) bzw. DELIVER (ins Postfach). grep / awk (Postfix) Inbyggt
qid=$(grep -F "<a1b2c3@example.com>" /var/log/mail.log | grep -oE "[A-F0-9]{8,}" | head -1)
grep "$qid" /var/log/mail.log | awk '{ print $1, $2, $3, $6, $7, $8, $9, $10 }' Exchange Online
Get-MessageTraceDetailV2 Tilläggsverktyg
$m = Get-MessageTraceV2 -MessageId "<a1b2c3@example.com>" -StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date)
$m | ForEach-Object {
Get-MessageTraceDetailV2 -MessageTraceId $_.MessageTraceId -RecipientAddress $_.RecipientAddress |
Format-Table Date, Event, Action, Detail -AutoSize
} EventId-kedjan lyder RECEIVE, SUBMIT, TRANSFER och till sist SEND (utgående) eller DELIVER (till postlådan). FAIL eller DEFER markerar brytpunkten.
Misslyckade leveranser
Grupperar FAIL-händelserna efter orsak, de vanligaste först: hittar mönstret bakom ett avbrott i stället för enskilda fall.
Letzte 48 Stunden
Exchange on-prem
Get-MessageTrackingLog (Exchange) Inbyggt
Get-TransportService | Get-MessageTrackingLog -WarningAction 0 -EventId FAIL `
-Start (Get-Date).AddHours(-48) -End (Get-Date) -ResultSize Unlimited |
Where-Object { $_.Sender -notmatch "HealthMailbox" } |
Group-Object { $_.RecipientStatus -join " " } -NoElement |
Sort-Object Count -Descending | Select-Object -First 15 Count, Name grep (Postfix) Inbyggt
grep "status=bounced" /var/log/mail.log |
grep -oE "said: [0-9]{3}[ -][0-9.]* [^)]*" | sort | uniq -c | sort -rn | head -15 Exchange Online
Get-MessageTraceV2 Tilläggsverktyg
Get-MessageTraceV2 -Status Failed -StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date) |
Group-Object RecipientAddress -NoElement | Sort-Object Count -Descending | Select-Object -First 15 Hitta långsamma leveranser
Beräknar tiden från mottagning till leverans per meddelande och visar de långsammaste: det belagda svaret på "e-posten är så långsam".
Exchange on-prem
Get-MessageTrackingLog (Exchange) Inbyggt
$log = Get-TransportService | Get-MessageTrackingLog -WarningAction 0 `
-Start (Get-Date).AddHours(-48) -End (Get-Date) -ResultSize Unlimited |
Where-Object { $_.Sender -notmatch "HealthMailbox" }
$log | Group-Object MessageId | ForEach-Object {
$recv = ($_.Group | Where-Object EventId -eq "RECEIVE" | Sort-Object Timestamp | Select-Object -First 1).Timestamp
$done = ($_.Group | Where-Object { $_.EventId -in "DELIVER", "SEND" } | Sort-Object Timestamp | Select-Object -Last 1).Timestamp
if ($recv -and $done) {
[pscustomobject]@{ Sekunden = [math]::Round(($done - $recv).TotalSeconds, 1); Betreff = $_.Group[0].MessageSubject }
}
} | Sort-Object Sekunden -Descending | Select-Object -First 15 grep (Postfix) Inbyggt
grep -oE "delay=[0-9.]+" /var/log/mail.log | cut -d= -f2 | sort -rn | head -15
# delay = Gesamtzeit von der Annahme bis zur Zustellung in Sekunden. Exchange Online
Get-MessageTraceV2 Tilläggsverktyg
# EXO liefert keine Laufzeit je Nachricht; die Detailansicht zeigt die Stationen mit Zeitstempel.
Get-MessageTraceV2 -StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date) |
Sort-Object Received -Descending | Select-Object -First 25 Received, SenderAddress, RecipientAddress, Subject, Status Toppavsändare och toppmottagare
Räknar volym per avsändare och mottagare: användbart vid belastningsfrågor och när en postlåda misstänks vara komprometterad.
Exchange on-prem
Get-MessageTrackingLog (Exchange) Inbyggt
$log = Get-TransportService | Get-MessageTrackingLog -WarningAction 0 -EventId RECEIVE `
-Start (Get-Date).AddHours(-48) -End (Get-Date) -ResultSize Unlimited |
Where-Object { $_.Sender -notmatch "HealthMailbox" }
"--- Top-Absender ---"
$log | Group-Object Sender -NoElement | Sort-Object Count -Descending | Select-Object -First 10
"--- Top-Empfaenger ---"
$log | ForEach-Object { $_.Recipients } | Group-Object -NoElement | Sort-Object Count -Descending | Select-Object -First 10 grep (Postfix) Inbyggt
grep -oE "from=<[^>]+>" /var/log/mail.log | sort | uniq -c | sort -rn | head -10
grep -oE "to=<[^>]+>" /var/log/mail.log | sort | uniq -c | sort -rn | head -10 Exchange Online
Get-MessageTraceV2 Tilläggsverktyg
$t = Get-MessageTraceV2 -StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date)
"--- Top-Absender ---"
$t | Group-Object SenderAddress -NoElement | Sort-Object Count -Descending | Select-Object -First 10
"--- Top-Empfaenger ---"
$t | Group-Object RecipientAddress -NoElement | Sort-Object Count -Descending | Select-Object -First 10 Filtrera på EventId
Visar alla händelser av en typ, till exempel bara FAIL, DEFER eller DELIVER.
- EventId
-
FAILÄndra i generatorn →
Exchange on-prem
Get-MessageTrackingLog (Exchange) Inbyggt
Get-TransportService | Get-MessageTrackingLog -WarningAction 0 -EventId FAIL `
-Start (Get-Date).AddHours(-48) -End (Get-Date) -ResultSize Unlimited |
Sort-Object Timestamp |
Format-Table Timestamp, ServerHostname, Sender, @{N="Recipients";E={$_.Recipients -join ","}}, MessageSubject -AutoSize
# Gaengige EventIds: RECEIVE SEND DELIVER FAIL DEFER RESOLVE EXPAND REDIRECT DROP SUBMIT TRANSFER grep (Postfix) Inbyggt
grep -oE "status=[a-z]+" /var/log/mail.log | sort | uniq -c | sort -rn Exchange Online
Get-MessageTraceV2 Tilläggsverktyg
# EXO kennt keine EventIds, sondern einen Status:
# Delivered, Failed, Pending, Quarantined, FilteredAsSpam, Expanded
Get-MessageTraceV2 -Status Failed -StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date) |
Format-Table Received, SenderAddress, RecipientAddress, Subject, Status -AutoSize Exchange Online har inga EventId utan en status (Delivered, Failed, Pending, Quarantined, FilteredAsSpam).
Serveröversikt
Räknar en servers händelser per typ och visar om spårningsloggen alls är aktiverad och hur länge den sparas.
- Exchange-server
-
mbx01.example.comÄndra i generatorn →
Exchange on-prem
Get-MessageTrackingLog (Exchange) Inbyggt
Get-MessageTrackingLog -Server mbx01.example.com -WarningAction 0 `
-Start (Get-Date).AddHours(-48) -End (Get-Date) -ResultSize Unlimited |
Where-Object { $_.Sender -notmatch "HealthMailbox" } |
Group-Object EventId -NoElement | Sort-Object Count -Descending Get-TransportService Inbyggt
Get-TransportService | Select-Object Name, MessageTrackingLogEnabled, MessageTrackingLogPath, MessageTrackingLogMaxAge Exchange Online
Get-ConnectionByClientTypeReport Tilläggsverktyg
# EXO hat keine einzelnen Server; die Auswertung laeuft ueber Mandant-Berichte.
Get-MailTrafficATPReport -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) | Format-Table Date, EventType, MessageCount Som standard sparar Exchange spårningsloggar i 30 dagar; äldre incidenter kan inte längre beläggas.
Exportera för ärenden
Skriver resultatet som CSV med semikolon och UTF-8: öppnas direkt i Excel och kan bifogas ett ärende.
- Avsändare
-
sender@example.comÄndra i generatorn →
Exchange on-prem
Export-Csv (Exchange) Inbyggt
Get-TransportService | Get-MessageTrackingLog -WarningAction 0 -Sender "sender@example.com" `
-Start (Get-Date).AddHours(-48) -End (Get-Date) -ResultSize Unlimited |
Where-Object { $_.Sender -notmatch "HealthMailbox" } |
Select-Object Timestamp, ServerHostname, EventId, Source, Sender,
@{N="Recipients";E={$_.Recipients -join ";"}}, MessageSubject,
@{N="Status";E={$_.RecipientStatus -join " "}} |
Sort-Object Timestamp |
Export-Csv .\tracking.csv -NoTypeInformation -Encoding UTF8 -Delimiter ";" grep / awk (Postfix) Inbyggt
grep -iE "from=<sender@example.com>" /var/log/mail.log |
awk '{ print $1" "$2" "$3";"$4";"$6" "$7" "$8 }' > tracking.csv
head -5 tracking.csv Exchange Online
Export-Csv (Exchange Online) Tilläggsverktyg
Get-MessageTraceV2 -SenderAddress "sender@example.com" `
-StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date) |
Export-Csv .\trace.csv -NoTypeInformation -Encoding UTF8 -Delimiter ";" Utdata innehåller avsändare, mottagare och ämne. Kontrollera om det är godtagbart för mottagarna innan du delar det.