Site icon Gioxx.org

PowerShell: cercare forward verso caselle esterne al tenant

person using gray laptop computer

Photo by Mimi Thian on Unsplash

Mi è stato chiesto di cercare eventuali redirezioni di posta elettronica verso l’esterno del tenant Microsoft (verso Gmail, per questo specifico caso) partendo da un indirizzo di posta elettronica ‘personale‘ (casella di posta di un dipendente).
Per farlo, basta chiamare in causa PowerShell e cercare risposte che riguardano l’intera casella (c’è possibilità di deviare qualsiasi tipo di comunicazione in ingresso, per capirci) o specifiche e-mail che rispettano, per esempio, delle regole di Outlook / OWA stabilite dall’utilizzatore della casella (sono salvate sul database di posta stesso). Questo è in generale un comportamento che puoi evitare alla radice ma, nel caso non lo fosse, allora puoi selettivamente andare a indagare e sanare. Ti faccio una rapida panoramica.

ForwardingAddress e ForwardingSmtpAddress

Completamente documentate (entrambe) qui: learn.microsoft.com/en-us/exchange/recipients/user-mailboxes/email-forwarding, sono funzioni che servono a far fluire tutto il traffico di posta elettronica, destinato alla singola casella di posta elettronica aziendale, verso una differente destinazione. Il primo (ForwardingAddress) permette di farlo verso un’altra casella che si trova sullo stesso tenant; il secondo, invece, (ForwardingSmtpAddress) permette di farlo verso una casella di posta elettronica esterna, non controllata dal tenant. Per entrambe, potrai decidere se mantenere una copia dell’e-mail ricevuta all’interno della casella di posta elettronica originale oppure no (attributo DeliverToMailboxAndForward, NdA).

Per controllare rapidamente ambo le voci, via PowerShell, ti basta e avanza un Get-Mailbox mario.rossi@contoso.com | fl | findstr /i forward, otterrai qualcosa di simile:

ForwardingAddressWithDisplayNames                      : {}
DeliverToMailboxAndForward                             : False
ForwardingAddress                                      :
ForwardingSmtpAddress                                  :

Il fatto che ambo le voci siano vuote ti permette di capire immediatamente che non è impostata la redirezione completa delle e-mail destinate a questo indirizzo di posta elettronica analizzato.

Un secondo controllo obbligato riguarda le regole di posta elettronica della singola casella. Con un semplice $rules = Get-InboxRule -Mailbox mario.rossi@contoso.com puoi già metterti in pancia alla variabile $rules tutto quello che dovrai passare sotto lente d’ingrandimento. Non dovrai fare altro che filtrare anche in questo caso i possibili Redirect o Forward:

PS C:\> $rules | Where-Object { $_.RedirectTo -match "gmail.com" -or $_.ForwardTo -match "gmail.com" }
PS C:\> $rules | Where-Object { $_.RedirectTo -ne $null}
PS C:\> $rules | Where-Object { $_.ForwardTo -ne $null}

(sì, puoi unire seconda e terza riga in unica query, lo so)

Così facendo, otterrai in output qualsiasi regola si occupi di mandare altrove la posta elettronica aziendale (redirect e forward verso Gmail seguendo la prima riga, ma con la seconda e terza troverai tutto più in generale, senza soffermarti solo su Gmail), qualcosa che potrebbe assomigliare a questo:

Name                     Enabled Priority RuleIdentity
----                     ------- -------- ------------
FORWARD PERSONALE        True    9        3269119090454691841
no-reply@hello.com (3)   True    21       13323975389257826305
no-reply@hello.com (2)   True    32       6477882747110118913
no-reply@hello.com (1)   True    33       17094129211499937793
Al responsabile          True    34       4427591236648903681
internal@hello.com (2)   True    41       9857005470211276801

Dove nella colonna “Name” troverai il nome della regola, che potrai quindi facilmente ad analizzare con una query un minimo più precisa, perché – magari – si tratta di un qualcosa di assolutamente lecito:

$rules | Where-Object { $_.ForwardTo -ne $null } | Select-Object Name, @{Name="ForwardTo";Expression={($_.ForwardTo -split "\s")[0..1] -join " "}}

Questo non farà null’altro che dirti a chi finiranno quelle e-mail, tipo così:

Name                     ForwardTo
----                     ---------
FORWARD PERSONALE        "Gianluca Bianchi"
no-reply@hello.com (3)   "Anna Verdi"
no-reply@hello.com (2)   "Anna Verdi"
no-reply@hello.com (1)   "Gianluca Bianchi"
Al responsabile          "Anna Verdi"
internal@hello.com (2)   "Gianluca Bianchi"

A questo punto potrai capire tu e come intervenire, anche coinvolgendo l’utente. In caso di dubbi o suggerimenti per migliorare quanto fatto, come sempre, hai l’area commenti a tua totale disposizione :-)

#KeepItSimple


Immagine di copertina Mimi Thian on Unsplash

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

Exit mobile version