Il comando PowerShell Get-MessageTrace può aiutare gli amministratori di Office 365 a rintracciare la consegna e l’elaborazione dei messaggi di posta elettronica che potrebbero non essere stati recapitati nelle caselle di posta dei loro utenti. In questo articolo, ti mostrerò come utilizzare il comando Get-MessageTrace per gestire e analizzare le tracce dei messaggi di posta elettronica in Office 365.
Utilizzo di PowerShell Get-MessageTrace con Exchange Online
Il cmdlet Get-MessageTrace è il metodo predefinito per gli amministratori per analizzare e gestire il traffico di posta elettronica all’interno di Exchange Online. Tuttavia, questo comando PowerShell è disponibile solo negli ambienti Exchange Online (parte di Office 365).
In un ambiente Exchange in loco, il comando PowerShell Get-MessageTrace non è disponibile, e l’alternativa è il cmdlet Get-MessageTrackingLog. Il comando PowerShell Get-MessageTrace fornisce funzionalità simili al suo omologo in loco, ma ancora una volta, questo cmdlet è specificamente progettato per gli ambienti basati sul cloud di Office 365.
Tracciamento dei messaggi in Exchange in loco vs. Exchange Online: Differenze chiave
- Ambiente: Exchange in loco gestisce i server dell’organizzazione, mentre Exchange Online è un servizio basato sul cloud fornito da Microsoft.
- Integrazione: In Exchange Online, il comando Get-MessageTrace si integra senza problemi con le funzionalità di sicurezza e conformità di Office 365, mentre negli ambienti in loco, deve essere utilizzato il cmdlet Get-MessageTrackingLog.
- Autenticazione: I metodi di autenticazione e le sessioni di PowerShell sono gestiti in modo diverso a causa della natura basata sul cloud di Exchange Online.
- Scalabilità: La scalabilità di Exchange Online è progettata per gestire grandi carichi di lavoro di posta elettronica senza la necessità di aggiornamenti hardware in loco.
Connessione a Exchange Online
Ecco un breve ripasso: per utilizzare qualsiasi cmdlet di Exchange Online, è necessario stabilire una sessione remota di PowerShell con il proprio ambiente Office 365. Aprire Windows PowerShell ed eseguire il seguente comando.
Connect-ExchangeOnline

Eccolo, ci siamo, vero? Se hai bisogno di un po’ più di aiuto con i prerequisiti necessari per connetterti, leggi il mio post precedente su come connettersi a Exchange Online.
Utilizzo di Get-MessageTrace con un intervallo di date specifico
Analizzare il traffico email entro un intervallo di date specifico è un’attività amministrativa comune. Il cmdlet Get-MessageTrace consente di filtrare e rivedere i messaggi email in base alla loro data di creazione o consegna. Si prega di notare che c’è un massimo di 10 giorni di cronologia a cui questo comando PowerShell può accedere. Se è necessario indagare sul flusso email più di 10 giorni fa, sarà necessario utilizzare il sito web Exchange Admin Center ed eseguire una traccia messaggi per un periodo di tempo più lungo.
Ecco una guida passo passo su come utilizzare il cmdlet Get-MessageTrace per cercare messaggi entro un intervallo di date specifico.
Ultimi x minuti
Il parametro ‘StartDate’ è quello utilizzato per specificare l’intervallo di tempo che si desidera cercare. È possibile inserire date (fino a un massimo di 10 giorni). Tuttavia, è anche possibile includere orari. Assicurati di racchiudere i tuoi intervalli di data/ora tra virgolette (“”).
Proviamo a utilizzare il cmdlet Get-MessageTrace per cercare email negli ultimi 90 minuti:
Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 12:15 PM"

I’ll remind you that I am using my Microsoft 365 Developer tenant, so there’s not a lot of email activity occurring. If you get no output, it simply means that no email traffic records were returned. This can be completely normal.
Potresti anche utilizzare un comando PowerShell più sofisticato per tornare indietro di 45 minuti in questo modo:
Get-MessageTrace -StartDate (Get-Date).AddMinutes(-45) -EndDate (Get-Date)
Ti invierò alcune email in modo che tu possa vedere come funzionerà l’output nel tuo ambiente.
Ultime x ore
Ora, questo è importante – Exchange Online quasi certamente registrerà gli orari di consegna delle email in UTC! Quindi, devo regolare gli orari di fine e ti mostrerò come fare.
Cerchiamo indietro alle ultime 8 o 9 ore:
Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 7:00 PM"

