PowerShell: estrarre un messaggio dalla quarantena, lo script

| |

Settimana che sembra essere dedicata alla PowerShell, non volutamente. Se hai già letto l’articolo originale (PowerShell: estrarre un messaggio dalla quarantena) capirai bene da solo che questo costituisce soltanto un’evoluzione del tutto naturale. Ho semplicemente preso quanto già detto per plasmare un piccolo script in grado di estrarre un messaggio dalla quarantena, permetterti l’analisi (aprendolo con Outlook) e chiedendoti se può essere sbloccato (e quindi fatto arrivare a tutti i destinatari) o meno.

Più regole dell’Exchange ospitato nel Cloud di Microsoft che serve il mio Gruppo scatenano l’invio di un’email di allerta agli amministratori del servizio in cui si fa presente che un’email in ingresso è stata bloccata in quarantena per i più disparati motivi, è poi compito del sottoscritto o dei colleghi andare a verificare se si tratta di un falso positivo o se l’Exchange e quelle regole hanno assolto correttamente al proprio dovere bloccando qualcosa di potenzialmente rischioso. In pratica questo è ciò con cui ho generalmente a che fare:

PowerShell: estrarre un messaggio dalla quarantena, lo script

Ti ho evidenziato per comodità il Message Id perché te ne ho già parlato nell’articolo originale e perché è il protagonista dello script. Quest’ultimo dovrà essere richiamato passando da prompt proprio il Message Id, il quale verrà processato, trasformato in Identity, permetterà di estrarre l’email dalla quarantena, fartela visualizzare e in seguito sarai tu a decidere il da farsi:

<#	O365 PShell Snippet:	Export Quarantined Message
    Autore (ver.-mod.):		GSolone (0.6 ult.mod. 29/10/20)
    Utilizzo:				.\ExportQuarantinedMessage.ps1 55f33732-c398-e309-46a7-25202e43ae6a@contoso.com
    Info:					https://gioxx.org/tag/o365-powershell
#>
Param([Parameter(Position=0, Mandatory=$false, ValueFromPipeline=$true)][string] $MessageID)
if (-not($MessageID.StartsWith('<'))) { $MessageID = '<' + $MessageID }
if (-not($MessageID.EndsWith('>'))) { $MessageID += '>' }
$e = Get-QuarantineMessage -MessageId $($MessageID) | Export-QuarantineMessage; $bytes = [Convert]::FromBase64String($e.eml); [IO.File]::WriteAllBytes("C:\Temp\QuarantinedMessage.eml", $bytes)
Invoke-Item C:\Temp\QuarantinedMessage.eml
Start-Sleep -s 3
Remove-Item C:\Temp\QuarantinedMessage.eml
$message = "Devo rilasciare il messaggio a tutti i destinatari?"
$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "Rilascia il messaggio."
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", "Non rilasciare il messaggio."
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice("", $message, $options, 0)
if ($result -eq 0) { 
    Get-QuarantineMessage -MessageId $($MessageID) | Release-QuarantineMessage -ReleaseToAll
}

Lo script fa parte del set che utilizzo nel quotidiano e che condivido con te e qualsiasi altro utente / amministratore tramite il mio repository GitHub “o365”. Se vuoi andare direttamente allo script (e quindi ai suoi aggiornamenti futuri) punta il browser all’indirizzo github.com/gioxx/o365/blob/master/tools/ExportQuarantinedMessage.ps1. Se hai invece domande o suggerimenti sentiti libero di usare l’area commenti a tua totale disposizione.

#StaySafe

Pillole

Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato agli articoli "a bruciapelo"!
Se vuoi leggere le altre pillole fai clic qui.

Gioxx's Wall

Se hai correzioni o suggerimenti puoi lasciare un commento nell'apposita area qui di seguito o contattarmi privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! Satispay / PayPal / Buy Me A Coffee / Patreon

Condividi l'articolo con i tuoi contatti: