Ce script utilisable dans l’Exchange Management Shell prend en paramètre un nom de compte AD rattaché à une mailbox afin de parcourir toutes les ACL des boîtes aux lettres rattachées l’organisation. Il affiche les adresses SMTP reliées à la boîte aux lettres, puis les boîtes aux lettres auxquels le compte à accès ainsi que celles à partir desquelles il peut faire un envoi « en tant que » (Send As).
Une version commentée de ce script est disponible sur le lien ci-dessous.
param([Parameter(Mandatory=$true)][string]$Mailbox)
Write-Host "Processing queries, this might take a while!" -ForegroundColor "Yellow"
$localMbx = Get-Mailbox $Mailbox
$allMbx = Get-Mailbox -ResultSize Unlimited | select Alias
$sam = $localMbx.samAccountName
$validAcl = @()
$validSendAs = @()
foreach($Mbx in $allMbx) {
$aclMbx = Get-MailboxPermission $Mbx.Alias | where-Object { $_.User -like "*$sam" -and $_.IsInherited -eq $false -and $_.AccessRights -contains "FullAccess" -and $_.Deny -eq $false }
if($aclMbx -ne $null) {
$aclMbx | % { $validAcl+=$_.Identity }
}
$sendAsMbx = Get-RecipientPermission $Mbx.Alias | Where-Object { $_.Trustee -like $localMbx.OrganizationalUnit+"/$sam" }
if($sendAsMbx -ne $null) {
$sendAsMbx | % { $validSendAs+=$Mbx.Alias }
}
}
Write-Host "Done!" -ForegroundColor "Yellow"
if($?){
Write-Host "`r`nSMTP Addresses" -ForegroundColor "Cyan"
foreach($smtpadr in $localMbx.EmailAddresses){
if($smtpadr.ProxyAddressString.SubString(0,5) -eq "smtp:") { Write-Host $smtpadr.ProxyAddressString.SubString(5,$smtpadr.ProxyAddressString.Length-5) }
}
Write-Host "`r`nAccess granted to the following mailboxes:" -ForegroundColor "Cyan"
$validAcl | % { Write-Host $_ }
Write-Host "`r`nMailbox is allowed to send as:" -ForegroundColor "Cyan"
$validSendAs | % { Write-Host $_ }
}