locked
Exchange Server: eliminazione di messaggi specifici dalle cassette postali RRS feed

  • General discussion

  • Ogni tanto, ad un amministratore di Exchange può capitare di voler eliminare certi messaggi da un gran numero di cassette postali o dalle code di trasporto Exchange. Si può trattare di mass mailing, di un messaggio inviato per caso ad un grande gruppo di distribuzione oppure a singoli destinatari, di uno dei passaggi necessari per fare la pulizia dopo un attacco di virus mass-mailing (purtroppo, l’ultimo caso è sempre più raro e di solito viene gestito dallo scanner antivirus compatibile con Exchange).

    L’eliminazione dei messaggi è già compresa nella documentazione di Exchange, comunque può essere difficile fare riferimento a più fonti, soprattuto se avete un ambiente misto con diverse versioni di Exchange Server. Questo post vuole essere un punto di riferimento unico per tutte le versioni di Exchange Server che sono supportate in questo momento – Exchange 2003, 2007 e 2010.

    Eliminazione dei messaggi attraverso la Shell in Exchange 2010 RTM ed Exchange 2007

    In Exchange 2010 RTM ed Exchange 2007, si può utilizzare il cmdlet Export-Mailbox per esportare o eliminare i messaggi. In Exchange 2010 SP1, l’esportazione di una cassetta postale è possibile con il cmdlet New-MailboxExportRequest, ma questo è l’argomento di un altro articolo. Invece, per ricercare ed eliminare i messaggi, esiste il cmdlet Search-Mailbox.

     Autorizzazioni

    In Exchange 2010, il ruolo di Mailbox Export Import RBAC deve essere assegnato all'account utilizzato per eseguire questa operazione (utilizzando Export-Mailbox in Exchange 2010 RTM o Search-Mailbox in Exchange 2010 SP1). Se il ruolo non è assegnato, non sarrà possibile di eseguire o di "vedere" il cmdlet.

    Il cmdlet “versatile” Export-Mailbox consente di esportare il contenuto della cassetta postale basato su nomi di cartelle, date e intervalli di tempo, nomi dei file allegati e molti altri filtri. Una ricerca minuziosa vi fa evitare l'eliminazione accidentale dei messaggi legittimi. Per maggiori dettagli, descrizioni di sintassi e di parametro, vi lascio alcuni link:

    L'account da cui si esportano i dati deve essere amministratore di Exchange Server, membro del gruppo locale degli Amministratori del server di destinazione, e avere autorizzazioni di accesso completo alle cassette postali assegnate nelle cassette postali di origine e di destinazione. La cassetta postale di destinazione che specificate deve essere già creata; la cartella di destinazione che specificate viene creata nella cassetta postale di destinazione una volta eseguito il comando.

     Aggiunta e rimozione delle autorizzazioni necessarie

    In questo esempio, ricupereremo tutte le cassette postali da un'organizzazione di Exchange e assegneremo l'autorizzazione di accesso completo alle cassette postali per l'account MyAdmin. Occorre eseguire questo cmdlet prima di esportare o di eliminare i messaggi dalle cassette postali degli utenti. Tenete presente che se avete bisogno di esportare o di eliminare i messaggi solo da qualche cassetta postale, potete utilizzare il cmdlet Get-Mailbox con filtri appropriati o specificare ciascuna delle cassette postali di origine.

    Get-Mailbox -ResultSize unlimited | Add-MailboxPermission -User MyAdmin -AccessRights FullAccess -InheritanceType all
    
    

    Dopo l'esportazione o l'eliminazione dei messaggi nelle cassette postali, potete rimuovere l'autorizzazione di accesso completo alle cassette postali:

    Get-Mailbox -ResultSize unlimited | Remove-MailboxPermission -User MyAdmin -AccessRights FullAccess -InheritanceType all
    
    

    Eliminazione dei messaggi

    Di seguito un paio di esempi per rimuovere i messaggi.

    Nel primo esempio, vediamo la rimozione di tutti i messaggi che hanno nell’oggetto la parola chiave "Friday Party", ricevuti tra 7 e 9 settembre dalla cartella Posta in arrivo che si trova nelle cassette postali sul Server1. I messaggi verranno eliminati dalle cassette postali e copiati nella cartella DeleteMsgs che si trova nella cassetta postale MyBackupMailbox. A questo punto, l'amministratore può esaminare questi elementi o eliminarli dalla cassetta postale MyBackupMailbox. I parametri StartDate ed EndDate devono corrispondere al formato d’impostazione di data sul server, sia che si tratta di mm-aaaa o di gg-mm-aaaa.

    Get-Mailbox -Server Server1 -ResultSize Unlimited | Export-Mailbox -SubjectKeywords "Friday Party" -IncludeFolders "\Inbox" -StartDate "09/07/2010" -EndDate "09/09/2010" -DeleteContent -TargetMailbox MyBackupMailbox -TargetFolder DeleteMsgs -Confirm:$false
    
    

    In questo esempio elimineremo da tutte le cassette postali tutti i messaggi che contengono le parole "Friday Party" nel corpo o nell’oggetto.

     A seconda delle dimensioni del vostro ambiente, è meglio fare l'estrazione/l'eliminazione in gruppi, utilizzando il cmdlet Get-Mailbox con i parametri Server o Database (Get-Mailbox -Server servername -ResultSize Unlimited o Get-Mailbox -Database DB_Name -ResultSize Unlimited), oppure specificare un filtro utilizzando il parametro Filter. Potete inoltre utilizzare il cmdlet Get-DistributionGroupMember per eseguire questa operazione per i membri di un gruppo di distribuzione.

    Get-Mailbox -ResultSize Unlimited | Export-Mailbox -ContentKeywords "Friday Party" -TargetMailbox MyBackupMailbox -TargetFolder 'Friday Party' -DeleteContent
    
    

    E’ consigliabile utilizzare sempre una cassetta postale di destinazione (specificando i parametri TargetMailbox e TargetFolder), ciò che vi permetterà di avere una copia dei dati. Potete esaminare i messaggi prima di eliminarli in modo che qualsiasi mail legittima restituita dal filtro possa essere importata nella cassetta postale del suo proprietario. Tuttavia, potete addirittura eliminare tutti i messaggi senza copiarli, per un periodo limitato di tempo, in una cassetta postale.

    Nell'esempio sottostante, vediamo come eliminare tutti i messaggi che contengono la stringa "Friday Party" nel corpo del messaggio o nell’oggetto, senza copiarli in una cassetta postale di destinazione.

    Get-Mailbox | Export-Mailbox -ContentKeywords "Friday Party" -DeleteContent
    
    

    Eliminazione dei messaggi in Exchange 2003 ed Exchange 2000 utilizzando ExMerge

    ExMerge può essere utilizzato per estrarre gli elementi di posta dalle cassette postali collocate nelle versioni precedenti di Exchange Server. Seguire i passaggi nella KB 328202 HOW TO: Rimozione di un messaggio infetto da virus da cassette postali mediante lo strumento ExMerge.exe per eliminare i messaggi indesiderati dalle cassetti postali degli utenti.

    Eliminazione dei messaggi dalle cartelle pubbliche

    Su qualsiasi versione di Exchange, potete utilizzare Outlook Object Model per rimuovere i messaggi dalle cartelle pubbliche. Lo svantaggio è quello che è più lento e quando si tratta di cartelle con decine di migliaia di elementi si blocca pure. In Exchange 2010/2007, potete utilizzare Exchange Web Services per rimuovere i messaggi dalle cartelle pubbliche. EWS

     Per maggiori dettagli, riporto i seguenti blog posts:

    Eliminazione dei messaggi dalle code di posta

    A volte, volete rimuovere i messaggi dalle code di posta per impedire il recapito di posta elettronica indesiderata. Per maggiori informazioni sulle code di posta, leggere l’articolo nella solita TechNet Library: Informazioni sulle code di trasporto.

    Eliminare i messaggi dalle code di posta Exchange 2010 RTM ed Exchange 2007

    La rimozione di un messaggio dalla coda avviene in due fasi. Inanzittutto, dobbiamo sospendere i messaggi in causa. Poi, possiamo procedere a rimuoverli dalla coda. I cmdlet sotto sono basati sulla sospensione e la rimozione dei messaggi basati sull'oggetto del messaggio.

     Exchange 2007 SP1 e SP2

    Questo comando vi consente di sospendere i messaggi con la stringa "Friday Party" dalle code di trasporto su tutti i server Hub Transport nella vostra organizzazione di Exchange:

    Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | where{$_.Subject -eq "Friday Party" -and $_.Queue -notlike "*\Submission*"} | Suspend-Message
    
    

    In Exchange 2007 RTM fino a SP2, non vi sarà possibile sospendere o rimuovere i messaggi nella coda Submission, quindi il comando non verrà eseguito per i messaggi in questa coda.

    Il comando di seguito vi consente di rimuovere tutti i messaggi sospesi in code altre che

    Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | where{$_.status -eq "suspended" -and $_.Queue -notlike "*\Submission*"} | Remove-Message -WithNDR $False
    
    

    Exchange 2010 e Exchange 2007 SP3

    Questo comando sospende i messaggi che contengono la stringa "Friday Party" nell'oggetto del messaggio in tutte le code sul server di Hub Transport.

    Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | where {$_.Subject -eq "Friday Party"} | Suspend-Message
    
    

    Il comando di seguito elimina i messaggi che contengono la stringa "Friday Party" nell'oggetto del messaggio in tutte le code sul server di Hub Transport.

    Get-TransportServer | Get-Queue | Get-Message -ResultSize unlimited | Where {$_.Subject -eq "Friday Party"} | Remove-Message -WithNDR $False
    
    

    Notate che si può eseguire il comando per un singolo server Hub Transport se viene specificato il nome del server dopo Get-TransportServer.

     Sospensione e rimozione dei messaggi da una certa coda di trasporto

     Potete anche sospendere e rimuovere i messaggi da una coda specifica. Per un elenco delle code su un server di trasporto, utilizzare il cmdlet Get-Queue.

     In questo esempio sospenderemmo i messaggi che hanno la stringa "Friday Party" nell'oggetto del messaggio, in una coda specifica.

    Get-Message -Queue "server\queue" -ResultSize unlimited | where{$_.Subject -eq "Friday Party" } | Remove-Message -WithNDR $False
    
    

    In questo esempio rimuoveremmo i messaggi che hanno la stringa "Friday Party" nell'oggetto del messaggio nella coda specifica.

    Get-Message -Queue "server\queue" -ResultSize unlimited | where{$_.Subject -eq "Friday Party" } | Remove-Message -WithNDR $False
    
    

    Cancellare le code in Exchange Server 2000 ed Exchange Server 2003 con MFCMAPI

    In Exchange 2003/2000, potete utilizzare MFCMapi per cancellare le code. Per maggiori informazioni, consultare la KB 906557 Come utilizzare l'utilità mfcmapi.exe per visualizzare e utilizzare i messaggi il SMTP TempTables in Exchange 2000 Server e in Exchange Server 2003.

    Quando avete un gran numero di messaggi nella coda, se volete limitare quanti messaggi vengono visualizzati simultanemente, dovete selezionare dalla barra degli strumenti Other > Options, e sotto Throttle Level inserire come valore un numero più facile da gestire (ad esempio, 1000).

     Prevenzione del recapito dei messaggi utilizzando le regole di trasporto

    In Exchange 2010 ed Exchange 2007, possiamo utilizzare le regole di trasporto per controllare i messaggi nella pipeline di trasporto e per fare il necessario, ad esempio eliminare un messaggio in base ai criteri specificati. Per altri dettagli, leggere l’articolo: Informazioni sulle regole di trasporto.

    certi messaggi da un gran numero di cassette postali o dalle code di trasporto Exchange. Si può trattare di mass mailing, di un messaggio inviato per caso ad un grande gruppo di distribuzione oppure a singoli destinatari, di uno dei passaggi necessari per fare la pulizia dopo un attacco di virus mass-mailing (purtroppo, l’ultimo caso è sempre più raro e di solito viene gestito dallo scanner antivirus compatibile con Exchange).ci sta anche per le cartelle di grandi dimensioni. la coda Submission.

    Sempre in Exchange 2010 ed Exchange 2007, possiamo inoltre utilizzare New Transport Rule da EMC per creare facilmente le regole di trasporto. Gli esempi seguenti vi mostrano come eseguire questa operazione attraverso la Shell. Notate la variazione di syntax tra le due versioni. (I cmdlet delle regole di trasporto sono stati semplificati in Exchange 2010, consentendo di creare o modificare una regola di trasporto tramite un comando di una singola linea.)

     Creazione di una regola di trasporto per eliminare dei messaggi in Exchange 2010

    In questo esempio, facciamo creare una regola di trasporto per eliminare i messaggi che contengono la stringa "Friday Party" nell'oggetto.

    New-TransportRule -Name "purge Friday Party messages" -Priority '0' -Enabled $true -SubjectContainsWords 'Friday Party' -DeleteMessage $true
    
    

    Creazione di una regola di trasporto per eliminare dei messaggi in Exchange 2007

    Nell'esempio sotto, facciamo creare una regola di trasporto per eliminare i messaggi che hanno nell'oggetto la stringa "Friday Party".

    $condition = Get-TransportRulePredicate SubjectContains
    
    $condition.Words = @("Friday Party")
    
    $action = Get-TransportRuleAction DeleteMessage
    
    New-TransportRule -name "purge Friday Party messages" -Conditions @($condition) -Actions @($action) -Priority 0
    
    

    Se avete un’organizzazione Exchange mista (Exchange 2007 e 2010) sarà necessario di creare una regola per ciascuna delle versioni Exchange.


    Anca Popa Follow ForumTechNetIt on Twitter

    FAQ:

    Quando utilizzare un print server

    PowerShell: Salvare/leggere le credenziali da un file

    Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie Microsoft. Il contenuto viene fornito “così come è” e non comporta alcuna responsabilità da parte di Microsoft. 

    Friday, December 3, 2010 3:08 PM