Visualizzazione post con etichetta EMS. Mostra tutti i post
Visualizzazione post con etichetta EMS. Mostra tutti i post

martedì 26 luglio 2016

MS Exchange: Elencare i Distribution Groups tramite EMS

Per elencare i gruppi di distribuzione (Distribution Group) definiti sull'infrastruttura di posta MS Exchange è possibile utilizzare il cmdlet Get-DistributionGroup tramite EMS (Exchange Management Shell).
Per default vengono visualizzati solo i primi 1000 item pertanto, se nell'infrastruttura sono presenti più di 1000 gruppi di distribuzione, è necessario utilizzare il parametro -ResultSize così come indicato di seguito.

Get-DistributionGroup -ResultSize Unlimited

Con il cmdlet  Get-DistributionGroup possiamo anche verificare se esiste un determinato gruppo di distribuzione passando il nome al cmdlet: Get-DistributionGroup <nome_gruppo_distribuzione>

Ad es. per visualizzare informazioni sul gruppo di distribuzione denominato "supporto"
Get-DistributionGroup supporto
oppure
Get-DistributionGroup -Identity supporto




Il cmdlet accetta anche caratteri wildcard
Get-DistributionGroup suppor*

Utilizzando il parametro -Anr, è possibile utilizzare una stringa parziale che verrà ricercata tra diversi attributi del gruppo di distribuzione in particolare in CommonName (CN)DisplayNameFirstNameLastName e Alias.
Il seguente comando restituisce tutti i gruppi di distribuzione in cui all'interno di uno degli attributi indicati precedentemente compare la stringa "supporto"
Get-DistributionGroup -Anr supporto 

Per visualizzare maggiori dettagli relativamente ad un gruppo di distribuzione è possibile utilizzare un cmdlet Format come ad es. Format-List
Get-DistributionGroup -Identity supporto | Format-List

lunedì 6 giugno 2016

MS Exchange: Reperire informazioni sul Default Configuration Domain Controller

Per determinare quale sia il Default Configuration Domain Controller è possibile agire tramite il registro eventi del server Exchange: dal registro Eventi->Applicazioni cercare l'evento con ID 2081.

L'informazione può essere ottenuta anche tramite EMS digitando il seguente comando:
Get-ADServerSettings | fl

L'output visualizzato dal cmdlet è simile al seguente e l'informazione di nostro interesse è indicata da DefaultConfigurationDomainController 

RunspaceId                                     : 70db61a2-743b-4d7b-9a26-76a049b449a4
DefaultGlobalCatalog                           : DC2.contoso.com
PreferredDomainControllerForDomain             : {}
DefaultConfigurationDomainController           : DC1.contoso.com
DefaultPreferredDomainControllers              : {DC2.contoso.com}
UserPreferredGlobalCatalog                     :
UserPreferredConfigurationDomainController     :
UserPreferredDomainControllers                 : {}
DefaultConfigurationDomainControllersForAllForests : {(contoso.com, DC1.contoso.com)}
DefaultGlobalCatalogsForAllForests     : {(contoso.com, DC2.contoso.com)}
RecipientViewRoot                              : contoso.com
ViewEntireForest                               : False
WriteOriginatingChangeTimestamp                : False
WriteShadowProperties                          : False
Identity                                       :
IsValid                                        : True
ObjectState                                    : New



Se si intende settare un nuovo Default Configuration Domain Controller utilizzare il cmdlet Set-ADServerSettings indicando il nome del server:
Set-ADServerSettings –PreferredServer <nome_server>
ad es.
Set-ADServerSettings –PreferredServer DC2.contoso.com

lunedì 18 gennaio 2016

MS Exchange: Eseguire la pulizia/sincronizzazione dei DAG tramite EMS in MS Exchange 2013-2016

Nell'articolo MS Exchange: Eseguire la pulizia/sincronizzazione dei DAG tramite EMS in MS Exchange 2007-2010 abbiamo visto come forzare la sincronizzazione dei DAG con le informazioni aggiornate presenti in Active Directory utilizzando il cmdlet Clean-MailboxDatabase, evitando di dover attendere l'esecuzione della manutenzione schedulata.

In MS Exchange 2013 e 2016 il problema della visualizzazione tramite GUI delle caselle disconnesse è ancora presente ma il cmdlet Clean-MailboxDatabase non esiste più: il cmdlet è stato sostituito da Update-StoreMailboxState.

A differenza di Clean-MailboxDatabase che agiva su un intero database, il cmdlet Update-StoreMailboxState ci consente di operare anche su una singola casella.

La sintassi è la seguente:
Update-StoreMailboxState -Database "DatabaseIdParameter" -Identity "StoreMailboxIdParameter" [-Confirm [SwitchParameter]] [-WhatIf [SwitchParameter]]

Dove entrambi i parametri -Database e -Identity sono obbligatori pertanto è necessario conoscere il MailboxGUID.

Per conoscere il MailboxGuid delle caselle è possibile eseguire il seguente comando da EMS:
Get-MailboxDatabase | Get-MailboxStatistics | Format-List DisplayName,MailboxGuid,Database,DisconnectReason,DisconnectDate

