Gli utenti non possono inviare messaggi di posta elettronica da un dispositivo mobile o da una cassetta postale condivisa in Exchange 2000 Server e in Exchange Server 2003

Sintomi

Quando si tenta di inviare un messaggio di posta elettronica Microsoft Exchange 2000 Server o Microsoft Exchange Server 2003, è Impossibile inviare il messaggio di posta elettronica. Inoltre, si verifichi uno dei seguenti messaggi di errore o uno dei seguenti rapporti di mancato recapito (NDR).

Messaggi di errore

  • Accesso negato
  • Si dispone di autorizzazioni sufficienti per eseguire questa operazione su questo oggetto. Vedere il contatto della cartella o l'amministratore di sistema.
  • Errore di messaggio non in elenco
  • MAPI_E_NO_ACCESS -2147024891
  • Impossibile inviare il messaggio di posta elettronica per l'utente nomeutente (HRESULT: -2147024891) interruzione dell'utente nomeutente. (Errore di protezione - Impossibile accedere alla cassetta postale dell'utente).
  • Risorsa non trovata
Nota: Viene visualizzato il messaggio di errore "Accesso negato" o "Risorsa non trovata" viene visualizzato da Microsoft Outlook Web Access quando si è connessi con un account delegato.

Rapporti di mancato recapito

  • Si è autorizzati a inviare il messaggio al destinatario. Per assistenza, contattare l'amministratore di sistema.
  • Impossibile inviare il messaggio utilizzando la cassetta postale. Si dispone dell'autorizzazione per inviare il messaggio per conto dell'utente specificato.

Prodotti interessati

È noto che questo problema riguarda i seguenti prodotti di terze parti:
  • Research In Motion (RIM) BlackBerry Enterprise Server (accanto)
  • Messaggistica di Good Technology GoodLink Wireless
Questo problema potrebbe riguardare anche MAPI personalizzati o programmi basati su CDO Collaborative Data Objects che inviano messaggi di posta elettronica.

Potrebbero essere interessati anche altri prodotti di terze parti che utilizzano gli account di servizio per inviare messaggi di posta elettronica. Se si esegue un prodotto di terze parti interessato da questo problema, si consiglia di contattare il fornitore per assistenza nella risoluzione di questo problema.

Tuttavia, è stato confermato che i seguenti prodotti di terze parti non sono interessati da questo problema:
  • Cisco Unity di messaggistica unificata
  • Ricerca Suite di migrazione per Exchange
  • L'utilità ExMerge di Microsoft per Exchange

Causa

Questo problema può verificarsi se una delle seguenti condizioni è vera:
  • Si dispone delle autorizzazioni per l'invio di messaggi di posta elettronica come proprietario della cassetta postale nell'account che si utilizza per inviare il messaggio di posta elettronica.
  • Si esegue Microsoft Exchange 2000 Server Service Pack 3 (SP3) con una versione del file Store.exe che è uguale o successiva alla versione 6619.4. Versione 6619.4 prima è stato reso disponibile nel seguente articolo della Microsoft Knowledge Base:
    915358 un hotfix è disponibile per modificare il comportamento dell'autorizzazione accesso completo alle cassette postali in Exchange 2000 Server

  • Si esegue Microsoft Exchange Server 2003 SP1 con una versione del file Store.exe che è uguale o successiva alla versione 7233.51.
  • È in esecuzione Exchange Server 2003 SP2 con una versione del file Store.exe che è uguale o successiva alla versione 7650.23. Versione 7650.23 è stata innanzitutto resa disponibile nel seguente articolo della Microsoft Knowledge Base:
    895949 comportamento dell'autorizzazione "Invia come" modifica in Exchange 2003

    Questa modifica non è inclusa in Exchange Server 2003 SP2. Se si esegue la versione di Exchange Server 2003 SP1 del file Store.exe che include questa modifica e l'aggiornamento a Exchange Server 2003 SP2, è necessario installare la versione SP2 di questo aggiornamento rapido per mantenere il nuovo comportamento. Questa modifica verrà inclusa in Microsoft Exchange Server 2003 SP3.

PROBLEMI DI PROTEZIONE

Le versioni di file Store.exe elencati nella sezione "Cause", prima di concedere l'autorizzazione di accesso completo alle cassette postali in modo implicito autorizzati a inviare come proprietario della cassetta postale. Ciò significava che un altro account che disponga dell'autorizzazione di accesso completo alle cassette postali poteva inviare messaggi di posta elettronica visualizzati come se sono stati inviati dal proprietario della cassetta postale.

Molti clienti di Microsoft Exchange hanno richiesto che l'autorizzazione Invia come essere separati da accesso completo alle cassette postali per le seguenti ragioni:
  • Per impedire lo spoofing di posta elettronica.
  • Per assicurarsi che di posta elettronica messaggi inviati da un delegato possono essere sempre chiaramente distinguibili dai messaggi di posta elettronica inviati dal proprietario effettivo della cassetta postale.
Tutte le nuove versioni dell'archivio di Exchange ora richiederà in modo esplicito l'autorizzazione Invia come per inviare messaggi di posta elettronica come proprietario della cassetta postale. Tuttavia, di seguito vengono elencate le tre eccezioni a questo requisito:
  • L'account del proprietario della cassetta postale non richiede autorizzazioni esplicite per la propria cassetta postale.
  • L'Account esterno associato a una cassetta postale non richiede autorizzazioni esplicite.
  • Un account delegato che dispone dell'autorizzazione di accesso completo alle cassette postali non richiede autorizzazioni esplicite.
Per ulteriori informazioni su queste eccezioni, vedere la sezione "Informazioni".

Risoluzione

Tutti gli account a cui è consentiti l'accesso parziale o completo a una cassetta postale, ad eccezione di quelli menzionati nella sezione "Cause", devono ora essere concesso esplicitamente l'autorizzazione Invia come per l'account del proprietario della cassetta postale per inviare posta elettronica come proprietario della cassetta postale. Sono inclusi gli account di servizio dell'applicazione che funzioni come l'invio di messaggi di posta elettronica per gli utenti di dispositivi mobili.

L'autorizzazione Invia come si applica all'identità di un oggetto utente di Active Directory, non al contenuto delle cassette postali memorizzate in un database. Pertanto, deve disporre dell'autorizzazione Invia come all'account del servizio per ogni oggetto utente che possiede una cassetta postale. Quando vengono inviati messaggi di posta elettronica, non vengono inviati da un database o cassetta postale specifica, ma da un utente. L'utente può essere proprietario della cassetta postale o qualsiasi altro account che disponga dell'autorizzazione Invia come.

Non è possibile concedere l'autorizzazione Invia come su un server che esegue Exchange Server o su un oggetto di database e ottenere l'effetto di concedere l'autorizzazione Invia come per tutte le cassette postali nel database. Concedere l'autorizzazione Invia come su un oggetto di database di Exchange fornisce l'autorizzazione per il database stesso. L'autorizzazione viene ereditata da tutte le cassette postali nel database. Tuttavia, esso non concedere l'autorizzazione per gli utenti che dispongono di autorizzazioni Invia come e che dispongono di cassette postali nel database.

Nota: Concedere l'autorizzazione Ricevi come su un database di Exchange è l'equivalente funzionale di concedere l'autorizzazione di accesso completo alle cassette postali per tutte le cassette postali nel database. Questo è diverso dal comportamento dell'autorizzazione Invia come.

Come concedere le autorizzazioni Invia come per un singolo conto

Per concedere in modo esplicito un altro account l'autorizzazione per l'invio come proprietario della cassetta postale, attenersi alla seguente procedura:
  1. Avviare la console di gestione di Active Directory Users and Computers.
  2. Dal menu Visualizza , assicurarsi che il
    È selezionata l'opzione Caratteristiche avanzate . Se questa opzione non è selezionata, la pagina protezione non sarà visibile per gli oggetti account utente.
  3. Aprire le proprietà dell'account utente proprietario della cassetta postale.
  4. Fare clic sulla scheda protezione .
  5. Se l'account non è già nell'elenco di utenti e gruppi, aggiungere l'account che deve avere l'autorizzazione Invia come per l'utente.
  6. Nella casella autorizzazioni fare clic su Consenti per la "Invia come" autorizzazione per l'account appropriato.
  7. Fare clic su OK.
  8. Riavviare il servizio Microsoft Exchange Information Store sul server di Exchange interessato.
Nota: Se non si riavvia il servizio Microsoft Exchange Information Store, il servizio Microsoft Exchange Information Store aggiornerà la cache delle autorizzazioni per rendere di nuovo le autorizzazioni effettive in base al valore impostato nella seguente sottochiave del Registro di sistema:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem
Nome valore: Mailbox Cache Age Limit
Tipo di valore: REG_DWORD
Radice: decimale
Dati valore: il limite di validità della cache di informazioni cassette postali in minuti.
Il valore predefinito per questa voce del Registro di sistema è 120 minuti (due ore). Se si modifica questa voce del Registro di sistema, è necessario riavviare il servizio Microsoft Exchange Information Store.

Nota: Se i valori di timeout è impostato su un valore molto basso, si potrebbero influire sulle prestazioni del server.

Come concedere l'autorizzazione Invia come per più account

Viene fornito un esempio di script alla fine di questo articolo che eseguirà la ricerca di un dominio del servizio Active Directory per gli account che dispongono dell'autorizzazione di accesso completo alle cassette postali senza l'autorizzazione Invia come per una cassetta postale. Queste sono le caratteristiche di un account di servizio o risorsa che saranno interessati da questa modifica protezione. Lo script è possibile generare un file di esportazione che è possibile rivedere, modificare e quindi reimportare per concedere l'autorizzazione Invia come per gli account che richiedono tale autorizzazione.

È inoltre possibile concedere l'autorizzazione Invia come mediante ereditarietà su ogni oggetto utente in un dominio di Active Directory o in un contenitore. Se si concede l'autorizzazione Invia come da questo metodo, è possibile concedere autorizzazioni per gli oggetti che non si intende. Inoltre, si potrebbero perdere le autorizzazioni per gli oggetti che vengono spostati dal contenitore. Pertanto, questo metodo non è consigliato e può avere implicazioni di protezione che devono essere considerate con attenzione prima di implementarlo.

Se si concede l'autorizzazione Invia come utilizzando questo metodo, gli account che hanno ereditato l'autorizzazione Invia come diventeranno invisibili allo script che viene fatto riferimento alla fine dell'articolo. Per elaborare tali account utilizzando lo script in un secondo momento, è necessario rimuovere l'autorizzazione Invia come ereditata.

Per concedere l'autorizzazione Invia come per un singolo account per tutti gli account utente in un dominio di Active Directory o un contenitore utilizzando l'ereditarietà, attenersi alla seguente procedura:
  1. Avviare la console di gestione di Active Directory Users and Computers.
  2. Dal menu Visualizza , assicurarsi che il
    È selezionata l'opzione Caratteristiche avanzate . Se questa opzione non è selezionata, la pagina protezione non sarà visibile per gli oggetti di dominio e contenitore.
  3. Aprire le proprietà del dominio o sul contenitore e quindi fare clic sulla pagina di protezione.
  4. Fare clic su Avanzate.
  5. Se l'account che richiede l'autorizzazione non è presente nell'elenco, fare clic su Aggiungie quindi selezionare il conto. In caso contrario, fare doppio clic sull'account per modificarlo.
  6. Nella casella Applica a fare clic su
    Gli oggetti utente.
  7. Concedere all'account l'autorizzazione Invia come.
  8. Fino a uscire e salvare tutte le modifiche, fare clic su OK .

Regole speciali per gli account protetti da adminSDHolder

Se si utilizza lo script per concedere l'autorizzazione Invia come per un proprietario di cassetta postale che è anche un amministratore di dominio, l'autorizzazione Invia come non sarà efficace. Si consiglia di non abilitati gli account utente che dispone di diritti di amministratore di dominio o che sono protetti da adminSDHolder.



L'oggetto adminSDHolder è un modello per gli account che dispongono di ampi diritti amministrativi di Active Directory. Per evitare un'elevazione dei privilegi, qualsiasi account protetto dall'oggetto adminSDHolder deve disporre delle autorizzazioni corrispondenti a quelli presenti nell'oggetto adminSDHolder .



Se si modificano i diritti o le autorizzazioni sull'oggetto adminSDHolder per un account protetto, un'attività in background annullerà la modifica entro alcuni minuti. Ad esempio, se si concede l'autorizzazione Invia come su un oggetto di amministratore di dominio per un account di servizio dell'applicazione, l'attività in background automaticamente revocare l'autorizzazione.



Pertanto, è possibile concedere l'autorizzazione Invia come a un account di servizio di applicazione per un account protetto dall'oggetto adminSDHolder se non si modifica l'oggetto adminSDHolder . Se si modifica l'oggetto adminSDHolder , si modificherà le autorizzazioni di accesso per tutti gli account protetti. È consigliabile modificare l'oggetto adminSDHolder solo dopo un'analisi completa delle implicazioni di sicurezza che possono verificarsi con la modifica.


Per associare una cassetta postale con un account protetto dall'oggetto adminSDHolder , attenersi alla seguente procedura:
  1. Avviare la console di gestione di Active Directory Users and Computers.
  2. Dal menu Visualizza , assicurarsi che il
    È selezionata l'opzione Caratteristiche avanzate . Se questa opzione non è selezionata, la pagina protezione non sarà visibile per gli oggetti account utente.
  3. Creare un account utente ordinario che funga da proprietario della cassetta postale.
  4. Assegnare all'account utente ordinario una cassetta postale su un server di Exchange.
  5. Aprire le proprietà del nuovo account del proprietario della cassetta postale.
  6. Nella casella Impostazioni avanzate di Exchange , concedere l'autorizzazione di accesso completo alle cassette postali all'account amministratore protetto.
  7. Nella pagina protezione concedere l'autorizzazione Invia come per l'account amministratore protetto.
  8. Fare clic su OK per chiudere le proprietà dell'oggetto proprietario della cassetta postale.
  9. Destro oggetto account del proprietario di cassetta postale e quindi fare clic su Disabilita Account per disabilitare l'account per tutti gli accessi.
Per ulteriori informazioni sugli account protetti da adminSDHolder, fare clic sui numeri per visualizzare gli articoli della Microsoft Knowledge Base riportato di seguito:

907434 di "Invia come" diritto viene rimosso da un oggetto utente dopo aver configurato il diritto "Invia come" Active Directory Users e computer snap-in Exchange Server

318180 il thread AdminSDHolder influisce sui membri transitivi dei gruppi di distribuzione

817433 le autorizzazioni delegate non sono disponibili e l'ereditarietà viene disattivata automaticamente

306398 oggetto AdminSDHolder influisce sulla delega del controllo per gli account amministratore precedenti

Attività speciali per BlackBerry Enterprise Server

Attività 1: Assicurarsi che BlackBerry Enterprise Server è in esecuzione come account univoco e separato

Assicurarsi che BlackBerry Enterprise Server è in esecuzione con un account separato creato appositamente per le attività amministrative. Per impostazione predefinita, questo account è denominato "BESAdmin".

Se si dispone di un account separato per l'amministrazione di BlackBerry Enterprise Server, passare all'attività 2.


Se non si dispone di un conto separato, creare un conto separato. Quindi, è possibile utilizzare questo account per eseguire attività amministrative. Per istruzioni su come eseguire questa operazione se si esegue BlackBerry Enterprise Server 4.0 o BlackBerry Enterprise Server 4.1, vedere la Guida all'installazione di BlackBerry Enterprise Server.  Per istruzioni su come effettuare questa operazione se si esegue BlackBerry Enterprise Server 3.6, vedere la Guida introduttiva installazione di BlackBerry Enterprise Server 2000/2003.

Attività 2: Assicurarsi che l'account del servizio BlackBerry Enterprise Server disponga delle autorizzazioni appropriate

Verificare che l'account del servizio BlackBerry Enterprise Server disponga delle autorizzazioni appropriate.

Nota: Se l'account in un dominio, assicurarsi che l'account è un membro del gruppo solo gli utenti del dominio. Su un controller di dominio, l'account deve essere membro del gruppo Administrators predefinito.
  1. In BlackBerry Enterprise Server, procedere come segue:
    1. Assicurarsi che l'account è un membro del gruppo Administrators locale.
    2. Assegnare le autorizzazioni di "Accesso locale" e "Accesso come un servizio" all'account.
  2. Autorizzazioni di amministratore solo visualizzazione di Exchange concedere il livello di gruppo amministrativo. A tale scopo, attenersi alla seguente procedura:
    1. In Gestore di sistema di Exchange, fare il nome del primo gruppo amministrativo di Exchange Server e quindi scegliere Delega controllo.
    2. Si noti che l'account del servizio BlackBerry Enterprise Server è elencato con il ruolo di amministratore di Exchange solo visualizzazione.
  3. Concedere "Invia come", "Ricevi come" e il livello di autorizzazioni "Amministrazione dell'archivio informazioni" sul server per ogni server di Exchange. A tale scopo, attenersi alla seguente procedura:
    1. Nel Gestore di sistema di Exchange, fare il nome del primo gruppo amministrativo di Exchange Server e quindi espandere il
      Gruppo di server .
    2. Mouse di un server di Exchange, fare clic su
      Le proprietàe quindi fare clic su
      Protezione.
    3. Nel riquadro superiore, selezionare l'account del servizio BlackBerry Enterprise Server. Nel riquadro inferiore, assicurarsi che il "Invia come", "Ricevi come" e "Amministrazione dell'archivio informazioni" autorizzazioni siano impostati su
      Consenti.
    4. Ripetere i passaggi 3b e 3c per ogni server di Exchange.
  4. Concedere l'autorizzazione "Invia come", "Ricevi come" e "Amministrazione dell'archivio informazioni" autorizzazioni per l'archivio delle cassette postali. A tale scopo, attenersi alla seguente procedura:
    1. Nel Gestore di sistema di Exchange, fare il nome del primo gruppo amministrativo di Exchange e quindi espandere il
      Gruppo di server .
    2. Espandere primo gruppo archivio cassette postali, destro di ogni archivio delle cassette postali, fare clic su proprietàe quindi fare clic su
      Protezione.
    3. Nel riquadro superiore, selezionare l'account del servizio BlackBerry Enterprise Server. Nel riquadro inferiore, assicurarsi che il "Invia come", "Ricevi come" e "Amministrazione dell'archivio informazioni" autorizzazioni siano impostati su
      Consenti.
    4. Ripetere i passaggi 4b e 4c per ogni archivio di cassette postali in ogni server di Exchange.
  5. Nello snap-in Active Directory Users and Computers, attenersi alla seguente procedura:
    1. Destro l'utente che si desidera aggiungere autorizzazioni per e quindi scegliere proprietà.
    2. Nella scheda protezione , aggiungere l'account del servizio BlackBerry Enterprise Server e quindi fare clic per selezionare il
      Invia come casella di controllo.
Se non è in esecuzione Exchange Server 2003, vedere attività 3.

Attività 3: Cancellare la cache in BlackBerry Enterprise Server

Per cancellare la cache delle autorizzazioni nell'archivio di Exchange, riavviare i servizi correlati a Blackberry e quindi riavviare Microsoft Exchange Information Store. Dopo aver riavviato l'archivio di Exchange, è necessario riavviare i servizi correlati a RIM Blackberry per concedere all'account "BESAdmin" appena aggiunto autorizzazione Invia come per l'archivio di Exchange.

Ulteriori informazioni

Autorizzazioni di accesso della cassetta postale e cartella di Exchange vengono divisi tra i database di Active Directory e Microsoft Exchange. Entrambi i tipi di autorizzazioni vengono impostati nella console di gestione utenti di Active Directory, tuttavia, autorizzazioni differenti vengono memorizzate in due percorsi distinti.

In genere, se un'autorizzazione viene impostata nella pagina protezione per un oggetto, è un'autorizzazione di Active Directory. Se è impostato nella pagina avanzate della cassetta postale di Exchange, è un'autorizzazione di database di Exchange.

L'attributo di Active Directory msExchMailboxSecurityDescriptor è una copia di backup di un sottoinsieme dei diritti di cassetta postale efficace. Viene utilizzata internamente da Exchange per diversi scopi. Inoltre, l'attributo msExchMailboxSecurityDescriptor viene aggiornato per corrispondere diritti effettivi correnti se gli amministratori utilizzano interfacce supportate per assegnare i diritti. Tuttavia, se l'attributo msExchMailboxSecurityDescriptor viene modificato direttamente da un amministratore, le modifiche non saranno propagati all'archivio di Exchange e le modifiche non avranno effetto. Non è garantito per essere sincronizzato con i diritti delle cassette postali. Utilizzare l'attributo msExchMailboxSecurityDescriptor non per leggere o scrivere autorizzazioni cassetta postale.
Per ulteriori informazioni, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:

310866 come impostare i diritti di cassetta postale di Exchange Server 2003 ed Exchange 2000 Server su una cassetta postale esistente nell'archivio informazioni


L'autorizzazione di accesso completo alle cassette postali è un'autorizzazione dell'archivio di database di Exchange. L'autorizzazione Invia come è un'autorizzazione di Active Directory. Prima di Store.exe di Exchange le modifiche ai file che sono descritti in questo articolo, il sistema di Exchange non inviava l'impostazione dell'autorizzazione Invia come se il mittente disponeva già dell'autorizzazione di accesso completo alle cassette postali.

Inclusione dell'autorizzazione Invia come con accesso completo alle cassette postali ha consentito agli amministratori di server Exchange di concedere a se stessi autorizzazioni Invia come effettive per qualsiasi cassetta postale su un server che amministrano. Separando l'autorizzazione Invia come dall'autorizzazione accesso completo alle cassette postali, gli amministratori di Active Directory possono ora bloccare questo processo perché l'autorizzazione Invia come è un'autorizzazione di Active Directory e non un'autorizzazione dell'archivio di Exchange. Di conseguenza, il processo non è necessariamente sotto il controllo degli amministratori di Exchange.

Proprietari di cassette postali

Un proprietario della cassetta postale è definito come account utente di Active Directory il cui attributo msExchMailboxGUID contiene l'identificatore univoco globale (GUID) per una determinata cassetta postale. Un solo account di un'intera foresta può essere caratterizzato dal GUID di una determinata cassetta postale. Se si tenta di impostare un secondo proprietario con lo stesso GUID, Active Directory verrà accettata la modifica con un errore.


Quando abilitati un account o quando ci si connette una cassetta postale disconnessa a un account di Active Directory, la cassetta postale GUID viene impostato automaticamente su tale account. Raramente è necessario o consigliabile per gli amministratori di impostare direttamente i GUID di cassetta postale.

Account esterni associati

Una configurazione comune, Exchange è installato in una foresta di risorse. Una foresta di risorse è un insieme di strutture in una foresta diversa dagli account utente che disporranno di cassette postali nel sistema. Ciò presenta un problema perché l'attributo msExchMailboxGUID può essere impostata solo su oggetti nella stessa foresta del server di Exchange.

Per risolvere questo problema è per abilitare un account della foresta di Exchange server. E quindi collegare l'account di cassetta postale a un altro insieme di strutture o in un dominio Microsoft Windows NT 4. Tale scopo, è possibile concedere l'autorizzazione Account esterno associato. Un unico account può disporre dell'autorizzazione Account esterno associato. L'account selezionato deve essere di una foresta diversa.

Quando si imposta l'autorizzazione Account esterno associato, si scrive il valore del SID per l'account esterno per l'attributo msExchMasterAccountSID del proprietario della cassetta postale. Pertanto, questo non rappresenta un'autorizzazione, ma un modo pratico per controllare il valore dell'attributo msExchMasterAccountSID . Dopo l' attributo msExchMasterAccountSID attributo è stato impostato, l'account esterno a cui appartiene il SID verrà concesso l'accesso di Exchange come se fosse l'account del proprietario effettivo della cassetta postale.

Nota: Questo vale solo per accedere a Exchange, non a tutti gli accessi di Active Directory. Inoltre, è necessario contrassegnare l'account del proprietario della cassetta postale come disattivato per gli accessi dopo aver impostato l'autorizzazione Account esterno associato in modo che tutte le autorizzazioni funzionino come previsto.

Per ulteriori informazioni, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:

300456 autorizzazioni client e le deleghe non persistono dopo l'assegnazione in Exchange 2000

Scenari di delega

Un delegato è un utente a cui è stato concesso l'accesso parziale a un'altra cassetta postale e il diritto di inviare messaggi di posta elettronica per conto di proprietario della cassetta postale. Uno scenario di delega comune consiste nel concedere l'accesso delegato a un Assistente amministrativo per il calendario di un dirigente. Il delegato può in genere leggere e aggiornare il calendario. Inoltre, il delegato può rispondere a messaggi di posta elettronica per conto del dirigente.

Per consentire l'invio per conto di e delegare le autorizzazioni, è possibile utilizzare le due seguenti interfacce:
  • Sull'oggetto proprietario di cassetta postale, concedere l'autorizzazione Invia per conto di generali di Exchange nella finestra di dialogo.
  • In Microsoft Office Outlook, utilizzare la finestra di dialogo di delegati .
Entrambi questi metodi, impostano l'attributo publicDelegates della cassetta postale. Tutti gli utenti che sono elencati in questo attributo dispongono dell'autorizzazione Invia per conto del proprietario della cassetta postale. Quando tali delegati inviano un messaggio di posta elettronica contenente il nome del proprietario nella casella da , il messaggio di posta elettronica viene inviato dal delegato e non da o come proprietario della cassetta postale. Casella da del messaggio di posta elettronica viene visualizzato il seguente valore:
<Nome del delegato> per conto di <Proprietario della cassetta postale>
In alcuni casi, potrebbe essere Impossibile impostare l'attributo publicDelegates in Outlook.
Per ulteriori informazioni, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:

329622 l'autorizzazione "Invia come" non è assegnato a un utente dopo la delega dell'accesso in Outlook


Se si concede l'accesso delegati alla cassetta postale, il delegato possa utilizzare l'autorizzazione Invia per conto anche se non si concede accesso a una qualsiasi delle cartelle della cassetta postale. L'autorizzazione fondamentale che dispone di un delegato è l'autorizzazione Invia per conto. Autorizzazioni di accesso delle cartelle della cassetta postale sono distinte e devono essere concesse in aggiunta alle autorizzazioni di delega. In genere, i delegati utilizzerà Outlook per accedere alle singole cartelle a cui si dispongono di autorizzazione. A tale scopo, fare clic su Apri dal menu File in Outlook e quindi fare clic su cartella di altro utente.

In alternativa, i delegati possono aprire la cassetta postale inserendola come cassetta postale aggiuntiva nella
Scheda Avanzate della loro profili di Outlook. Questo metodo, la cassetta postale vengono visualizzati nella struttura di cartelle di Outlook del delegato. Inoltre, questo metodo consente l'accesso a tutte le cartelle nella cassetta postale per il quale un delegato disponga delle autorizzazioni.

È il delegato a volte l'autorizzazione Invia per conto e in altri casi l'autorizzazione Invia come. Per configurare un delegato con queste due autorizzazioni, attenersi alla seguente procedura:
  • Concedere al delegato l'autorizzazione di accesso completo alle cassette postali. Questo non può essere eseguito tramite Outlook. Al contrario, un amministratore di Active Directory deve farlo l'account del proprietario di cassetta postale. Anche se si concedono autorizzazioni di proprietario su tutte le cartelle nella cassetta postale, che non è la stessa autorizzazione di accesso completo alle cassette postali.
  • Non concedere al delegato l'autorizzazione Invia come. Se si concessa al delegato l'autorizzazione Invia come, tutti i messaggi di posta elettronica inviati dal delegato verranno eseguiti con l'autorizzazione Invia come. Il delegato non sarà possibile utilizzare l'autorizzazione Invia per conto.
In questo scenario, i delegati che si desidera utilizzare l'autorizzazione Invia per conto devono accedere alle proprie cassette postali. Se i delegati rispondono o inoltrano un messaggio di posta elettronica che è già in una cartella, verrà automaticamente inviato il messaggio di posta elettronica per conto del proprietario. Se creano un nuovo messaggio di posta elettronica per conto dell'utente, è necessario immettere il nome nella casella da del messaggio di posta elettronica da inviare per conto dell'utente.

Indipendentemente dal fatto che i delegati aperto le cartelle o l'intera cassetta postale come cassetta postale secondaria, tutti i messaggi di posta elettronica inviati da utilizzerà l'autorizzazione Invia per conto, purché la propria cassetta postale sia la cassetta postale principale per il profilo di Outlook corrente.

Quando i delegati desiderano inviare un messaggio di posta elettronica come si, dovrebbe accedono alla cassetta postale utilizzando un profilo di Outlook distinto che viene visualizzata solo la cassetta postale. Messaggi di posta elettronica inviati dai delegati mentre sono connessi a questo profilo verranno automaticamente inviati da è.

Individuazione degli account che dispongono dell'autorizzazione di accesso completo alle cassette postali senza l'autorizzazione Invia come

Lo script di esempio descritto in questa sezione è possibile cercare un dominio di Active Directory contemporaneamente per gli account utente, quali l'autorizzazione di accesso completo alle cassette postali è stata concessa a una cassetta postale senza l'autorizzazione Invia come.


Importante Prima di modificare le autorizzazioni, vedere la sezione "informazioni sui proprietari di cassette postali con delegati".

Lo script ha tre modalità seguenti:
  • Esportare Si può creare un elenco degli utenti che hanno accesso completo alle cassette postali ma non dell'autorizzazione Invia come. È quindi possibile esaminare questo elenco in blocco note o un altro editor per rimuovere gli account che si desidera disporre dell'autorizzazione Invia come.
  • Importazione È possibile importare un elenco di utenti che dispongono dell'autorizzazione di accesso completo alla cassetta postale alla quale deve anche essere concessa l'autorizzazione Invia come. Nota non è possibile utilizzare questo script per concedere l'accesso completo alle cassette postali sia dell'autorizzazione Invia come. Ogni account deve già disporre dell'autorizzazione di accesso completo alle cassette postali sia stata concessa l'autorizzazione Invia come.
  • SetAll È possibile concedere l'autorizzazione Invia come per tutti gli utenti del dominio che già dispongono dell'autorizzazione di accesso completo alle cassette postali per una determinata cassetta postale. Verrà generato un file di registro nello stesso formato del file di esportazione. Questa operazione equivale all'esecuzione di modalità di esportazione e importazione senza modificare il file di esportazione.
Nota: In questo script non è alcuna funzione di annullamento.

Autorizzazioni necessarie per lo script

Mentre si è connessi con un account amministrativo della stessa foresta che gli account di proprietario della cassetta postale, è necessario eseguire lo script. Lo script potrebbe non funzionare con un account che dispone di autorizzazioni amministrative tra insiemi di strutture. Lo script inoltre potrebbe non funzionare quando viene eseguito da una workstation che fa parte di una foresta diversa da quella a cui appartengono gli account di proprietario della cassetta postale.

Date queste condizioni, è possibile eseguire lo script con più account amministrativi in un'unica sessione di accesso utilizzando il comando RunAs.exe . Questa procedura può essere utile se si sono state segmentate autorizzazioni Active Directory ed Exchange Server e non si dispone di nessun singolo account che possono amministrare tutti i server di Exchange o tutti i domini di Active Directory. È possibile aprire un prompt dei comandi eseguire lo script come singoli account amministrativi. Tenere presente quanto segue:
RunAs.exe /user:domain\account CMD.EXE
Nota: Evitare di eseguire più copie dello script contemporaneamente nello stesso dominio.

I campi nel file di esportazione sono come indicato di seguito. I campi sono descritti nell'ordine in cui sono presentati nel file di esportazione.
  • Nome visualizzato dell'account del proprietario di cassetta postale

    Può esistere più di una riga nel file di output che elenca lo stesso proprietario di cassetta postale. Questo comportamento si verifica quando più altri account dispongono di autorizzazioni di accesso completo alle cassette postali per la stessa cassetta postale.
  • Nome di dominio e di accesso di un account che dispone delle autorizzazioni accesso completo alle cassette postali ma non dell'autorizzazione Invia come

    Quando l'account ha accesso a più cassette postali, lo stesso account apparire più volte nel file di esportazione. Questo problema può verificarsi per un account di servizio applicativo o per una persona che gestisce più cassette postali delle risorse.
  • Nome visualizzato di un account che dispone dell'autorizzazione di accesso completo alle cassette postali ma non dell'autorizzazione Invia come

    Questo campo viene fornito in aggiunta al campo Nome di accessoper facilitare l'identificazione dell'account.
  • Stato delegato del proprietario della cassetta postale

    Se il proprietario della cassetta postale dispone di delegati, il valore del campo è
    Dispone di delegati. Se il proprietario della cassetta postale non dispone di delegati, il valore del campo è No Delegates.
  • Stato di attivazione o disattivazione dell'account del proprietario della cassetta postale

    Questo campo è utile quando si desidera identificare gli account delle risorse o account delle cassette postali tra insiemi di strutture. In genere, questi account sono disattivati.
  • Nome distinto completo dell'account del proprietario di cassetta postale

    Questo campo è utile quando si desidera identificare il dominio e il contenitore dell'account del proprietario di cassetta postale.
  • Nome distinto completo del database delle cassette postali del proprietario della cassetta postale

    Questo campo include il database, il gruppo di archiviazione, il server e il gruppo amministrativo per la cassetta postale.
Nell'esempio seguente, l'utente che ha il nome di accesso "NoSendAs" dispone dell'autorizzazione di accesso completo alle cassette postali ma non l'autorizzazione Invia come per la cassetta postale "Proprietario della cassetta postale":
"" "Proprietario della cassetta postale" "" "" "Domain\NoSendAs" "" "" "non inviare come utente" "" "" "delegati""""""attivato" "" [altri campi omessi]

Configurazione della workstation amministrativa per lo script

Questo script utilizza le interfacce di gestione di Exchange per comunicare con i server di Exchange. Pertanto, questo script deve essere eseguito da un server di Exchange o da una workstation con amministratore di sistema di Exchange installato.

La modifica del file di esportazione

Il file di esportazione è formattato come testo normale in modo che il set di caratteri tra più linguaggi offrendo Unicode. Alcuni editor di testo potrebbe non essere possibile visualizzare o modificare il file correttamente o il file venga salvato come testo ANSI o ASCII. Il blocco note per Windows Server 2003, Windows XP e Microsoft Windows 2000 può gestire correttamente i file di testo Unicode. Inoltre, Microsoft Office Excel possono gestire correttamente i file di testo Unicode.

Il file di output è in formato delimitato da tabulazioni con virgolette triple i valori per ogni campo. Le virgolette triple vengono utilizzate per effettuare l'importazione e l'esportazione da Excel più deterministico. In Excel, le virgolette triple diventerà tra virgolette singole e torneranno triple quando il file viene salvato nuovamente come testo Unicode. Vedere le istruzioni seguenti per aprire e salvare un file di esportazione in Excel correttamente.

È inoltre possibile filtrare un file di esportazione senza utilizzare Excel mediante l'utilità di Find.exe o Findstr.exe. Queste utilità sono incluse in Windows. Essi consentono di cercare parole in un file e di output solo le righe contenenti tali parole o solo le righe che contengono tali parole. Ad esempio, se si desidera creare un elenco nel file di tutti i proprietari di cassette postali con delegati, utilizzare uno di questi comandi per creare un file contenente solo le righe con la stringa "Has Delegates":
Find.exe "ha delegati" OriginalFile. txt > HasDelegates.txt

Findstr.exe /c: "dispone di delegati" OriginalFile. txt > HasDelegates.txt
Ad esempio, si supponga di voler escludere tutti i proprietari di cassette postali con delegati. Il parametro /v restituisce tutte le righe che non corrispondono a parole di ricerca. Per generare un file che escluda tutte le righe "Has Delegates", è possibile utilizzare uno dei seguenti comandi:
Find.exe "No Delegates" OriginalFile. txt > NoDelegates. txt


Find.exe /V "dispone di delegati" OriginalFile. txt > NoDelegates. txt


Findstr.exe /c: "No Delegates" OriginalFile. txt > NoDelegates. txt


/C: /V Findstr.exe "ha delegati" OriginalFile. txt > NoDelegates. txt
È inoltre possibile utilizzare questi comandi per generare un file che elenca tutti i conti in cui un account di servizio applicativo disponga dell'autorizzazione di accesso completo alle cassette postali ma non dispone dell'autorizzazione Invia come. L'opzione /I rende il comando senza maiuscole/minuscole:
Find.exe /I "domain\ServiceAccount" OriginalFile.txt > ServiceAccount.txt


Findstr.exe /I /C:"domain\ServiceAccount" OriginalFile.txt > ServiceAccount.txt
Nota: Se si utilizza l'utilità Find.exe per generare un file filtrato, è necessario rimuovere le righe di intestazione che verrà creata l'utilità di Find.exe nella parte superiore del file.

Non utilizzare nomi di file di caratteri jolly (*. *) con l'utilità Findstr.exe. Se si utilizzano caratteri jolly, ogni riga nel file di output verrà premesso il nome del file. Dopo aver filtrato utilizzando Find.exe o Findstr.exe per verificare che il filtro abbia incluso o escluso gli account che si desidera, è necessario esaminare attentamente il file di output.

Nell'esempio seguente, l'utente che ha il nome di accesso "NoSendAs" dispone dell'autorizzazione di accesso completo alle cassette postali, ma non dell'autorizzazione Invia come per la cassetta postale "Proprietario della cassetta postale".
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [additional fields omitted] 

Informazioni sui proprietari di cassette postali con delegati

Un delegato che ha accesso completo alle cassette postali (detto anche "super delegato") in genere non deve essere concessa l'autorizzazione Invia come. Quando il super delegato accede direttamente alla cassetta postale del proprietario della cassetta postale, il delegato può inviare come proprietario. Quando il delegato utilizza le funzionalità di delega di Outlook (Ulteriori cassette postali da aprire o Apri cartella di altro utente), i messaggi vengono inviati per conto del proprietario.

Concedere l'autorizzazione Invia come a un super delegato solo se si desidera che il delegato sempre da inviare come proprietario della cassetta postale e mai di inviare per conto di proprietario della cassetta postale. Si consiglia di cercare il file di esportazione per il testo "Has Delegates" e quindi determinare se uno qualsiasi dei super delegati elencati sono in realtà i delegati della cassetta postale.

Solo super delegati elencati nel file di esportazione. Delegati comuni non dispongono dell'autorizzazione di accesso completo alle cassette postali. Inoltre, quando si concede l'autorizzazione Invia come a un delegato comune, il delegato invierà sempre come proprietario della cassetta postale. Ciò vale anche quando il delegato comune non dispone dell'autorizzazione di accesso completo alle cassette postali. Se si concedono le autorizzazioni Invia come a un delegato quando non intendeva, è facilmente possibile revocare l'autorizzazione in un secondo momento.

Come aprire un file di esportazione in Excel

  1. Avviare Excel prima di aprire il file di esportazione.
  2. Aprire il file in Excel come file di tipo testo. Verrà avviata l'importazione guidata testo.
  3. Nell'Importazione guidata testo, modificare o accettare le impostazioni seguenti:
    • Tipo di dati originale: delimitato
    • Importare alla riga: 1
    • Origine file: Unicode (UTF-8)
    • Delimitatori: scheda solo
    • Considera delimitatori consecutivi come uno: non contrassegnati
    • Qualificatore di testo: "(virgolette doppie)

Come salvare un file di esportazione dopo avere modificato il file in Excel

  1. Nel file di esportazione, fare clic su Salva con nome.
  2. Salvare il file utilizzando un nome diverso in modo da conservare una copia non modificata del file originale.
  3. Fare clic su File, scegliere Salva con nome, immettere un nome di file per salvare l'output e quindi fare clic su testo Unicode nell'elenco Tipo file .

Sintassi dello script

Si tratta di uno script in modalità testo e deve essere eseguito in una finestra del prompt dei comandi, non dalla finestra di dialogo Esegui . Per aprire una finestra del prompt dei comandi, fare clic su Start, scegliere Esegui, tipo
CMD nella casella Apri e quindi fare clic su
OK.

Log degli errori e esportazione verranno salvati i file nella directory corrente del prompt dei comandi. È necessario disporre delle autorizzazioni per creare file in questa directory. Per ottenere la Guida della riga di comando, immettere il seguente comando:
CSCRIPT AddSendAs.vbs 
Per esportare gli utenti che dispongono dell'accesso completo alle cassette postali senza l'autorizzazione Invia come per un dominio, immettere il seguente comando:
CSCRIPT AddSendAs.vbs [domain controller name] –ExportExample:
CSCRIPT AddSendAs.vbs CORP-DC-1 –Export

Verrà generato il file di esportazione denominato "Send_As_Export_H_MM_SS. txt".

Per importare un file di esportazione modificato, immettere il seguente comando:
CSCRIPT AddSendAs.vbs [domain controller name] –Import [filename]

Example:


CSCRIPT AddSendAs.vbs CORP-DC-1 –Import "Send_As_Export_H_MM_SS.txt"

Come concedere l'autorizzazione Invia come per ciascuna cassetta postale nel dominio per tutti gli utenti che già dispongono dell'autorizzazione di accesso completo alle cassette postali per una cassetta postale

Nota: Se si dispongono di delegati che dispongono anche dell'autorizzazione di accesso completo alle cassette postali dell'organizzazione, non utilizzare la modalità SetAll. Se si utilizza la modalità SetAll in questo caso, i delegati verranno concessa l'autorizzazione Invia come. Questo comportamento può causare tutti i messaggi di posta elettronica che inviano ad utilizzare l'autorizzazione Invia come anziché Invia per conto di autorizzazione. È possibile correggere questo comportamento rimuovendo l'autorizzazione Invia come concessa per errore al delegato:
CSCRIPT AddSendAs.vbs [domain controller name] –SetAll

Example:


CSCRIPT AddSendAs.vbs CORP-DC-1 –SetAll

Se si utilizza la modalità SetAll, verrà generato un file di esportazione Send_As_Export_H_MM_SS. Salvare il file perché è un record di tutti i conti che sono stati modificati. Se si dovesse eseguire nuovamente lo script, esso non produrrà lo stesso elenco di conti perché i conti sarebbero già stata concessa l'autorizzazione Invia come.


Gli errori che si verificano quando si esegue lo script verranno salvati il file Send_As_Errors_H_MM_SS. Il nome del file di errore corrisponderà al timestamp ore_minuti_secondi del file di esportazione associato.

Modifiche dello script

Possono esservi account nell'organizzazione che dispone delle autorizzazioni per molti oggetti, ma non si desidera modificare le autorizzazioni. Per ridurre le dimensioni del file di esportazione, è possibile filtrare questi account modificando la variabile FMA_EXCLUSIVE_LIST che si trova nella parte superiore dello script. Per impostazione predefinita, questa variabile consente di elencare alcuni account che dovrebbero essere eliminati nell'output dello script. È possibile aggiungere ulteriori account utilizzando il formato seguente.
& "<Domain\Name>" & OUTPUT_DELIMITER
Ad esempio, è possibile modificare il valore della variabile.
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
in modo che venga visualizzato come segue.
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER & "Mydomain\Service1" & OUTPUT DELIMITER
Questa modifica elimina la voce dell'account "Mydomain\Service1" nel file di esportazione "NT AUTHORITY\SELF" e "NT AUTHORITY\SYSTEM". Si noti che il valore Domain\Name viene tra maiuscole e minuscole e deve apparire esattamente come o come avviene nel file di esportazione.

È un'altra variabile modificabile, FMA_EXCLUSIVE_EXSVC, con il valore predefinito "\Exchange Services" & OUTPUT_DELIMITER. "Exchange Services" è il nome di un account che verrà concesse autorizzazioni tramite Active Directory Connector negli scenari di migrazione e coesistenza di Exchange Server 5.5 ed Exchange 2000. Questo account viene creato in più domini e potrebbe essere visualizzato ripetutamente nel file di esportazione se non viene eliminato.

La variabile FMA_EXCLUSIVE_EXSVC accetta un solo account come valore. Il nome dell'account non è tra maiuscole e minuscole. L'account deve iniziare con una barra rovesciata (\) e non deve includere il dominio a cui appartiene l'account. Verrà eliminato l'account per tutti i domini in cui è contenuto.

Se sono stati utilizzati strumenti di migrazione di terze parti o i metodi di sincronizzazione delle directory, potrebbe esistere un account diverso in più domini che sono state concesse le autorizzazioni per cassette postali degli utenti. In questo scenario, è possibile sostituire il nome dell'account specificato per "\Exchange Services".

Suggerimenti e raccomandazioni

  • Non eliminare i file di registro e di errore generati dallo script. Potrebbero risultare utili per la risoluzione dei problemi o l'annullamento delle modifiche in un secondo momento. È importante ricordare che non appena si dispone dell'autorizzazione Invia come a un account, non essere registrato nel file di esportazione.
  • Se un database o server di Exchange è inattivo, elaborazione dello script sono più lente. In tal caso, è possibile ordinare i file di esportazione dal database e spostare le righe che sono associate a un database in un file diverso per la successiva importazione interrotto.
  • Lo script elimina l'output dei conti in cui il nome di accesso termina con "$" o è il sistema operativo NT. Questi account di sistema non necessario in genere l'autorizzazione Invia come e rimuoverli dal file di esportazione notevolmente riduce la dimensione.
  • Il file di esportazione deve essere in formato Unicode prima che possa essere importato. Se è stato accidentalmente salvato il file come testo ANSI, è possibile risolvere il problema caricando il file nel blocco note e salvarlo come testo Unicode.
  • Se un'importazione non funziona, risolvere i problemi con gli account di prova e di una singola riga nel file di importazione. Configurare un account di prova che dispone di una cassetta postale su un server di Exchange in esecuzione e quindi concedere l'autorizzazione di accesso completo alle cassette postali a un altro account di prova. Non concedere l'autorizzazione Invia come all'account di prova.
  • Non vi è alcuna modalità di annullamento per questo script. Per rimuovere le autorizzazioni Invia come concesse con questo script, è necessario generare un altro script o rimuoverle manualmente. Non è disponibile una modalità di annullamento per evitare l'uso di questo script per rimuovere le autorizzazioni Invia come per tutti gli utenti in un'organizzazione.
  • Lo script non gestisce correttamente un account che ha ottenuto il controllo completo di un oggetto utente con accesso completo alle cassette postali. Controllo completo include l'autorizzazione Invia come, ma lo script esporterà tali account come se non dispone dell'autorizzazione Invia come. Questo potrebbe aumentare la dimensione del file di esportazione, ma si verifica alcun danno dall'importazione del file e quindi la concessione ridondante dell'autorizzazione Invia come a tali account.
  • Account di utente Active Directory che hanno nomi distinti e che includono schede o virgolette doppie non corrispondenti possono essere elaborati da questo script. Lo script può elaborare correttamente un nome contenente virgolette doppie corrispondenti analogo al seguente:
    "CN = First"Nickname"Last, DC = domain, DC = com"
  • Ogni versione di Excel supporta un limite di riga massimo diverso. Per ulteriori informazioni, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:

    120596 Impossibile importare file di testo che sono maggiori di 65.536 righe in Excel 97, Excel 2000, Excel 2002 ed Excel 2003

    Di seguito sono riportati i limiti di riga per Excel 2003 ed Excel 2007:
    • Righe di Excel 2003: 65.536
    • Righe di Excel 2007: 1.048.576
    Se il file di output è maggiore di questi limiti, è necessario dividere il file in sezioni prima di caricarlo in Excel.
  • Il file Send_As_Errors verrà elencati gli account specifici in cui si è verificato un errore di lettura o scrittura. Se altri account nel dominio sono stati elaborati correttamente, questi account potrebbero essere qualcosa in comune che impedisce l'esecuzione con lo script. I problemi comuni includono quanto segue:
    • Mancanza di autorizzazioni amministrative per visualizzare o impostare le proprietà sugli account.
    • L'archivio di cassette postali di Exchange non è in esecuzione.
    • La workstation non è un membro dello stesso dominio.
    • L'account amministrativo utilizzato non è della stessa foresta.
Per eseguire questo script, copiare e incollare tutte le righe tra BEGIN SCRIPT ed END SCRIPT in un editor di testo come blocco note. Salvare lo script come AddSendAs. vbs. INIZIO DELLO SCRIPT.
Option Explicit
Dim OUTPUT_DELIMITER
OUTPUT_DELIMITER = """""""" & vbTab & """"""""

'Define exclusive list, if FMA is given to any user in this list, it's ignored. If you
'want to modify this list, please be sure to follow the same format. Every alias has to
'have a OUTPUT_DELIMITER before and after it
Dim FMA_EXCLUSIVE_LIST
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
Dim FMA_EXCLUSIVE_EXSVC
FMA_EXCLUSIVE_EXSVC = "\Exchange Services" & OUTPUT_DELIMITER

'Permission Type: Allow or Deny
const ACCESS_ALLOWED_OBJECT_ACE_TYPE = 5
const ADS_ACETYPE_ACCESS_ALLOWED = &h0
const ADS_ACETYPE_ACCESS_DENIED = &h1

'Flags: Specifies Inheritance
const ADS_ACEFLAG_INHERIT_ACE = &h2
const ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE = &h4
const ADS_ACEFLAG_INHERIT_ONLY_ACE = &h8
const ADS_ACEFLAG_INHERITED_ACE = &h10
const ADS_ACEFLAG_VALID_INHERIT_FLAGS = &h1f
const ADS_ACEFLAG_SUCCESSFUL_ACCESS = &h40
const ADS_ACEFLAG_FAILED_ACCESS = &h80

'Declare ADSI constants
Const ADS_OPTION_SECURITY_MASK = 3
Const ADS_OPTION_REFERRALS= 1
Const ADS_SECURITY_INFO_DACL = 4
Const ADS_CHASE_REFERRALS_NEVER = &h00
Const ADS_CHASE_REFERRALS_SUBORDINATE = &h20
Const ADS_CHASE_REFERRALS_EXTERNAL = &h40

'output file name
Const EXPORT_FILE = "Send_As_Export"
Const ERROR_FILE = "Send_As_Errors"

' script mode
const MODE_INVALID = -1
const MODE_SETALL = 0
const MODE_EXPORT = 1
const MODE_IMPORT = 2
const SETALL = "-SETALL"
const EXPORT = "-EXPORT"
const IMPORT = "-IMPORT"

' argument index
Const ARG_INDEX_MODE = 1
Const ARG_INDEX_DC = 0
Const ARG_INDEX_FILENAME = 2

' column index in import/export file
Const COLUMN_INDEX_USERDISPLAYNAME = 0
Const COLUMN_INDEX_FMAALIAS = 1
Const COLUMN_INDEX_FMADISPLAYNAME = 2
Const COLUMN_INDEX_IFPUBLICDELEGATE = 3
Const COLUMN_INDEX_MAILBOXSTATUS = 4
Const COLUMN_INDEX_USERADSPATH = 5
Const COLUMN_INDEX_HOMEMDB = 6

Const EMPTYSTRING = ""
Const STRNO = "No Delegates"
Const STRYES = "Has Delegates"
Const MIN_ARG = 2
Const INIT_ARRAY_SIZE = 100

' Microsoft Exchange
Const EX_MB_SEND_AS_ACCESSMASK = &H00100
Const EX_FULLMailbox_AccessMask = 1
Const MESO = "Microsoft Exchange System Objects"
Const EX_MB_SEND_AS_GUID = "{AB721A54-1E2F-11D0-9819-00AA0040529B}"

Const ForReading= 1
Const ForWriting= 2
Const ForAppending= 8
Const TristateTrue= -1
Const ADS_SCOPE_SUBTREE = 2

Dim objUser
Dim objSDMailBox
Dim objSDNTsecurity
Dim objDACLNTSD
Dim objNewACE

Dim sTrusteeAlias()
Dim sFMADeniedList
Dim sFMAExplicitAllow
Dim fACESendasFound
Dim dArraySize
Dim TotalACE
Dim i
Dim rootDSE
Dim conn
Dim objCommand
Dim objCmdDisplayName
Dim rsUsers
Dim FoundObject
Dim objFSO
Dim objfileImport
Dim objfileExport
Dim objfileError
Dim sImportFilePath
Dim cScriptMode
Dim dArgCount
Dim dArgExpected
Dim sDCServer
Dim sMailboxStatus
Dim sIfPublicDelegate
Dim sFMAUserDisplayName
Dim sExportFileName
Dim sErrorsFileName
Dim msPublicDelegates
Dim fError
Dim fOneError
Dim fFMAAllowed

On Error Resume Next
dArraySize = INIT_ARRAY_SIZE
ReDim Preserve sTrusteeAlias(dArraySize)

dArgCount = Wscript.Arguments.Count
If ( dArgCount < MIN_ARG ) Then
DisplaySyntax
End If

err.Clear
fError = False
fOneError = False
cScriptMode = MODE_INVALID
Select Case UCase(WScript.Arguments(ARG_INDEX_MODE))
Case SETALL
cScriptMode = MODE_SETALL
dArgExpected = ARG_INDEX_MODE + 1
Case EXPORT
cScriptMode = MODE_EXPORT
dArgExpected = ARG_INDEX_MODE + 1
Case IMPORT
cScriptMode = MODE_IMPORT
dArgExpected = ARG_INDEX_FILENAME + 1
Case Else
cScriptMode = MODE_INVALID
End Select
If (cScriptMode = MODE_INVALID Or dArgCount <> dArgExpected) Then
DisplaySyntax
End If

sDCServer = WScript.Arguments(ARG_INDEX_DC)

CreateOutputFiles

If ( cScriptMode = MODE_SETALL Or cScriptMode = MODE_EXPORT ) Then
Dim sDomainContainer
If (cScriptMode = MODE_SETALL) Then
Dim strInput
WScript.StdOut.WriteLine("WARNING: If you continue, each account in the domain that has")
WScript.StdOut.WriteLine("Full Mailbox Access permission for a given mailbox will also be")
WScript.StdOut.WriteLine("granted permission to Send As the mailbox owner.")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("To preview the list of mailboxes before granting Send As,")
WScript.StdOut.WriteLine("cancel this operation and use the -Export mode of this script.")
WScript.StdOut.WriteLine()
WScript.StdOut.Write("Press Y to continue or any other key to cancel: ")
strInput = WScript.StdIn.ReadLine()
If (UCase(strInput) <> UCase("Y")) Then
WScript.Quit
End If
End If

WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("""!"" indicates an error processing an object.")
WScript.StdOut.WriteLine(" Check " & sErrorsFilename)
WScript.StdOut.WriteLine("Starting...")
WScript.StdOut.WriteLine()

err.Clear
Set rootDSE = GetObject("LDAP://" & sDCServer & "/RootDSE")
sDomainContainer = rootDSE.Get("defaultNamingContext")
WScript.StdOut.WriteLine("Finding domain controller [ " & sDCServer & " ] for domain [ " & sDomainContainer & " ]")

If (err.number <> 0) Then
WScript.StdOut.WriteLine("Failed to find the domain or domain controller, error:" & err.Description)
objfileError.WriteLine("Failed to find the domain or domain controller, error:" & err.Description)
WScript.Quit
End If

err.Clear
Set conn = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
conn.Provider = "ADSDSOObject"
conn.Open "ADs Provider"
If (err.number <> 0) Then
WScript.StdOut.WriteLine("Failed to bind to Active Directory server, error:" & err.Description)
objfileError.WriteLine("Failed to bind to Active Directory server, error:" & err.Description)
WScript.Quit
End If

Set objCommand.ActiveConnection = conn
WScript.StdOut.WriteLine("Searching for mailbox owner user accounts in " & sDomainContainer)

objCommand.CommandText = "<LDAP://" & sDCServer & "/" & sDomainContainer & ">;(&(&(& (mailnickname=*) (| (&(objectCategory=person)(objectClass=user)(msExchHomeServerName=*)) ))));adspath;subtree"
objCommand.Properties("searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Page Size") = 100
objCommand.Properties("Timeout") = 30
objCommand.Properties("Chase referrals") = (ADS_CHASE_REFERRALS_SUBORDINATE Or ADS_CHASE_REFERRALS_EXTERNAL)

err.Clear
Set rsUsers = objCommand.Execute
If (err.number <> 0) Then
WScript.StdOut.WriteLine("Search for mailbox owners failed, error:" & err.Description)
objfileError.WriteLine("Search for mailbox owners failed, error:" & err.Description)
WScript.Quit
End If

If (rsUsers.RecordCount = 0) Then
WScript.StdOut.WriteLine("No mailbox owner user accounts could be seen in " & sDomainContainer & ".")
objfileError.WriteLine("No mailbox owner user accounts found in " & sDomainContainer & ".")
fError = True
End If

While Not rsUsers.EOF
If (fOneError = True) Then
WScript.StdOut.Write("!")
Else
WScript.StdOut.Write(".")
End If
fOneError = False

'Skip any mailbox object in Microsoft Exchange System Objects container
If (0 = Instr(rsUsers.Fields(0).Value, MESO)) Then
err.Clear
Set objUser = GetObject(rsUsers.Fields(0).Value)
If (err.number <> 0) Then
objfileError.WriteLine("Failed to get user object: " & rsUsers.Fields(0).Value)
objfileError.WriteLine("Error: " & err.Description)
fError = True
fOneError = True
err.Clear
End If
Set objSDMailBox = objUser.MailboxRights
If (err.number <> 0) Then
objfileError.WriteLine("Failed to get mailbox rights: " & rsUsers.Fields(0).Value)
objfileError.WriteLine("Error: " & err.Description)
fError = True
fOneError = True
err.Clear
End If
Set objSDNTsecurity = objUser.ntSecurityDescriptor
If (err.number <> 0) Then
objfileError.WriteLine("Failed to get NTSD: " & rsUsers.Fields(0).Value)
objfileError.WriteLine("Error: " & err.Description)
fError = True
fOneError = True
err.Clear
End If

Set objDACLNTSD = Nothing
If (objUser.AccountDisabled) Then
sMailboxStatus = "Disabled"
Else
sMailboxStatus = "Enabled"
End If

'Query this user's publicDelegates list
err.Clear
msPublicDelegates = objUser.Get("publicDelegates")
If (err.number <> 0) Then
'This user doesn't have publicDelegates list set
sIfPublicDelegate = STRNO
err.Clear
Else
sIfPublicDelegate = STRYES
End If

err.Clear
FindAllFMAUsers objSDMailBox

If (TotalACE > dArraySize) Then
'Needs to allocate bigger size array
dArraySize = TotalACE + 1
ReDim Preserve sTrusteeAlias(dArraySize)
FindAllFMAUsers objSDMailBox
End If
If (err.number <> 0) Then
objfileError.WriteLine("Failed to query mailbox rights of user: " & rsUsers.Fields(0).Value)
objfileError.WriteLine("Error: " & err.Description)
err.Clear
fError = True
fOneError = True
End If

If TotalACE > 0 Then
Set objDACLNTSD = objSDNTsecurity.DiscretionaryAcl

For i = 0 to TotalACE - 1 Step 1

'Check if we already have Send As ACE in NT security descriptor
'If it exists, either allow or deny, we don't need to add send as to it
CheckSendAsACE objDACLNTSD, sTrusteeAlias(i)

'Note: deny entries take precedence over allow entries.
'If there is FMA deny ACE, skip it even if we find FMA allow ACE
IfFMAAllowed(sTrusteeAlias(i) & OUTPUT_DELIMITER)
If ((fFMAAllowed = True) And (fACESendasFound = 0)) Then
If cScriptMode = MODE_SETALL Then
Set objNewACE = CreateObject ("AccessControlEntry")
objNewACE.AceFlags = 0
objNewACE.AceType = ACCESS_ALLOWED_OBJECT_ACE_TYPE
objNewACE.AccessMask = EX_MB_SEND_AS_ACCESSMASK
objNewACE.Flags = 1
objNewACE.ObjectType = EX_MB_SEND_AS_GUID
objNewACE.Trustee = sTrusteeAlias(i)

objDACLNTSD.AddAce objNewAce
End If

'Query trustee(FMA user) to get its displayName
Dim rsTrustee
Dim objTrustee
Dim dPosition
Dim sAlias

dPosition = inStr(1, sTrusteeAlias(i), "\")
sAlias = mid(sTrusteeAlias(i), dPosition + 1)

Set objCmdDisplayName = CreateObject("ADODB.Command")
Set objCmdDisplayName.ActiveConnection = conn
objCmdDisplayName.CommandText = "<LDAP://" & sDomainContainer & ">;(&(&(& (mailnickname=" & sAlias & ") (| (&(objectCategory=person)(objectClass=user)(msExchHomeServerName=*)) ))));adspath;subtree"
objCmdDisplayName.Properties("searchscope") = ADS_SCOPE_SUBTREE
objCmdDisplayName.Properties("Page Size") = 100
objCmdDisplayName.Properties("Timeout") = 30
objCmdDisplayName.Properties("Chase referrals") = (ADS_CHASE_REFERRALS_SUBORDINATE Or ADS_CHASE_REFERRALS_EXTERNAL)

Set rsTrustee = objCmdDisplayName.Execute
Set objTrustee = GetObject(rsTrustee.Fields(0).Value)

If (err.number <> 0) Then
'Failed to query FMA user's display name, use its alias
sFMAUserDisplayName = sAlias
Else
sFMAUserDisplayName = objTrustee.displayName
End If

'output to export file
err.Clear
objfileExport.WriteLine ("""""""" & objUser.displayName & OUTPUT_DELIMITER & sTrusteeAlias(i) & OUTPUT_DELIMITER & sFMAUserDisplayName & OUTPUT_DELIMITER & sIfPublicDelegate & OUTPUT_DELIMITER & sMailboxStatus & OUTPUT_DELIMITER & rsUsers.Fields(0).Value & OUTPUT_DELIMITER & objUser.homeMDB & """""""")
If (err.number <> 0) Then
objfileError.WriteLine("User " & rsUsers.Fields(0).Value & " could not be added to the export file. You should set permissions manually for this user.")
objfileError.WriteLine("Error: " & err.Description)
err.Clear
fError = True
fOneError = True
End If
Set objCmdDisplayName = Nothing
Set rsTrustee = Nothing
Set objTrustee = Nothing
End If
Next

If cScriptMode = MODE_SETALL Then
err.Clear
objSDNTsecurity.DiscretionaryAcl = objDACLNTSD
objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
objUser.SetInfo
If (err.number <> 0) Then
objfileError.WriteLine("Failed to update ADSI for user: " & rsUsers.Fields(0).Value)
objfileError.WriteLine("Error: " & err.Description)
err.Clear
fError = True
fOneError = True
End If
End If

TotalACE = 0
Set objSDMailbox = Nothing
Set objSDNTsecurity = Nothing
Set objUser = Nothing
Set objDACLNTSD = Nothing
End If

End If
rsUsers.MoveNext
Wend
End If

If (cScriptMode = MODE_IMPORT) Then
Dim sOneRow
Dim sArraySplit
Dim objUserItem
Dim UserPath
Dim objUserSD
Dim objUserDACL
Dim fNeedToAddSendAs

sImportFilePath = WScript.Arguments(ARG_INDEX_FILENAME)

WScript.StdOut.WriteLine("If you continue, each account listed in " & sImportFilePath)
WScript.StdOut.WriteLine("that has Full Mailbox Access permission for a given mailbox")
WScript.StdOut.WriteLine("will also be granted permission to Send As the mailbox owner.")
WScript.StdOut.WriteLine()
WScript.StdOut.Write("Press Y to continue or any other key to cancel: ")
strInput = WScript.StdIn.ReadLine()
If (UCase(strInput) <> UCase("Y")) Then
WScript.Quit
End If
WScript.StdOut.WriteLine("Starting...")
WScript.StdOut.WriteLine()

UserPath = EMPTYSTRING
err.Clear
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objfileImport = objFSO.OpenTextFile(sImportFilePath, ForReading, False, TristateTrue)
If (err.number <> 0) Then
WScript.StdOut.WriteLine("Failed to open import file " & sImportFilePath & ", error:" & err.Description)
objfileError.WriteLine("Failed to open import file " & sImportFilePath & ", error:" & err.Description)
WScript.Quit
End If

fNeedToAddSendAs = False
Do While objfileImport.AtEndOfStream <> True
If (fOneError = True) Then
WScript.StdOut.Write("!")
Else
WScript.StdOut.Write(".")
End If
fOneError = False

err.Clear
sOneRow = objfileImport.ReadLine
sArraySplit = Split(sOneRow , OUTPUT_DELIMITER)
If (err.number <> 0) Then
objfileError.WriteLine("Failed to parse one row: " & sOneRow )
objfileError.WriteLine("Error: " & err.Description)
err.Clear
fError = True
fOneError = True
End If

If (UserPath <> sArraySplit(COLUMN_INDEX_USERADSPATH)) Then
'A new user
If (fNeedToAddSendAs = True ) Then
'update existing user
err.Clear
objSDNTsecurity.DiscretionaryAcl = objDACLNTSD
objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
objUser.SetInfo
If (err.number <> 0) Then
objfileError.WriteLine("Failed to update permissions for user: " & UserPath)
objfileError.WriteLine("Error: " & err.Description)
fError = True
fOneError = True
End If
End If

fNeedToAddSendAs = False
Set objUser = Nothing
Set objSDNTsecurity = Nothing
Set objDACLNTSD = Nothing

UserPath = sArraySplit(COLUMN_INDEX_USERADSPATH)
err.Clear
Set objUser = GetObject(UserPath)
Set objSDNTsecurity = objUser.ntSecurityDescriptor
Set objDACLNTSD = objSDNTsecurity.DiscretionaryACL
If (err.number <> 0) Then
objfileError.WriteLine("Failed to get user object: " & UserPath)
objfileError.WriteLine("Error: " & err.Description)
err.Clear
fError = True
fOneError = True
End If
End If

'Add newACE Do we need this check?
CheckSendAsACE objDACLNTSD, sArraySplit(COLUMN_INDEX_FMAALIAS)
If (fACESendasFound = 0) Then
Set objNewACE = CreateObject ("AccessControlEntry")
objNewACE.AceFlags = 0
objNewACE.AceType = ACCESS_ALLOWED_OBJECT_ACE_TYPE
objNewACE.AccessMask = EX_MB_SEND_AS_ACCESSMASK
objNewACE.Flags = 1
objNewACE.ObjectType = EX_MB_SEND_AS_GUID
objNewACE.Trustee = sArraySplit(COLUMN_INDEX_FMAALIAS)

objDACLNTSD.AddAce objNewACE
fNeedToAddSendAs = True
End If
Loop

If (fNeedToAddSendAs = True ) Then
'update the last user
err.Clear
objSDNTsecurity.DiscretionaryAcl = objDACLNTSD
objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
objUser.SetInfo
If (err.number <> 0) Then
objfileError.WriteLine("Failed to update permissions for user: " & UserPath)
objfileError.WriteLine("Error: " & err.Description)
fError = True
End If
End If

End If

objFSO.Close
objfileImport.Close
objfileExport.Close
objfileError.Close

Set objFSO = Nothing
Set objfileImport = Nothing
Set objfileExport = Nothing
Set objfileError = Nothing
Set objCommand = Nothing
Set conn = Nothing

WScript.StdOut.WriteLine()
If (fError = True) Then
WScript.StdOut.WriteLine("Finished with one or more errors. See " & sErrorsFilename)
Else
WScript.StdOut.WriteLine("Finished successfully. No errors were encountered.")
End If

Function FindAllFMAUsers (objSD)
Dim objACL
Dim objACE
Dim intACECount
Dim strIndent
Dim dAccessMaskBit
Dim dPosition
Dim sUserAlreadyFound

On Error Resume Next
err.Clear
TotalACE = 0
sFMADeniedList = EMPTYSTRING
sFMAExplicitAllow = EMPTYSTRING
sUserAlreadyFound = OUTPUT_DELIMITER
intACECount = 0
Set objACL = objSD.DiscretionaryAcl
intACECount = objACL.AceCount

If intACECount Then
' Open discretionary ACL (DACL) data.
For Each objACE In objACL

dPosition = inStr(1, objACE.Trustee, "$")
If ((0 = Instr(UCase(objACE.Trustee & OUTPUT_DELIMITER), UCase(FMA_EXCLUSIVE_EXSVC))) And (0 = Instr(sUserAlreadyFound, OUTPUT_DELIMITER & objACE.Trustee & OUTPUT_DELIMITER)) And (0 = Instr(FMA_EXCLUSIVE_LIST, OUTPUT_DELIMITER & objACE.Trustee & OUTPUT_DELIMITER)) And (dPosition <> Len(objACE.Trustee)) And ((objACE.AccessMask And EX_FULLMailbox_AccessMask) <>0) And ((objACE.AceType = ADS_ACETYPE_ACCESS_ALLOWED) Or (objACE.AceType = ACCESS_ALLOWED_OBJECT_ACE_TYPE) )) Then
If (TotalACE < dArraySize) Then
sTrusteeAlias(TotalACE) = objACE.Trustee
sUserAlreadyFound = sUserAlreadyFound & objACE.Trustee & OUTPUT_DELIMITER
End If
TotalACE = TotalACE + 1
If ((objACE.AceFlags And ADS_ACEFLAG_INHERITED_ACE) = 0) Then
'Keep a list who explictly set FMA at mailbox level
sFMAExplicitAllow = sFMAExplicitAllow & objACE.Trustee & OUTPUT_DELIMITER
End If
ElseIf (( (objACE.AccessMask And EX_FULLMailbox_AccessMask) <>0 ) And (objACE.AceType = ADS_ACETYPE_ACCESS_DENIED)) Then
'Keep a list who denied FMA, use OUTPUT_DELIMITER as demiliter,
'include both inherited and explicit set at mailbox level
sFMADeniedList = sFMADeniedList & objACE.Trustee & OUTPUT_DELIMITER
End If
Next
End If

Set objACL = Nothing
End Function

Function CheckSendAsACE (objDiscretionaryACL, sTAlias)
Dim objACE
Dim intACECount

err.Clear
fACESendasFound = 0
intACECount = objDiscretionaryACL.AceCount

If intACECount Then
For Each objACE In objDiscretionaryACL
err.Clear
If ( (objACE.Trustee = sTAlias) And (objACE.ObjectType = EX_MB_SEND_AS_GUID) ) Then
fACESendasFound = 1
End If
If (err.number <> 0) Then
objfileError.WriteLine("Could not read permissions for this user: " & sTAlias)
objfileError.WriteLine("Error: " & err.Description)
err.Clear
fError = True
fOneError = True
End If
Next
End If
End Function

Function IfFMAAllowed(sTrustee)
'FMA allow ACE has been found. Assume it's true
fFMAAllowed = True

If ( (0 <> Instr(sFMADeniedList, sTrustee)) And (0 = Instr(sFMAExplicitAllow, sTrustee))) Then
'If Denied ACE is found, and no explicit allow FMA
fFMAAllowed = False
End If
End Function

Function CreateOutputFiles
Dim sTimeArray
Dim sTimeShort
Dim sTime

err.Clear
sTime = Time
sTimeShort = Split(sTime, " ")
sTimeArray = Split(sTimeShort(0), ":")

Set objFSO = CreateObject("Scripting.FileSystemObject")
sErrorsFileName = ERROR_FILE & "_" & sTimeArray(0) & "_" & sTimeArray(1) & "_" & sTimeArray(2) & ".txt"
Set objfileError = objFSO.OpenTextFile(sErrorsFileName, ForWriting, True, TristateTrue)

If (cScriptMode = MODE_SETALL Or cScriptMode = MODE_EXPORT)Then
sExportFileName = EXPORT_FILE & "_" & sTimeArray(0) & "_" & sTimeArray(1) & "_" & sTimeArray(2) & ".txt"
Set objfileExport = objFSO.OpenTextFile(sExportFileName, ForWriting, True, TristateTrue)
End If

If err.number <> 0 Then
WScript.StdOut.WriteLine("Unable to create export or error files: " & err.Description)
objfileError.WriteLine("Unable to create export or error files: " & err.Description)
fError = True
fOneError = True
WScript.Quit
End If

End Function

Function DisplaySyntax
WScript.StdOut.WriteLine("Syntax:")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Export accounts with Full Mailbox Access that do not have Send As permission:")
WScript.StdOut.WriteLine(" CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Export")
WScript.StdOut.WriteLine(" NOTE: The list will be saved to Send_As_Export_HH_MM_SS.txt")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Grant Send As to all accounts listed in an export file:")
WScript.StdOut.WriteLine(" CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Import ""filename.txt""")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Grant Send As to all accounts in the domain with Full Mailbox Access:")
WScript.StdOut.WriteLine(" CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -SetAll")
WScript.StdOut.WriteLine(" NOTE: Accounts will be listed in Send_As_Export_HH_MM_SS.txt")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("For all modes, errors are saved to Send_As_Errors_HH_MM_SS.txt")

WScript.Quit
End Function
SCRIPT DI FINE

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Ciò include, ma non limitato a, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. In questo articolo si presuppone che si abbia familiarità con il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire la procedura di debug. Tecnici del supporto Microsoft consentono di spiegare la funzionalità di una particolare procedura. Tuttavia, essi non modificherà questi esempi per fornire funzionalità aggiuntive o creare procedure atte a soddisfare specifiche esigenze.

Per ulteriori informazioni sulle opzioni di supporto disponibili da Microsoft, visitare il seguente sito Web Microsoft:I prodotti di terze parti descritti in questo articolo sono forniti da società indipendenti da Microsoft. Microsoft esclude ogni garanzia, implicita o esplicita relativa alle prestazioni o all'affidabilità di tali prodotti.
Proprietà

ID articolo: 912918 - Ultima revisione: 30 gen 2017 - Revisione: 1

Feedback