Ecco fatto! Questo mostra un’email da un altro account al mio account principale di Amministratore Globale. Mentre scrivo questo, ho inviato l’email intorno alle 12:15 PM (CDT). Tuttavia, UTC è in anticipo di 5 ore. Questo è il motivo per cui la riga dell’email riporta la consegna alle 5:16 PM (UTC). Tieni presente questo fuso orario di differenza!
Ultimi x giorni
Anche se non ho alcuna cronologia di consegna email, posso comunque mostrarti il comando. Se desideri visualizzare TUTTE le email elaborate tramite Exchange Online, puoi semplicemente includere le date.
Get-MessageTrace -StartDate 08/05/2023 -EndDate 08/15/2023

Eccoci. Poiché ho configurato Azure AD Connect Cloud Sync in questo tenant, ricevo una email settimanale con gli aggiornamenti dello stato. L’email è stata inviata l’8/8/2023.
Ricorda, puoi cercare indietro al massimo di 10 giorni. Se hai bisogno di esplorare più indietro nel tempo, dovrai utilizzare la funzione Message Trace sul sito del Centro di Amministrazione di Exchange. Lì, puoi creare una richiesta per tornare indietro fino a 90 giorni.
Utilizzo di Get-MessageTrace per cercare per indirizzo email del mittente
Identificare i messaggi inviati da un mittente specifico può essere cruciale per vari scopi, come investigare modelli di comunicazione o affrontare preoccupazioni di sicurezza. Il cmdlet Get-MessageTrace ti consente di cercare tracce di messaggi da un determinato indirizzo email.
Ecco come utilizzare il parametro ‘-SenderAddress’ per cercare tracce di messaggi da un mittente specifico:
Get-MessageTrace -SenderAddress "[email protected]"

Fresco, ce n’è un altro. Bello e intuitivo. E, un ottimo suggerimento – se passi i risultati al cmdlet Format-List, otterrai un’eccellente sintesi dei risultati, inclusi lo stato di consegna, l’id del messaggio, l’id della traccia del messaggio, l’indirizzo del mittente, l’indirizzo del destinatario e molto altro.

Utilizzare Get-MessageTrace per cercare per indirizzo email del destinatario
Tracciare le email inviate a un destinatario specifico è un’altra attività essenziale per gli amministratori. Che tu stia gestendo la consegna delle email o assicurandoti che le informazioni sensibili raggiungano le persone giuste, la capacità di cercare per indirizzo email del destinatario è inestimabile.
Utilizziamo un esempio, qui cercheremo tutte le email consegnate a… me:
Get-MessageTrace -RecipientAddress "[email protected]"

Questo mostra 3 messaggi di posta elettronica inviati al mio indirizzo email nel tenant. E, a proposito, se NON includi parametri relativi al tempo, verranno riportate le ultime 48 ore.
Puoi utilizzare Get-MessageTrace per cercare per oggetto dell’email?
Purtroppo, non è possibile utilizzare il comando Get-MessageTrace per cercare per oggetto. Per questa esigenza, vorrai utilizzare Microsoft Purview e creare una ricerca di eDiscovery (contenuto). Puoi trovare ulteriori informazioni a riguardo nel nostro articolo precedente sull’eDiscovery.
Utilizzare Get-MessageTrace per cercare per indirizzo IP di origine e destinazione
Puoi anche utilizzare il comando Get-MessageTrace per cercare per indirizzi IP di origine e destinazione. Questo ti consente di tracciare i messaggi di posta elettronica in base agli indirizzi IP dei server mittente e ricevente. Ciò può essere particolarmente utile per diagnosticare problemi di consegna, identificare attività sospette e comprendere il percorso che i messaggi seguono attraverso la tua infrastruttura di posta elettronica.
Qui, possiamo anche utilizzare i parametri ‘-ToIP’ e ‘-FromIP’. Ad esempio, se volessimo cercare tutte le email provenienti dall’indirizzo IP di origine 44.42.2.55 e il nostro IP pubblico del firewall perimetrale per ricevere email, 101.3.2.88, potremmo utilizzare il seguente comando come esempio.
Get-MessageTrace -ToIP "4.42.2.55" -FromIP "101.3.2.88"

