Site icon Gioxx.org

Office 365: Messaggi Secondari (Exchange Online Clutter)

PowerShell Logo Gioxx.org

È stata aggiunta una nuova fantastica funzionalità che filtra i messaggi di posta elettronica con priorità bassa, per consentirti di dedicare più tempo ai messaggi più importanti. Si chiama Messaggi secondari.

Messaggi secondari rileva le tue attività passate per determinare i messaggi che probabilmente ignorerai. Quindi li sposta nella cartella Messaggi secondari. Usa la posta elettronica come al solito e Messaggi secondari capirà quali messaggi non sono importanti per te. Di tanto in tanto, Messaggi secondari sbaglia. Puoi spostare i messaggi identificati erroneamente come secondari nella cartella Posta in arrivo e Messaggi secondari lo terrà presente.

È con queste righe ben chiare che parte la mail di Microsoft inviata a tutti gli utenti Office 365 (Exchange Online) ormai tre mesi fa circa. Il rollout europeo che ha riguardato anche i tenant italiani sui server di Microsoft è cominciato tra la fine di giugno e il mese di agosto (completo) con qualche rara eccezione nei mesi di febbraio e marzo a mò di cavie selezionate manco fossimo in diretta su un gioco a premi televisivo. La funzione è valida, è stata implementata in GMail ormai una vita fa ed è sicuramente una manna dal cielo per chi tende a tenere completamente disorganizzata la sua inbox (quando basterebbe creare qualche cartella e regole automatiche, ma tant’è).

In ogni caso, ancora una volta, c’è modo di aggirare la decisione presa da Microsoft e disattivare la novità, sia lato client (utente) che server (benedizioni varie per la Powershell, come sempre).

Per partire informati, iniziate con il chiedere al server quali sono le caselle di posta con la funzione “Clutter” attiva, questo il PS1 scritto ad-hoc che vi aiuterà a creare un elenco di tutti gli utilizzatori (e occhio, impiega molto tempo perché analizza casella per casella, la base tempo è determinata dalla quantità di caselle di posta che gestite sul vostro Exchange):

#Verifica parametri da prompt
Param( 
    [Parameter(Position=0, Mandatory=$false, ValueFromPipeline=$true)] 
    [string] $CSV, 
    [Parameter(Position=1, Mandatory=$false, ValueFromPipeline=$true)] 
    [string] $Count 
)

#Main
Function Main {
    
    ""
    Write-Host "        Office 365: Get Cluttered Mailboxes" -f "green"
    Write-Host "        ------------------------------------------"
    Write-Host "          ATTENZIONE:" -f "red"
    Write-Host "          L'operazione può richiedere MOLTO tempo, dipende dal numero di utenti" -f "red"
    Write-Host "          da verificare e modificare all'interno della Directory, porta pazienza!" -f "red"
    ""
    Write-Host "-------------------------------------------------------------------------------------------------"
    ""
    Write-Host "        Premi un tasto qualsiasi per continuare..."
    [void][System.Console]::ReadKey($true)
    
    try
    {
        ""
        Write-Host "        A long time left, grab a Snickers!" -f yellow
        Write-Progress -Activity "Download dati da Exchange" -Status "Ricerco tutte le caselle registrate nel sistema..."
        
        if ([string]::IsNullOrEmpty($CSV) -eq $true) {
        #CSV non dichiarato, output a video
            ""
            Write-Host "        NESSUN CSV SPECIFICATO" -f "red"
            
            if ([string]::IsNullOrEmpty($Count) -eq $true) { 
                $Mailboxes = Get-Mailbox -ResultSize Unlimited
            } else {
                Write-Host "        Numero mailbox da analizzare: $Count" -f "green"
                ""
                $Mailboxes = Get-Mailbox -ResultSize $Count
                ""
            }
            
            Write-Host "Hanno la funzione Messaggi Secondari attiva: " -f yellow
            $Mailboxes | Foreach {
                $DN = $_.WindowsEmailAddress
                Write-Progress -Activity "Download dati da Exchange" -Status "Analizzo stato clutter di $DN" -PercentComplete (($i / $Mailboxes.count)*100)
                $StatoClutter = Get-Clutter -Identity $DN | Select -ExpandProperty isEnabled
                if ( $StatoClutter -eq "True" ) {
                    Write-Host " - " $DN
                }
            }
        } else {
        #CSV dichiarato, output in file
            ""
            Write-Host "        File CSV di output: $CSV" -f "green"
            
            if ([string]::IsNullOrEmpty($Count) -eq $true) { 
                $Mailboxes = Get-Mailbox -ResultSize Unlimited
            } else {
                Write-Host "        Numero mailbox da analizzare: $Count" -f "green"
                ""
                $Mailboxes = Get-Mailbox -ResultSize $Count
                ""
            }
            
            Write-Host "Hanno la funzione Messaggi Secondari attiva: " -f yellow
            $Mailboxes | Foreach {
                $DN = $_.WindowsEmailAddress
                Write-Progress -Activity "Download dati da Exchange" -Status "Analizzo stato clutter di $DN" -PercentComplete (($i / $Mailboxes.count)*100)
                $StatoClutter = Get-Clutter -Identity $DN | Select -ExpandProperty isEnabled
                if ( $StatoClutter -eq "True" ) {
                    Write-Host " - " $DN
                    Out-File -FilePath $CSV -InputObject "$DN" -Encoding UTF8 -append
                }
            }
            Invoke-Item $CSV
        }
        ""
    }
    catch
    {
        Write-Host "Errore nell'operazione, riprovare." -f "red"
        write-host $error[0]
        return ""
    }
    
}

