Come Usare il Comando PowerShell Get-MessageTrace in Office 365

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).

Pubblicità

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

  1. Ambiente: Exchange in loco gestisce i server dell’organizzazione, mentre Exchange Online è un servizio basato sul cloud fornito da Microsoft.
  2. 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.
  3. 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.
  4. 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
Using Connect-ExchangeOnline to get connected to your tenant (Image credit: Petri/Michael Reinders)

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.

Pubblicità

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"
Using the Get-MessageTrace cmdlet to trace email message flow (Image credit: Petri/Michael Reinders)

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.

Pubblicità

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"
We need to use UTC times when computing our search window! (Image credit: Petri/Michael Reinders)

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
We can go back a maximum of 10 days with PowerShell! (Image credit: Petri/Michael Reinders)

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]"
We can use ‘SenderAddress’ to narrow things down (Image credit: Petri/Michael Reinders)

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.

We can use Format-List to get even more details (Image credit: Petri/Michael Reinders)

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]"
We can also narrow things down by recipients of email (Image credit: Petri/Michael Reinders)

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"
You can also search by IP addresses amongst the SMTP servers in question (Image credit: Petri/Michael Reinders)

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
We can get more detail with the ‘Format-List’ (fl) cmdlet (Image credit: Petri/Michael Reinders)

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]
Using Get-MessageTraceDetail to get line-by-line detail for specific email messages (Image credit: Petri/Michael Reinders)

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
Exporting output to a CSV file (Image credit: Petri/Michael Reinders)

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
We can find the most active senders with some more PowerShell piping! (Image credit: Petri/Michael Reinders)

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
Similarly, we can find the users receiving the most email (Image credit: Petri/Michael Reinders)

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.

Source:
https://petri.com/powershell-get-messagetrace/