Di nuovo, non ho davvero contenuti fantastici da mostrarti, ma funziona. Davvero, lo fa.
Come utilizzare caratteri jolly e corrispondenze parziali
È possibile utilizzare i caratteri jolly per restringere efficientemente i risultati. Ad esempio, per motivi di sicurezza o conformità, diciamo che il vostro responsabile della conformità desidera visualizzare un registro di tutte le email processate da Gmail nelle ultime 48 ore. Un gioco da ragazzi!
Get-MessageTrace -SenderAddress *@gmail.com
Vedete, è molto facile da fare. E potete fare lo stesso per i destinatari. Se volete vedere tutte le email consegnate a tutti con un indirizzo email che inizia con la lettera “m”, provate il seguente comando:
Get-MessageTrace -RecipientAddress m*@x3v6p.onmicrosoft.com
Di nuovo, è molto semplice.
Come ottenere risultati più dettagliati con Get-MessageTraceDetail
Se state cercando di ampliare l’output del comando Get-MessageTrace, sarete lieti di sapere che il cmdlet Get-MessageTraceDetail si estende su quello e vi mostra gli eventi individuali di elaborazione e consegna per una transazione di email. Lasciate che vi mostri.
Innanzitutto, eseguirò il cmdlet Get-MessageTrace e lo indirizzerò al comando ‘Format-List’ (fl) per ottenere alcuni dettagli.
Get-MessageTrace | fl

Qui possiamo vedere alcuni dettagli su 4 messaggi di posta elettronica nelle ultime 48 ore. Quindi, ciò che possiamo fare è prendere l’ID del tracciato del messaggio e l’indirizzo del destinatario dal secondo messaggio e utilizzare il seguente comando:
Get-MessageTraceDetail -MessageTraceID e4f33ded-b67f-49b8-9a00-08db9dbb953a -RecipientAddress [email protected]

Qui possiamo vedere i 3 eventi che compongono la ricezione e la consegna del messaggio di posta elettronica da Internet nella effettiva casella di posta di Exchange di Megan. Molto dettaglio interessante qui. Questo potrebbe mostrare se un messaggio è stato consegnato direttamente nella cartella Posta indesiderata di un utente, o se è stato inoltrato automaticamente a un’altra casella di posta interna (o esterna). In generale, si tratta di informazioni molto utili per i professionisti IT e gli amministratori di Exchange.
Come esportare i risultati in un file CSV
Spesso si eseguiranno ricerche che riporteranno MOLTI record. Sicuramente vorrai utilizzare Excel per analizzare e filtrare i risultati. Per farlo, basta inviare i risultati tramite il comando Esporta-CSV, così:
Get-MessageTrace | Export-CSV AllEmailsInLast48Hours.csv

Questo ha richiesto solo un paio di secondi. Molto bello!
Come eseguire ricerche avanzate con Group-Object
Puoi utilizzare il cmdlet Group-Object per ottenere una visione più generale della consegna delle email.
Mittenti di email più attivi
Puoi utilizzare il comando seguente per trovare gli utenti che hanno inviato più email negli ultimi 7 giorni. Ti mostrerò il comando e poi te lo spiegherò.
Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property SenderAddress | Select Name,Count | Sort Count -Descending

Qui, prima raccogliamo l’elenco completo delle email elaborate negli ultimi 10 giorni. Quindi, prendiamo quel risultato e utilizziamo il comando Group-Object, utilizziamo la proprietà ‘SenderAddress’, otteniamo il conteggio (numero di email) e lo ordiniamo per quantità più alta per prima.
Destinatari che ricevono più email
In modo simile, possiamo rapidamente raccogliere gli utenti che hanno ricevuto più email negli ultimi 10 giorni eseguendo lo stesso comando e sostituendo la proprietà ‘SenderAddress’ con ‘RecipientAddress’. Vediamo cosa succede:
Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property RecipientAddress | Select Name,Count | Sort Count -Descending

I do love how powerful and simple PowerShell can be. Now, we have the information. Again, the data in this tenant is VERY low. You will undoubtedly see more robust results when you run these commands in your tenant.
Il cmdlet Get-MessageTrace offre flessibilità e controllo
Che tu debba cercare all’interno di un intervallo di date specifico, identificare tracce di messaggi da un mittente particolare o tracciare tracce di messaggi inviati a un destinatario specifico, il cmdlet Get-MessageTrace fornisce la flessibilità e il controllo di cui hai bisogno. Inoltre, la possibilità di esportare i risultati in un file CSV migliora la tua capacità di analizzare e documentare i modelli di comunicazione via email. Padroneggiando l’uso del cmdlet Get-MessageTrace, puoi gestire efficacemente il traffico email e ottenere preziosi insight sulle attività di comunicazione della tua organizzazione.