# Start script
. Main

Lo potete trovate e scaricare (nel repository O365) all’indirizzo raw.githubusercontent.com/gioxx/o365/master/tools/List-ClutteredMailboxes.ps1. Volendo esportare il suo Output in CSV potrete richiamarlo passandogli la posizione completa dove salvare il file (\List-ClutteredMailboxes.ps1 C:\temp\Clutter.csv) e / o specificare il numero di caselle di posta da analizzare (.\List-ClutteredMailboxes.ps1 -Count 10), sono istruzioni che trovate anche nel blocco di Readme iniziale che sono solito inserire in ogni mio script PS1.

Microsoft suggerisce un altro metodo per arrivare allo stesso risultato:

$hash=$null;$hash=@{};$mailboxes=get-mailbox;foreach($mailbox in $mailboxes) {$hash.add($mailbox.alias,(get-clutter -identity $mailbox.alias.tostring()).isenabled)};$hash | ft

(occhio sempre al Get-Mailbox che arriva ad un massimo di 1000 risultati prodotti, se avete più di 1000 caselle dovrete sempre utilizzare Get-Mailbox -ResultSize Unlimited).

Disattivazione della funzione

Dato che stiamo per andare a toccare delle configurazioni (fino ad ora le abbiamo solo lette, senza pericolo alcuno), vi ricordo che è sempre bene evitare di lavorare in un ambiente di produzione e che occorrerebbe “giocare” con un tenant di test (o simile), soprattutto se non coperto da backup.

Per disattivare l’opzione “Messaggi secondari” (Clutter) avete ora due possibilità: lasciarlo fare all’utente seguendo questa procedura (via WebMail, nonostante nel documento si faccia riferimento a Office 2016) oppure intervenire via Powershell. Per disattivare l’opzione Clutter su una singola casella di posta vi basterà lanciare questo comando:

Set-Clutter -Identity mario.rossi@contoso.com -Enable $false

Che produrrà un risultato a video per confermare l’avvenuta modifica:

RunspaceId  : XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
IsEnabled   : False
Identity    :
IsValid     : True
ObjectState : New

Dato che l’operazione diventerebbe un po’ noiosa alla lunga (nel caso voleste farlo su tutti i vostri utenti), vi basterà concatenare un paio di operazioni in più, come suggerito da Microsoft:

Get-Mailbox -ResultSize Unlimited | ?{-not (Get-Clutter -Identity $_.Alias).IsEnabled} | %{Set-Clutter -Identity $_.Alias -Enable $false}

Che vi permetterà di raccogliere tutte le caselle di posta (Get-Mailbox -ResultSize Unlimited), verificarne lo stato di Clutter (Get-Clutter … .isEnabled) e quindi disattivarlo nel caso questo sia attivato (Set-Clutter … $false). Inutile dire che con un pelo di lavorazione in più potete andare a limitarne l’impatto a un singolo dominio gestito o magari a una sola “Company”. Dall’esigenza nasce lo script specifico, non c’è mai un limite imposto.

In caso di dubbi l’area commenti è sempre a vostra disposizione.

Riferimenti utilizzati:

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Exit mobile version