- Utilizzi possibili per i registri di monitoraggio dei messaggi
- Posizione e struttura dei registri di monitoraggio dei messaggi
- Configura il monitoraggio dei messaggi
- Cosa c’è nei registri di monitoraggio dei messaggi
- Usando il cmdlet Get-MessageTrackingLog cmdlet
I log di tracciamento dei messaggi sono una fonte preziosa di informazioni per qualsiasi amministratore di Exchange. Mentre Office 365 ha il suo message tracing, che funziona bene, Exchange on-premises memorizza molti più dati nei log, che possono servire a molti scopi.
- Possibili usi dei message tracking logs
- Posizione e struttura dei log di monitoraggio dei messaggi
- Configura il message tracking
- Cosa c’è nei log di message tracking
- I campi più importanti nei log di tracciamento dei messaggi
- Usando il cmdlet Get-MessageTrackingLog
- Come ottenere informazioni generali sul flusso di posta in Exchange Server
- Come raccogliere statistiche usando Get-MessageTracking Log
- Come rintracciare messaggi specifici usando Get-MessageTrackingLog
Possibili usi dei message tracking logs
Il buon vecchio message tracking logs può servire a diversi scopi:
- Risolvere i problemi di consegna – Se sai cosa cercare, i log di tracciamento dei messaggi possono dirti perché un messaggio non è stato consegnato, se la sua consegna è stata ritardata e altro (vedi cosa c’è nei log di tracciamento dei messaggi)
- Statistiche – I log di tracciamento dei messaggi tengono traccia di ogni singolo messaggio che è passato attraverso i tuoi server. C’è un modo abbastanza facile per ottenere alcuni dati per l’analisi – quanti messaggi sono stati elaborati, o chi ha inviato più messaggi nell’azienda.
- Forensics – Diciamo che qualcuno cancella un’email e tu non hai un backup delle email. Quel che è peggio, l’e-mail conteneva informazioni riservate ed è stata inviata alla vostra azienda concorrente. Questo è il caso in cui i log di tracciamento dei messaggi possono salvarti fornendoti alcune preziose informazioni sulle e-mail.
- Litigazione – Simile alla situazione di cui sopra. I log di tracciamento dei messaggi possono essere e sono spesso utilizzati quando sono richieste prove per scopi legali.
- Testare le regole di trasporto – Particolarmente utile quando hai configurato più regole di trasporto nella tua organizzazione. Ogni volta che una regola di trasporto viene applicata, lascia una traccia, ed è possibile utilizzare Get-MessageTrackingLog per vedere quando una regola di trasporto o una politica DLP è stata attivata.
Posizione e struttura dei log di monitoraggio dei messaggi
Cosa sono i log di monitoraggio dei messaggi? I log di monitoraggio dei messaggi sono semplici file CSV (con estensione LOG) memorizzati sul tuo server Exchange. Il percorso predefinito della loro posizione fisica è %ExchangeInstallPath%TransportRoles\Logs\MessageTracking. I log hanno una convenzione di denominazione impostata. Tieni presente che anche se puoi cambiare i nomi dei file nei log, questo ti impedirà di cercarli usando la cmdlet Get-MessageTrackingLog. Inoltre, i file con i nomi cambiati non saranno conteggiati nel limite delle dimensioni della cartella. Questo può portare a superare i limiti che hai configurato.
Per gestire lo spazio e la quantità di dati memorizzati sui server, Exchange utilizza la registrazione circolare. In altre parole, i file più vecchi vengono sovrascritti ogni volta che una cartella supera la sua dimensione massima o un file di registro raggiunge la sua età massima. Se ci si attiene alle impostazioni predefinite, l’età massima per un file di registro è di 30 giorni e la dimensione massima per un singolo file è di 10 MB. Per impostazione predefinita, tutti i registri di tracciamento dei messaggi nella directory predefinita non possono superare 1 GB. Puoi cambiare tutti questi limiti usando PowerShell (vedi configurare il message tracking per i dettagli)
Ogni giorno, viene creato un nuovo file di log di message tracking. La convenzione di denominazione è:
MSGTRKServiceyymmdd-nnnn.log dove:
- Service dipende da quale servizio ha creato un log. MSGTRK punta ai log creati dal servizio Transport; le lettere aggiuntive specificano quali altri servizi hanno generato il log. MA sta per Message Approval, MD per il servizio Mailbox Transport Delivery, MS per il servizio Mailbox Transport Submission.
- yyyymmdd specifica la data in cui il log dei messaggi è stato creato.
- nnnn è il numero del file di log. Ogni volta che un file di log raggiunge il suo limite massimo di dimensione, viene creata una copia successiva. Il valore è incrementale, e ogni giorno parte da (abbastanza logicamente) 1.
Ho menzionato alcuni valori predefiniti. Come potresti sospettare, questi valori possono essere facilmente cambiati.
Configura il message tracking
Prima di iniziare a cambiare i valori di default dei log di message tracking, assicurati di sapere cosa stai facendo. I log di tracciamento dei messaggi possono diventare piuttosto ingombranti, in termini di dimensioni. Inoltre, se decidi di raccogliere dati per un periodo indefinito, ogni ricerca su larga scala nei log di monitoraggio dei messaggi richiederà una quantità considerevole di tempo. Soprattutto se non si limitano i criteri di ricerca. Se hai intenzione di raccogliere informazioni sul tuo flusso di posta per un periodo indefinito, considera l’esportazione del contenuto dei log di tracciamento dei messaggi su file. Quindi, puoi memorizzare i dati su tutte le email, escludendo quelle che puntano, per esempio, a Mailbox di salute.
Puoi configurare i log di tracciamento dei messaggi usando il cmdlet Set-TransportService. Usando questo cmdlet, puoi:
- Abilitare o disabilitare il tracciamento dei messaggi,
- Modificare la posizione per la memorizzazione dei log di tracciamento dei messaggi,
- Modificare i limiti di dimensione e di età per i log di tracciamento dei messaggi
- E abilitare o disabilitare la registrazione degli oggetti. Una parola di spiegazione: per impostazione predefinita, i log di tracciamento dei messaggi non memorizzano alcun contenuto delle e-mail, tranne l’oggetto. Mentre avere l’oggetto nei log migliora notevolmente l’esperienza di tracciamento, alcune organizzazioni richiedono di disabilitare questa funzione per ragioni di sicurezza o di privacy.
Ecco un esempio che cambia tutti i parametri in una volta sola:
Set-TransportService Mailbox_Server -MessageTrackingLogEnabled $true -MessageTrackingLogPath "M:\logs" -MessageTrackingLogMaxFileSize 30MB -MessageTrackingLogMaxDirectorySize 2.5GB -MessageTrackingLogMaxAge 365.00:00:00
Il cmdlet di cui sopra attiva il tracciamento dei messaggi per Mailbox_Server e imposta il salvataggio dei log su M:\logs. Il limite di dimensione per un singolo file di log è cambiato a 30 MB. È per lo più un cambiamento cosmetico, che controlla il numero di file di log – maggiore è il limite, meno csv vengono creati ogni giorno. La dimensione massima della directory (prima che i file più vecchi vengano sovrascritti) è impostata a 2,5 GB, e i file di log vengono conservati per 365 giorni. L’impostazione di -MessageTrackingLogMaxAge a 00:00:00 ti permetterà di mantenere i log di tracciamento dei messaggi per un periodo indefinito. O almeno prima che venga raggiunta la dimensione della directory. Ma chi ha bisogno di risparmiare spazio in Exchange, giusto?
Cosa c’è nei log di message tracking
Ci sono alcune cose che devi sapere su come i log di message tracking memorizzano le loro voci.
- Ogni messaggio di solito genera più di una singola voce nel log di message tracking.
- Gli header nei log non sono uguali ai loro corrispondenti attributi PowerShell. Per esempio, Event-id nei file di log è EventId in PowerShell. Recipient-address nei log è uguale a recipients in PowerShell. Quando sei in dubbio su come cercare usando un particolare attributo, usa
Get-MessageTrackingLog –ResultSize 1 | FL * or Get-MessageTrackingLog | Get-Member
. Queste cmdlets ti daranno un elenco completo di attributi. - Alcuni campi sono spesso vuoti nei log di tracciamento dei messaggi. Alcuni potrebbero non includere informazioni che potresti trovare importanti o rilevanti.
I campi più importanti nei log di tracciamento dei messaggi
- Mittente, Destinatario, Oggetto del messaggio – abbastanza autoesplicativo, mostra chi ha inviato un messaggio a chi e qual era l’oggetto
- TotalBytes – mostra la dimensione di un messaggio
- Timestamp – dà informazioni su quando l’evento ha avuto luogo
- EventID – uno dei campi più importanti nei log di tracciamento dei messaggi. È la fonte primaria di informazioni su ciò che è successo al messaggio. I valori più comuni sono Receive, Send, Submit, e Fail (Questa documentazione Microsoft descrive tutti i tipi di eventi dei messaggi.)
- MessageInfo e RecipientStatus danno informazioni dettagliate su ciò che è successo al messaggio.
- MessageLatency mostra quanto tempo il server ha impiegato per elaborare l’e-mail.
La parte più importante è come usare PowerShell per ottenere i dati giusti dai log.
Usando il cmdlet Get-MessageTrackingLog
Get-MessageTrackingLog ti permette di cercare in tutti i log di monitoraggio dei messaggi. Se usi il cmdlet senza attributi aggiuntivi, restituirà fino a 1000 voci, la maggior parte delle quali saranno probabilmente collegate all’attività Health Mailboxes. Se vuoi includere più di 1000 voci con una singola cmdlet Get-MessageTrackingLog, aggiungi l’attributo -ResultSize unlimited. Tuttavia, sono abbastanza sicuro che non hai intenzione di usare la cmdlet per monitorare l’attività di Health Mailboxes. Il giusto filtraggio è la chiave del successo. Di seguito, ti presento alcune tecniche che puoi usare per filtrare i risultati.
Come ottenere informazioni generali sul flusso di posta in Exchange Server
Se vuoi avere un’idea molto generale del recente flusso di posta nella tua organizzazione, usa la sintassi descritta di seguito:
Get-MessageTrackingLog -Start (Get-Date).AddDays(-14) -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*" | ConvertTo-Html > "C:\mtl.html"
La cmdlet di cui sopra passa in rassegna gli ultimi 14 giorni dei log di monitoraggio dei messaggi. Ci si potrebbe chiedere perché utilizzare la parte Where-Object -Property Recipients -NotLike “HealthMailbox*”. Questo filtro elimina tutte le voci dedicate alle mailbox sanitarie. Se siete curiosi, potete confrontare i risultati con e senza il filtro Where-Object. Infine, l’ultimo cmdlet della pipeline esporta i risultati nel file mtl.html. Puoi anche esportare i risultati in un file CSV, usando il cmdlet ConvertTo-Csv.
Il problema è che quando converti i risultati in un file HTML o CSV, i campi contenenti informazioni sui destinatari non vengono visualizzati correttamente. Invece dei valori corretti, i campi conterranno espressioni System.String. Per risolvere questo problema, potreste aver bisogno di convogliare i risultati in un ulteriore cmdlet Select-Object. Già che ci sei, perché non limitare l’output in modo che contenga solo i campi più importanti?
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"
Se vuoi registrare tutte le consegne fallite e registrarle in un file, usa il cmdlet seguente.
Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize Unlimited –EventId Fail | Where -Property Recipients -NotLike "HealthMailbox*" >> "C:\failed deliveries.csv"
La parte migliore è che il segno >> aggiunge nuovi valori al file failed.deliveries.csv, in modo da poter eseguire periodicamente il cmdlet per registrare tutti gli eventi falliti.
Come raccogliere statistiche usando Get-MessageTracking Log
Se vuoi eseguire alcune operazioni più complicate sulle operazioni del tuo message-tracking log, salvale in una variabile.
$mtl Get-MessageTrackingLog -Start (Get-Date).AddDays(-2) –eventId Send -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*"
Il cmdlet di cui sopra memorizza informazioni su tutti i messaggi inviati negli ultimi due giorni. Per misurare quante e-mail i tuoi utenti hanno inviato in generale, basta digitare:
$mtl | measure
Per informazioni più dettagliate, è possibile utilizzare alcune cmdlet aggiuntive per raggruppare, ordinare e visualizzare i risultati. Per esempio, puoi visualizzare il conteggio delle email per utenti specifici, ordinati in modo decrescente:
$mtl | group-object -property sender | Select-Object name,count | Sort-Object count -desc
Utilizzando il trio Group-Object, Select-Object e Sort-Object, insieme al cmdlet Get-MessageTrackingLog ti permette di ottenere facilmente qualsiasi statistica sul flusso di posta che desideri.
Come rintracciare messaggi specifici usando Get-MessageTrackingLog
Infine, se vuoi controllare cosa è successo a un particolare messaggio non consegnato, puoi mostrare rapidamente tutte le informazioni più importanti pompando la ricerca in una cmdlet Format-List:
… | FL –Property Sender, Recipients, MessageSubject, RecipientStatus
Nell’esempio sopra, si può facilmente vedere che il messaggio non è stato consegnato a causa di una regola di trasporto. Qui, si è scoperto che a un certo punto, qualcuno ha lanciato una regola di flusso di posta che blocca tutti i messaggi che hanno un allegato e la parola chiave Kitten nell’oggetto.
Supponiamo che alcuni dati classificati siano trapelati dall’azienda. I log di tracciamento dei messaggi possono aiutarvi a individuare gli utenti che hanno inviato e-mail al di fuori della vostra azienda, ad esempio a una particolare azienda concorrente.
Get-MessageTrackingLog –ResultSize Unlimited | Where -Property Recipients -Like "*@competitive-company.com"
La ricerca vi permette di trovare i sospetti. Naturalmente, potrebbe essere necessario ampliare o restringere i criteri di ricerca, ma dipende da quanti dati avete. Quello che fai con i risultati non è una discussione per il blog dell’amministratore.
Altra lettura:
- Tracciamento dei messaggi in Office 365 (Exchange Online)
- Exchange 2019, 2016, 2013, 2010 mailbox backup tramite esportazione in PST (PowerShell)