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