A questo punto, conoscendo il MailboxGUID, possiamo aggiornare le informazioni/stato di una singola mailbox tramite Update-StoreMailboxState:
Update-StoreMailboxState -Database <DatabaseIdParameter> -Identity <StoreMailboxIdParameter>
ad es.
Update-StoreMailboxState -Database DAG01 -Identity 99ee9ee9-85ee-999-e9ee-9999999e9e9e

Se intendiamo aggiornare tutte le mailbox presenti su un particolare database:
Get-MailboxStatistics -Database <nome_database> | ForEach {Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}
ad es.
Get-MailboxStatistics -Database DAG01 | ForEach {Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}

Se si intende aggiornare lo stato per tutte le mailbox disconnesse di un particolare database:
Get-MailboxStatistics -Database <nome_database> | Where {$_.DisconnectReason -ne $null } | ForEach { Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}

Per agire su tutte le caselle disconnesse dell'infrastruttura:
Get-MailboxServer | Get-MailboxDatabase | Where {$_.DisconnectReason -ne $null } | ForEach { Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$False}

mercoledì 13 gennaio 2016

MS Exchange: Eseguire la pulizia/sincronizzazione dei DAG tramite EMS in MS Exchange 2007-2010

Quando si disconnette una casella di posta questa potrebbe non essere visualizzata subito, attraverso la GUI, tra le caselle disconnesse.
In Exchange 2007-2010 è possibile utilizzare il cmdlet Clean-MailboxDatabase da EMS (Exchange Management Shell) per forzare la sincronizzazione delle informazioni presenti in Active Directory con quelle presenti nell'archivio Exchange (DAG - Database Availability Group).  

Con il cmdlet Clean-MailboxDatabase possiamo aggiornare un determinato DAG
Clean-mailboxdatabase -identity <nome_dag>
ad es. 
Clean-mailboxdatabase -identity DAG01
dove DAG01 è il nome del DAG su cui si intende eseguire la pulizia/sincronizzazione.

Possiamo aggiornare tutti i DAG di un determinato server
Get-mailboxdatabase –server <server_exchange> | Clean-mailboxdatabase
ad es.
Get-mailboxdatabase –server EXC10SRV01 | Clean-mailboxdatabase
dove EXC10SRV01 rappresenta il server su cui risiedono i DAG che si intende aggiornare.

Oppure possiamo eseguire la pulizia su tutti i DAG e su tutti i server della nostra infrastruttura tramite il comando
Get-mailboxserver | Get-mailboxdatabase | Clean-mailboxdatabase

venerdì 3 luglio 2015

MS Exchange: Disabilitare una regola di posta in arrivo impostata sulla casella tramite EMS

Tramite Exchange Management Shell (EMS) è possibile disabilitare le regole di posta in arrivo definite sulla casella utilizzando il cmdlet Disable-InboxRule:
Disable-InboxRule -Mailbox <casella_di_posta> -Identity <nome_regola>

Il parametro Mailbox, oltre all'indirizzo della casella di posta, accetta anche l'Alias, il Display Name, il Dominio\account o il Distinguished Name (DN). Il parametro Identity, invece, è indispensabile e va indicato il nome della regola che si intende disabilitare.

ad es.
Disable-InboxRule -Mailbox GLUBRANO -Identity "Mailing List"
Disable-InboxRule -Mailbox giovanni.lubrano@contoso.com -Identity "Mailing List"


Disable-InboxRule
FIG 1 - Disable-InboxRule

Per evitare che appaia ogni volta la richiesta di conferma e forzare la disabilitazione della regola bisogna utilizzare i parametri Confirm e Force
Disable-InboxRule -Mailbox <casella_di_posta> -Identity <nome_regola> -Confirm:$false -Force

ad es.
Disable-InboxRule -Mailbox GLUBRANO -Identity "Mailing List" -Confirm:$false -Force

Per disabilitare tutte le regole presenti sulla casella di posta è possibile utilizzare il piping dei cmdlet Get-InboxRuleDisable-InboxRule:

Get-InboxRule -Mailbox <casella_di_posta>| Disable-InboxRule -Confirm:$false -Force

ad es.
Get-InboxRule -Mailbox GLUBRANO | Disable-InboxRule -Confirm:$false -Force


martedì 16 giugno 2015

MS Exchange: Visualizzare i domini accettati dall'organizzazione tramite EMS

Per visualizzare l'elenco dei domini accettati all'interno dell'organizzazione utilizzando Exchange Management Shell (EMS) possiamo utilizzare il cmdlet
Get-AcceptedDomain


Visualizzare i domini accettati: Get-AcceptedDomain
FIG 1 - Visualizzare i domini accettati: Get-AcceptedDomain

Se vogliamo filtrare il risultato visualizzando solo i domini Authoritative possiamo eseguire il seguente comando
Get-AcceptedDomain | Where{$_.DomainType -eq 'Authoritative'}

martedì 21 aprile 2015

MS Exchange: Abilitare/disabilitare un gruppo di distribuzione alla ricezione da mittenti non autenticati tramite EMS

Per abilitare o disabilitare un gruppo di distribuzione (Distribution Group) alla ricezione di messaggi da parte di utenti non autenticati (come ad esempio mittenti esterni all'infrastruttura) possiamo utilizzare un cmdlet di Exchange Management Shell (EMS).
Il cmdlet da utilizzare in questo caso è Set-DistributionGroup:

Set-DistributionGroup <distribution_group> -RequireSenderAuthenticationEnabled <$TRUE o $FALSE>

ad es. supponiamo che il nostro distribution group si chiami UFFICIO1. Per abilitarlo alla ricezione di messaggi da parte di utenti non autenticati bisogna lanciare il seguente comando:
Set-DistributionGroup UFFICIO1 -RequireSenderAuthenticationEnabled $TRUE

per inibire la ricezione da parte di utenti non autenticati:
Set-DistributionGroup UFFICIO1 -RequireSenderAuthenticationEnabled $FALSE


martedì 14 aprile 2015

MS Exchange: Esportare il contenuto di una casella in un file PST tramite EMS

Tramite Exchange Management Shell (EMS) è possibile esportare l'intero contenuto di una casella di posta all'interno di un file PST. Per effettuare questa operazione possiamo utilizzare il cmdlet New-MailboxExportRequest da EMS come indicato di seguito:
New-MailboxExportRequest -Mailbox <nome_mailbox> -FilePath <file_pst_incluso_path_UNC>  -Name <nome_richiesta>

Parametri
Mailbox
Al parametro Mailbox va passato l'alias o l'smtp primario della casella che si intende esportare.

FilePath
Tramite FilePath va indicato il percorso e il nome del file in formato UNC (Universal Naming Convention).

Name
Il parametro Name è facoltativo. Tale parametro viene utilizzato per assegnare un nome alla richiesta in modo da agevolarne la successiva individuazione e verifica dello stato.


Ad es.
New-MailboxExportRequest -Mailbox GLUBRANO -FilePath \\Server01\CartellaPST\GLUBRANO.pst -Name GiovanniLubrano

Come si intuisce dal cmdlet,  New-MailboxExportRequest non fa altro che effettuare una richiesta di esportazione della casella di posta all'interno di un file PST. La richiesta viene accodata ad eventuali altre richieste pervenute e successivamente eseguita.

Per verificarne lo stato possiamo utilizzare il cmdlet Get-MailboxExportRequest che ci restituirà l'elenco e lo stato (queued, failed, completed) di tutte le richieste di esportazione. Per verificare solo lo stato della nostra richiesta possiamo utilizzare il parametro Name indicando il nome assegnato precedentemente tramite New-MailboxExportRequest:

Get-MailboxExportRequest -Name <nome_richiesta>

ad es.
Get-MailboxExportRequest -Name GiovanniLubrano
oppure
Get-MailboxExportRequest -Name GiovanniLubrano |fl
per visualizzare maggiori dettagli.

giovedì 11 dicembre 2014

MS Exchange: abilitare un utente all'invio per conto di un Distribution Group

Per abilitare un utente ad inviare per conto di un gruppo di distribuzione (Distribution Group) è necessario procedere tramite Exchange Management Shell (EMS). Exchange Management Console, infatti, non mette a disposizione alcuna opzione per fornire questo tipo di permesso.
Il cmdlet per fornire l'abilitazione Send On Behalf su un Distribution Group è: Set-DistributionGroup
Set-DistributionGroup <Distribution_Group> -GrantSendOnBehalfTo <user>

ATTENZIONE! il metodo sopra indicato va a sostituire eventuali altri utenti/gruppi abilitati in send on behalf sulla casella. 

Per visualizzare gli utenti/gruppi abilitati in Send on Behalf sul Distribution Group possiamo utilizzare il cmdlet Get-DistributionGroup
Get-DistributionGroup <Distribution_Group> | fl name,grant*

Se vogliamo aggiungere un utente/gruppo a quelli già abilitati dobbiamo procedere in altro modo.

Innanzitutto andiamo a memorizzare i campi del Distribution Group su cui vogliamo delegare un altro utente in send on behalf all'interno di una variabile tramite il seguente comando
$gruppo = Get-DistributionGroup <Distribution_Group>

quindi, in un'altra variabile, andiamo a memorizzare l'utente che vogliamo delegare
$delegati= Get-User <utente>
Nel caso volessimo delegare gli utenti appartenenti ad un gruppo utilizziamo Get-DistributionGroup al posto di Get-User
$delegati = Get-DistributionGroup <Distribution_Group_2>

A questo punto dobbiamo aggiungere al campo GrantSendOnBehalf del primo gruppo di distribuzione, il valore contenuto all'interno del campo DistinguishedName del secondo gruppo/utente in questo modo:
$gruppo.GrantSendOnBehalfTo += $delegati.DistinguishedName

Alla fine non ci resta che settare i permessi SendOnBehalf con il comando
Set-DistributionGroup <Distribution_Group> -GrantSendOnBehalfTo $gruppo.GrantSendOnBehalfTo

Rimuovere i permessi di Send On Behalf su un Distribution Group

Per rimuovere un utente o un gruppo delegato in send on behalf su un Distribution Group dobbiamo procedere in modo analogo a quanto visto precedentemente.
Leggiamo le impostazioni del Distribution Group e memorizziamole all'interno di una variabile
$gruppo = Get-DistributionGroup <Distribution_Group>
ora abbiamo bisogna di individuare il Distinguished Name dell'utente o gruppo a cui vogliamo recovare i permessi. Per farlo utilizziamo il seguente comando
$gruppo.GrantSendOnBehalfTo | fl DistinguishedName

L'output sarà simile al seguente

DistinguishedName : CN=Gruppo_1,OU=Groups,OU=Company,DC=contoso,DC=com
DistinguishedName : CN=Gruppo_2,OU=Groups,OU=Company,DC=contoso,DC=com

Copiamo il DistinguishedName che vogliamo eliminare quindi passiamolo all'istruzione successiva come mostrato di seguito
$gruppo.GrantSendOnBehalfTo -= "CN=Gruppo_2,OU=Groups,OU=Company,DC=contoso,DC=com"

Ora non ci resta che applicare le impostazioni al Distribution Group
Set-DistributionGroup <Distribution_Group> -GrantSendOnBehalfTo $gruppo.GrantSendOnBehalfTo


Se, invece, vogliamo eliminare tutti i permessi send on behalf da un distribution Group, l'operazione è molto più semplice. Basta eseguire il seguente comando:

Set-DistributionGroup <Distribution_Group> -GrantSendOnBehalfTo $null

martedì 7 ottobre 2014

MS Exchange: incrementare lo spazio riservato alle regole (RulesQuota)

A partire da Exchange Server 2007, di default, lo spazio riservato alle regole per ciascuna mailbox è di 64KB. 
Quando si raggiunge e si supera tale limite, Outlook visualizza un messaggio di avviso: Impossibile caricare uno o più regole in Microsoft Exchange. Tali regole sono state disattivare. Cause possibili: alcuni parametri non supportati o spazio insufficiente per la memorizzazione di tutte le regole


Impossibile caricare una o più regole in Microsoft Exchange
FIG 1 - Impossibile caricare una o più regole in Microsoft Exchange

Le regole, oltre a non essere caricate sul server Exchange, vengono disattivate. 

Soluzione 1:
La prima operazione da effettuare è quella di verificare, ed eventualmente riorganizzare, le regole definite tramite Outlook. Eliminare le regole non necessarie e verificare se più regole possono essere "accorpate". Se si intende cancellare tutte le regole definite sulla casella, è possibile avviare outlook con lo switch /cleanrules . Da Start->Esegui (o tramite Win+R) digitare 
Outlook /cleanrules

Soluzione 2:
Aumentare lo spazio riservato alle regole tramite Exchange Management Shell (EMS). Utilizzando il cmd-let Set-Mailbox con il parametro -RulesQuota è possibile espandere lo spazio riservato alle regole fino a 256KB. Il comando da lanciare tramite EMS è il seguente:

Set-Mailbox -identity <identity> -RulesQuota 256kb 

Per indicare a Set-Mailbox la casella sulla quale agire è possibile utilizzare l'SMTP primario, l'Alias, il Display Name, il Dominio\account o il Distinguished Name (DN).

ad es.
set-mailbox -identity GLUBRANO -RulesQuota 256kb

Se vogliamo verificare lo spazio riservato alle regole su una specifica casella di posta possiamo utilizzare il cmd-let Get-Mailbox nel seguente modo:

Get-Mailbox <identity> | fl RulesQuota

ad es.
Get-Mailbox GLUBRANO | fl RulesQuota

giovedì 11 settembre 2014

MS Exchange: Risposte automatiche (Fuori Sede) tramite EMS

Le risposte automatiche (Fuori Sede) possono essere inserite facilmente dagli utenti tramite il client di posta (ad es. Outlook) oppure tramite OWA. 

Nel caso volessimo utilizzare Exchange Management Shell (EMS) per inserire o eliminare una regola fuori sede (out of office) dobbiamo servirci del cmd-let Set-MailboxAutoReplyConfiguration
Set-MailboxAutoReplyConfiguration <nome_utente> -AutoReplyState Scheduled -StartTime <data_e_ora_attivazione> -EndTime <data_e_ora_disattivazione> -ExternalMessage "Messaggio per i mittenti esterni all'organizzazione" -InternalMessage "Messaggio per i mittenti interni all'organizzazione."
I parametri StartTime e EndTime consentono di specificare la data e l'ora in cui attivare/disattivare l'invio della risposta automatica. Le date vanno espresse in modalità anglossassone (mese/giorno/anno).

ExternalMessage e InternalMessage consento di specificare il messaggio di risposta automatica desiderato rispettivamente per gli utenti esterni e interni all'organizzazione.

AutoReplyState consente di abilitare, disabilitare, schedulare la risposta automatica sulla casella. I valori accettati dal parametro sono:
  • Enabled per abilitare all'istante la risposta automatica fino a quando non viene deliberatamente disattivata.
  • Disabled per disabilitare la risposta automatica.
  • Scheduled permette di abilitare la risposta automatica solo nell'intervallo di date specificate con StartTime e EndTime.
Ad es.
Set-MailboxAutoReplyConfiguration GLUBRANO -AutoReplyState Scheduled -StartTime "10/31/2014 07:00 AM" -EndTime "10/31/2014 11:30 pm" -ExternalMessage "Sono in ferie." -InternalMessage "Sono in ferie."
Per disattivare la risposta automatica
Set-MailboxAutoReplyConfiguration GLUBRANO -AutoReplyState Disabled

lunedì 1 settembre 2014

MS Exchange: Fornire i permessi di Revisore sulla mailbox tramite EMS


In alcuni contesti potrebbe essere necessario abilitare un utente su una casella di posta con permessi limitati, ad esempio in solo lettura.
In questi casi basta fornire i permessi di Revisore (Reviewer) all'utente sull'intera casella di posta o su una singola cartella, permettendone la visualizzazione degli elementi ma non la modifica, la cancellazione o la creazione di nuovi. L'operazione può essere effettuata da Outlook o tramite Exchange Management Shell.
In questo articolo vedremo come effettuare l'operazione tramite EMS.

Il comando utilizzato è il seguente:
Add-MailboxFolderPermission -Identity <mailbox o mailbox:\cartella> -User <utente> AccessRights Reviewer

Vediamo qualche esempio.

Per fornire i permessi su una singola cartella, il primo passo è quello di abilitare l'utente come Revisore sulla cartella Top of Information Store:
Add-MailboxFolderPermission -Identity info@contoso.com:\ -User GLUBRANO -AccessRights Reviewer

I permessi forniti sulla cartella Top of Information Store non vengono ereditati dalle sottocartelle, quindi dobbiamo procedere manualmente all'abilitazione su una specifica cartella. Ad es. per la cartella Posta in arrivo:
Add-MailboxFolderPermission -Identity "info@contoso.com:\posta in arrivo" -User GLUBRANO -AccessRights Reviewer
Nel caso in cui i nomi delle cartelle siano in inglese è necessario sostituire Posta in arrivo con inbox
Add-MailboxFolderPermission -Identity "info@contoso.com:\Inbox" -User GLUBRANO -AccessRights Reviewer

Se invece vogliamo fornire i permessi di revisore sull'intera casella di posta possiamo crearci uno script PS1 che individua le cartelle presenti sulla casella di posta e abilita l'utente come revisore su ciascuna di esse. Allo script vanno ovviamente passati la mailbox e l'utente che si intende abilitare.


param (
 [Parameter( Mandatory=$true)]
 [string]$Mailbox,

 [Parameter( Mandatory=$true)]
 [string]$User
)
Set-AdServerSettings -ViewEntireForest $true 

$exclusions = @("/Recoverable Items",
                "/Deletions",
                "/Purges",
                "/Versions"
                )

ForEach($folder in (Get-MailboxFolderStatistics $Mailbox |select folderpath))
 {
  if ($folder.FolderPath -eq "/Top of Information Store")
  {
   $foldername=$Mailbox;
  }
  else
  {
   $foldername=$Mailbox + ":" + $folder.FolderPath.Replace("/","\"); 
  }
 
  if ($exclusion -notcontains $folder.FolderPath)
  {
   if (Get-MailboxFolderPermission $foldername -User $User)
   {
    Set-MailboxFolderPermission $foldername -User $User -AccessRights Reviewer
   }
   else
   {
       Add-MailboxFolderPermission $foldername -User $User -AccessRights Reviewer
   }
  }
 

 }

Dal link di seguito è possibile scaricare il file PS1
DOWNLOAD

mercoledì 20 agosto 2014

MS Exchange: Visualizzare i Domain Controller utilizzati da Exchange utilizzando EMS

Exchange Server, tramite il servizio DSAccess (Directory Service Access), gestisce autonomamente il discovery dei domain controller presenti all'interno dell'infrastruttura. Il servizio si attiva circa ogni 15 min. e registra, nel log Applicazione, gli eventi MSExchange ADAccess con codice 2080 contenenti l'elenco dei DC trovati.


Evento MSExchange ADAccess
FIG 1 - Evento MSExchange ADAccess



In un'azienda può essere utile conoscere quali domain controller vengono utilizzati da Exchange, ad es., se vengono installati nuovi domain controller all'interno dell'infrastruttura potrebbe essere utile verificare se i server Exchange riescono a contattarli. 

Il cmdlet utile a tale scopo è Get-ExchangeServer.
Tramite Get-ExchangeServer è possibile visualizzare gli attributi di uno o tutti i server Exchange presenti all'interno dell'infrastruttura. Se ci interessa conoscere quali domain controller vengono utilizzati dai vari server Exchange presenti possiamo utilizzare il seguente comando:

Get-ExchangeServer -Status | FL Name,Current*

Il comando resitutisce i campi Name, CurrentDomainControllers, CurrentGlobalCatalogs e CurrentConfigDomainController che di seguito vedremo in dettaglio.

Name
Nome del server Exchange

CurrentDomainControllers
Indica i domain controller utilizzati per eseguire query LDAP alla porta 389

CurrentGlobalCatalogs
Indica i domain controller che hanno la funzione di Global Catalog utilizzati per eseguire query LDAP alla porta 3268

CurrentConfigDomainController
Indica il domain controller scelto per leggere/scrivere sulla Configuration Partition di Active Directory. La Configuration Partition viene modificata ogni volta che si effettua una modifica all'organizzazione di Exchange.


mercoledì 13 agosto 2014

MS Exchange: Aggiornare la rubrica offline di Exchange tramite EMS


Può capitare, ad es. a seguito di modifica o creazione di massa di mailbox, di dover forzare la rigenerazione delle rubrica (o le rubriche) offline di Exchange (rubriche che vengono scaricate dai client outlook). Tale operazione è in genere schedulata per essere eseguita ogni giorno sul server tuttavia, per via dei ritardi con cui outlook sincronizza la rubrica offline (OAB), possono verificarsi disallineamenti anche superiori alle 24 ore.

Per forzare la rigenerazione della rubrica, possiamo utilizzare il seguente cmdlet tramite Exchange Management Shell (EMS):

Get-OfflineAddressBook | Update-OfflineAddressBook

una volta rigenerata la rubrica possiamo riavviare il servizio Background file transfer con il comando

Get-ClientAccessServer | Update-FileDistributionService

Ora non resta che forzare il client Outlook a scaricare l'Offline Address Book (OAB): In Outlook 2010/2013 cliccare sul menu Invia/Ricevi selezionare Gruppi di invio/ricezione quindi cliccare su Scarica rubrica...

Per scaricare una copia completa della rubrica rimuovere la spunta alla voce Scarica modifiche successive a ultima operazione di invio/ricezione

mercoledì 30 luglio 2014

MS Exchange: Rimuovere regola di posta in arrivo impostata sulla casella tramite EMS


Nell'articolo MS Exchange: Visualizzare le regole di posta in arrivo impostate sulla casella tramite EMS abbiamo visto come visualizzare le regole definite sulla posta in arrivo di una casella tramite Exchange Management Shell.
In questo articolo, sempre tramite EMS, vedremo come rimuovere una singola regola o tutte le regole di posta in arrivo definite sulla casella utilizzando il cmdlet Remove-InBoxRule.

Per eliminare una specifica regola di posta in arrivo definita su una casella possiamo utilizzare il seguente comando:

Remove-InBoxRule -Mailbox <casella_di_posta> -identity <nome_regola> -Confirm:$FALSE -Force

Al posto della casella di posta è possibile utilizzare l'Alias, Display Name, Dominio\account o Distinguished Name (DN). I parametri -Confirm:$FALSE e -Force forzano l'eliminazione della regola senza che venga visualizzata una richiesta di conferma.

ad es.
Remove-InBoxRule -Mailbox GLUBRANO -identity TEST -Confirm:$FALSE -Force

con il comando sopra illustrato eliminiamo la regola nominata TEST dalla casella GLUBRANO

Se invece vogliamo eliminare tutte le regole di posta in arrivo definite sulla casella:
Get-InboxRule -Mailbox <casella di posta> | Remove-InboxRule

ad es.
Get-InboxRule -Mailbox GLUBRANO | Remove-InboxRule -Confirm:$FALSE -Force

martedì 29 luglio 2014

MS Exchange: Visualizzare le regole di posta in arrivo impostate sulla casella tramite EMS


Tramite Exchange Management Shell (EMS) è possibile visualizzare le regole di posta in arrivo definite sulla casella utilizzando il cmdlet Get-InboxRule:
Get-InboxRule -Mailbox <casella_di_posta>

Al posto della casella di posta è possibile utilizzare l'Alias, Display Name, Dominio\account o Distinguished Name (DN)

ad es.
Get-InboxRule -Mailbox GLUBRANO
Get-InboxRule -Mailbox giovanni.lubrano@contoso.com
Get-InboxRule
FIG 1 - Get-InboxRule


Se vogliamo maggiori dettagli sulle regole possiamo utilizzare la Format List (fl)
Get-InboxRule -Mailbox <casella_di_posta> |fl

ad es.
Get-InboxRule -Mailbox GLUBRANO

e avremo un output dettagliato sulle regole del tipo mostrato di seguito


RunspaceId                            : 871f5e59-3e43-4f9d-8a6b-bd94ede79728
Description                           : If the message:
                                            the message was received from 'TEST@contoso.com'
                                        Take the following actions:
                                            move the message to folder 'TEST'
                                            and stop processing more rules on this message
                                        
Enabled                               : True
Identity                              : giovannilubrano.com/USERS/010/GLUBRANO\397942073027723265
InError                               : False
Name                                  : TEST@contoso.com
Priority                              : 1
RuleIdentity                          : 397942073027723265
SupportedByTask                       : True
BodyContainsWords                     : {}
ExceptIfBodyContainsWords             : {}
FlaggedForAction                      : 
ExceptIfFlaggedForAction              : 
FromAddressContainsWords              : {}
ExceptIfFromAddressContainsWords      : {}
From                                  : {"TEST@contoso.com" [SMTP:TEST@contoso.com]}
ExceptIfFrom                          : 
HasAttachment                         : False
ExceptIfHasAttachment                 : False
HasClassification                     : 
ExceptIfHasClassification             : 
HeaderContainsWords                   : {}
ExceptIfHeaderContainsWords           : {}
FromSubscription                      : 
ExceptIfFromSubscription              : 
MessageTypeMatches                    : 
ExceptIfMessageTypeMatches            : 
MyNameInCcBox                         : False
ExceptIfMyNameInCcBox                 : False
MyNameInToBox                         : False
ExceptIfMyNameInToBox                 : False
MyNameInToOrCcBox                     : False
ExceptIfMyNameInToOrCcBox             : False
MyNameNotInToBox                      : False
ExceptIfMyNameNotInToBox              : False
ReceivedAfterDate                     : 
ExceptIfReceivedAfterDate             : 
ReceivedBeforeDate                    : 
ExceptIfReceivedBeforeDate            : 
RecipientAddressContainsWords         : {}
ExceptIfRecipientAddressContainsWords : {}
SentOnlyToMe                          : False
ExceptIfSentOnlyToMe                  : False
SentTo                                : 
ExceptIfSentTo                        : 
SubjectContainsWords                  : {}
ExceptIfSubjectContainsWords          : {}
SubjectOrBodyContainsWords            : {}
ExceptIfSubjectOrBodyContainsWords    : {}
WithImportance                        : 
ExceptIfWithImportance                : 
WithinSizeRangeMaximum                : 
ExceptIfWithinSizeRangeMaximum        : 
WithinSizeRangeMinimum                : 
ExceptIfWithinSizeRangeMinimum        : 
WithSensitivity                       : 
ExceptIfWithSensitivity               : 
ApplyCategory                         : {}
CopyToFolder                          : 
DeleteMessage                         : False
ForwardAsAttachmentTo                 : 
ForwardTo                             : 
MarkAsRead                            : False
MarkImportance                        : 
MoveToFolder                          : TEST
RedirectTo                            : 
SendTextMessageNotificationTo         : {}
StopProcessingRules                   : True
MailboxOwnerId                        : giovannilubrano.com/USERS/010/GLUBRANO
IsValid                               : True


lunedì 14 luglio 2014

MS Exchange: Abilitare/disabilitare un utente per l'invio per conto di un'altra casella di posta tramite EMS


All'interno di un azienda può essere utile abilitare un utente ad inviare email "per conto di" una casella di struttura condivisa. Tale abilitazione viene fornita tramite il cmdlet Set-Mailbox

Per abilitare un utente in send on behalf (invio per conto) su una casella è possibile utilizzare il seguente comando da Exchange Management Shell (EMS):
Set-Mailbox <casella_di_struttura> -GrantSendOnBehalfto @{Add= "utente"}
Ad es.
Set-Mailbox info@contoso.com -GrantSendOnBehalfto @{Add= "GLUBRANO"}

Tale comando aggiunge l'utente in send on behalf sulla casella (eventuali altri utenti delegati in send on behalf sulla stessa casella non vengono toccati). Se invece intendiamo rimuovere tutti gli altri delegati in send on behalf e abilitare solo l'utente che indichiamo, possiamo utilizzare il seguente comando:
Set-Mailbox <casella_di_struttura>  -GrantSendOnbehalfto <casella_utente>
Ad es.
Set-Mailbox info@contoso.com -GrantSendOnBehalfto giovanni.lubrano@contoso.com


Per rimuovere l'abilitazione Send On Behalf ad uno o più utenti:
Set-Mailbox <casella_di_struttura> -GrantSendOnBehalfto @{Remove= "utente"}
Ad es.
Set-Mailbox info@contoso.com -GrantSendOnBehalfto @{Remove= "GLUBRANO"}

giovedì 10 luglio 2014

MS Exchange: Settare le Impostazioni Internazionali tramite EMS

Tramite Exchange Management Shell (EMS) possiamo settare le impostazioni internazionali come formato data e ora, lingua (compresa la lingua delle cartelle) e fuso orario di una casella di posta utilizzando il cmdlet Set-MailboxRegionalConfiguration.
Set-MailboxRegionalConfiguration <identity> [-DateFormat ] [-Language ] [-LocalizeDefaultFolderName ] [-TimeFormat ] [-TimeZone ]
Per indicare a Set-MailboxRegionalConfiguration la casella sulla quale agire è possibile utilizzare l'SMTP primario, l'Alias, il Display Name, il Dominio\account o il Distinguished Name (DN).

Ad es.
Set-MailboxRegionalConfiguration GLUBRANO -DateFormat "dd/MM/yyyy" -TimeFormat "HH:mm" -TimeZone "W. Europe Standard Time"   -Language "it-IT" -LocalizeDefaultFolderName:$true

oppure nel caso volessimo settare come lingua quella inglese (Stati Uniti) possiamo utilizzare il seguente comando:
Set-MailboxRegionalConfiguration giovanni.lubrano@contoso.com -DateFormat "MM/dd/yyyy" -TimeFormat "HH:mm" -TimeZone "W. Europe Standard Time"   -Language "en-US" -LocalizeDefaultFolderName:$true
da notare che nel cambiare la lingua è necessario modificare anche il formato della data (negli USA viene indicato prima il mese poi il giorno e infine l'anno).

I parametri utilizzati nei 2 esempi sono:

DateFormat
Ci consente di specificare il formato della data.

TimeFormat
Specifica il formato dell'ora.

TimeZone
Specifica il fuso orario

Language
Permette di specificare l'impostazione della lingua della casella di posta (it-IT, en-US, ecc)

LocalizeDefaultFolderName
Specifica se rinominare le cartelle predefinite (posta in arrivo, Posta inviata, Posta eliminata, ecc) in modo che i nomi corrispondano alla lingua specificata.


Impostazioni Internazionali OWA
FIG. 1 Impostazioni Internazionali OWA

martedì 8 luglio 2014

MS Exchange: Identificare caselle di posta disconnesse tramite EMS

Per identificare le caselle di posta disabilitate nella propria organizzazione è possibile utilizzare il seguente comando da Exchange Management Shell (EMS).
Get-mailboxserver | foreach {Get-MailboxStatistics -Server $_ | where { $_.DisconnectDate -ne $null } 
| select DisplayName,ServerName,DatabaseName,DisconnectDate, DisconnectReason, MailboxGUID, LegacyDN} 
| export-csv C:\Disconnected-Mailbox_List.csv 
Con tale comando andiamo ad interrogare ciascun server di posta (Get-MailboxServer) e verifichiamo che le caselle residenti sul server non abbiano valorizzato il campo DisconnectDate. In caso contrario, se il campo DisconnectDate è valorizzato, abbiamo individuato una casella di posta disconnessa quindi, all'interno del file C:\Disconnected-Mailbox_List.csv, andiamo a salvare le informazioni relative alla casella disconnessa in particolare andiamo a salvare i seguenti campi:

DisplayName
Si tratta del Display Name della casella di posta

ServerName
Indica il nome del server dove si trova la casella disconnessa

DatabaseName
Database dove risiede la casella

DisconnectDate
Data e ora in cui la casella di posta è stata disconnessa

DisconnectReason
Indica il motivo della disconnessione. Può assumere 2 valori: SoftDeleted o Disabled

  • SoftDeleted: quando una casella di posta viene spostata da un database su MS Exchange Server 2010 SP1 a un altro database, Exchange non cancella completamente la mailbox dal database sorgente una volta completata l'operazione ma contrassegna la casella sorgente come SoftDeleted
  • Disabled: quando una casella di posta viene disconnessa o rimossa usando Disable-Mailbox o Remove-Mailbox, Exchange la contrassegna con lo stato disabled.


MailboxGUID
Identificativo univoco della mailbox

LegacyDN
Legacy Distinguished Name 

martedì 1 luglio 2014

MS Exchange: Trovare caselle di posta inutilizzate tramite EMS


In alcune realtà aziendali può essere utile verificare la presenza caselle di posta non più utilizzate sull'infrastruttura interna.
Con i seguenti comandi eseguiti tramite Exchange Management Shell (EMS) troviamo tutte le caselle di posta a cui gli utenti non accedono da almeno 90 giorni.
$mailboxes = Get-Mailbox -ResultSize Unlimited 
$mailboxes | ?{(Get-MailboxStatistics $_).LastLogonTime -and (Get-MailboxStatistics $_).LastLogonTime -le (Get-Date).AddDays(-90)} > c:\mailbox-in-disuso.txt

Come prima cosa utilizziamo il comando Get-Mailbox per individuare tutte le mailbox presenti sulla nostra infrastruttura. Il risultato viene memorizzato all'interno della variabile $mailboxes.
Nell'istruzione successiva, alla collezione di oggetti contenuti nella variabile $mailboxes, applichiamo, tramite pipe (|), un filtro con il cmdlet Where-Object (nell'istruzione abbiamo utilizzato l'alias "?") che individua tutte le caselle di posta in cui la proprietà LastLogonTime è valorizzata e l'ultimo logon risulta effettuato oltre 90 giorni fa: se la data indicata dall'ultimo logon è inferiore (antecedente) o uguale alla data di 90 giorni fa (data attuale - 90 giorni) allora abbiamo trovato una mailbox inutilizzata. 
L'output prodotto da tale filtro viene dirottato sul file mailbox-in-disuso.txt con l'istruzione >c:\mailbox-in-disuso.txt