Come tracciare i messaggi inviati/spediti tramite Exchange 2007/2010/2013

Track Exchange message

Come e’ possibile tracciare i messaggi inviati da e verso un server Exchange?

Con la EMS (Exchange Management Shell)!

Ecco come fare…

Per verificare i messaggi che escono da un server Exchange in un determinato range di date/ora è possibile usare la seguente sintassi nella Exchange Management Console:

get-messagetrackinglog -EventID "SEND" -Start "12/18/2013 00:01:00" -End "12/18/2013 16:11:00"| ConvertTo-Html -as Table -property Timestamp, Sender, MessageSubject, RecipientCount > ReportMail.html; ii ReportMail.html
get-messagetrackinglog -EventID "SEND" -Start "12/18/2013 00:01:00" -End "12/18/2013 16:11:00"| where-object {$_.Sender -eq "EmailDelMittente"} | ConvertTo-Html -as Table -property Timestamp, Sender, MessageSubject, RecipientCount > ReportMail.html; ii ReportMail.html

Il tipo di evento “SEND” può essere sostituito con “RECEIVE” in questo modo:

get-messagetrackinglog -EventID "RECEIVE" -Start "12/18/2013 14:31:00" -End "12/18/2013 16:11:00" | select Timestamp, Sender, {$_.Recipients}, MessageSubject, RecipientCount | ConvertTo-Html -as table > ReportMail.html; ii ReportMail.html

Ad esempio, per verificare le e-mail ricevute da un proprio utente:

get-messagetrackinglog -EventID "RECEIVE" -Start "12/18/2013 14:31:00" -End "12/18/2013 16:11:00" | where-object {$_.Recipients -like "*EmailDelDestinatarioInterno*"} | select Timestamp, Sender, {$_.Recipients}, MessageSubject, RecipientCount | ConvertTo-Html -as table > ReportMail.html; ii ReportMail.html

Mentre per controllare le e-mail spedite da nomeutente@gmail.com a mioutente@miodominio.it:

get-messagetrackinglog -EventID "RECEIVE" -Start "12/18/2013 14:31:00" -End "12/18/2013 16:11:00" | where-object {$_.Sender -eq "nomeutente@gmail.com" -and $_.Recipients -like "*mioutente@miodominio.it*"} | select Timestamp, Sender, {$_.Recipients}, MessageSubject, RecipientCount | ConvertTo-Html -as table > ReportMail18122013.html; ii ReportMail18122013.html

Volendo è possibile aggiungere un foglio CSS con il codice seguente:
(inserire il parametro -CssUri nomefile.css

table {
width: 100%;
color: #333;
font-family: Helvetica, Arial, sans-serif;
width: 640px;
border-collapse: collapse;
border-spacing: 0;
} 
td th {
border: 1px solid #CCC;
height: 60px;
}
th {
background: #F3F3F3;
font-weight: bold;
border: 1px solid #7F7F7F;
}
td {
background: #FAFAFA;
text-align: center;
font-size:12px;
border: 1px solid #7F7F7F;
}

Esempio
Voglio un file HTML per verificare tutte le email spedite ad utenti Gmail nel mese di Dicembre del 2013

get-messagetrackinglog -EventID "SEND" -Start "12/01/2013 00:00:00" -End "12/31/2013 23:59:59" |where-object {$_.Recipients -like "*gmail.com*"} | select @{Expression={$_.Timestamp};Label="Data/Ora"}, @{Expression={$_.Sender};Label="Mittente"}, @{Expression={$_.Recipients};Label="Destinatari"}, @{Expression={$_.MessageSubject};Label="Oggetto"}, @{Expression={$_.RecipientCount};Label="Numero destinatari"} | ConvertTo-html -cssuri "table.css" > ReportMail.html ; ii .\ReportMail.html

Voglio che mi venga spedito un file HTML allegato ad un email contenente tutte i messaggi ricevuti da un utente del mio dominio nelle ultime 24 ore

$allegato= $env:temp +'\Messaggi_' + (get-date).day + '-' + (get-date).month + '-' + (get-date).year +  '.html'
get-messagetrackinglog -EventID "RECEIVE" -Start (Get-Date).AddHours(-24) | where {$_.Recipients -like "*utente@dominio.com*"}| select Timestamp, Sender, MessageSubject | ConvertTo-Html -as table > $allegato; Send-MailMessage -to "destinatario-rapporto-mail@dominio.it" -from "postmaster@dominio.it"  -Subject ('Report mesaggi del ' + (get-date).day + '-' + (get-date).month + '-' + (get-date).year) -Attachments "$allegato" -
SmtpServer 127.0.0.1

Se invece volete esportare su Excel le email spedite nelle ultime 24 ore:

get-messagetrackinglog -EventID "SEND" -Start (get-date).AddHours(-24) |where-object {$_.Sender -like "*EmailDelMittente*"} | select @{Expression={$_.Timestamp};Label="Data/Ora"}, @{Expression={$_.Sender};Label="Mittente"}, @{Expression={$_.Recipients};Label="Destinatari"}, @{Expression={$_.MessageSubject};Label="Oggetto"}, @{Expression={$_.RecipientCount};Label="Numero destinatari"} | ConvertTo-CSV -delimiter "`t" > ReportMail.csv ; ii .\ReportMail.csv

ATTENZIONE
nel caso riceviate il seguente errore

Get-MessageTrackingLog : Impossibile associare il parametro 'Start'. Impossibile convertire il valore "12/18/2013 14:31:00" nel tipo "System.DateTime". Errore: "Stringa non riconosciuta come valore DateTime valido." In riga:1 car:49

Bisognerà invertire il mese ed il giorno nelle date!

Lascia un commento qui

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...