Les utilisateurs ne peuvent pas envoyer des messages électroniques à partir d'un périphérique mobile ou d'une boîte aux lettres partagée dans Exchange 2000 Server et Exchange Server 2003

Traductions disponibles Traductions disponibles
Numéro d'article: 912918 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous essayez d'envoyer un message électronique dans Microsoft Exchange 2000 Server ou dans Microsoft Exchange Server 2003, vous ne pouvez pas envoyer le courrier électronique . En outre, vous pouvez recevoir un des messages d'erreur suivants ou Parmi les rapports de non-remise suivants (NDR).

Messages d'erreur

  • Accès refusé
  • Vous ne disposez pas des autorisations suffisantes Pour effectuer cette opération sur cet objet. Consultez le contact du dossier ou votre système administrateur.
  • Message non listé Erreur
  • MAPI_E_NO_ACCESS -2147024891
  • Impossible d'envoyer le message électronique pour utilisateur nom d'utilisateur (HRESULT : -2147024891) Pausing utilisateur USERNAME. (Erreur de sécurité- Impossible d'accéder la boîte aux lettres des utilisateurs.)
  • Ressource pas Trouvé
Remarque : Vous recevez le message d'erreur « Accès refusé » ou « ressource message d'erreur ne se trouve pas"à partir de Microsoft Outlook Web Access lorsque vous êtes connecté tant qu'un déléguer le compte.

Rapports de non-remise

  • Vous n'avez pas autorisé à envoyer à ce destinataire. Pour l'assistance, contactez votre administrateur système.
  • Le message n'a pas pu être envoyé à l'aide de votre boîte aux lettres. Vous effectuez pas avoir l'autorisation d'envoyer le message au nom de l'utilisateur spécifié.

Produits affectés

Ce problème est connu pour affecter le tiers suivant produits :
  • Research In Motion (RIM) BlackBerry Enterprise Server (BES)
  • Bonne Wireless GoodLink de technologie de messagerie
Ce problème peut également concerner MAPI personnalisés ou données collaboratives Objects (CDO)-en fonction des programmes qui envoient des messages électroniques.

Autres les produits tiers qui utilisent des comptes de service pour envoyer des messages électroniques peuvent également être affectés. Si vous exécutez un produit tiers qui est affecté par ce problème, nous vous conseillons de contacter le fournisseur pour vous aider à résoudre cela problème.

Cependant, il a été confirmé que le tiers suivant produits ne sont pas concernés par ce problème :
  • Cisco Unity Unified Messaging
  • Quest Migration Suite pour Exchange
  • L'utilitaire Microsoft ExMerge pour Exchange

Cause

Ce problème peut se produire si une des conditions suivantes est True :
  • Vous n'avez pas les autorisations pour envoyer des messages électroniques en tant que le propriétaire de boîte aux lettres dans le compte que vous utilisez pour envoyer du courrier électronique .
  • Vous exécutez Microsoft Exchange 2000 Server Service Pack 3 (SP3) avec une version du fichier Store.exe qui est égal à ou plus tard à la version 6619.4. Version 6619.4 a été la première fois disponible dans Microsoft suivant Article de la Base de connaissances :
    915358 Un correctif est disponible pour modifier le comportement de l'autorisation accès complet à la boîte aux lettres dans Exchange 2000 Server
  • Vous exécutez Microsoft Exchange Server 2003 SP1 avec une version du fichier Store.exe qui est égale ou postérieure à la version 7233.51.
  • Vous exécutez Exchange Server 2003 SP2 avec un Store.exe version du fichier qui est égale à ou plus tard à la version 7650.23. Version 7650.23 vous avez tout d'abord disponible dans la Base de connaissances Microsoft suivant article :
    895949 Comportement de l'autorisation « Envoyer en tant que » change dans Exchange 2003
    Cette modification n'est pas incluse dans Exchange Server 2003 SP2. Si vous avez exécuté la version Exchange Server 2003 SP1 du fichier Store.exe qui inclut cette modification, et que vous mettez à niveau vers Exchange Server 2003 SP2, vous devez installer la version SP2 de ce correctif pour conserver ce nouveau comportement. Ce changement sera inclus dans Microsoft Exchange Server 2003 SP3.

PROBLÈMES DE SÉCURITÉ

Avant les versions du fichier Store.exe répertoriées dans le Section, l'octroi de l'autorisation accès complet à la boîte aux lettres accordée implicitement « cause » autorisation Envoyer en tant que propriétaire de la boîte aux lettres. Cela signifiait qu'un autre compte a l'accès complet à la boîte aux lettres autorisation pourrait envoyer des messages électroniques qui apparaissaient comme s'ils étaient envoyés par le propriétaire de boîte aux lettres.

De nombreux Microsoft Exchange les clients ont demandé que l'autorisation Envoyer en tant qu'être séparés à partir de la version complète Autorisation d'accès de boîte aux lettres pour les deux raisons suivantes :
  • Pour prévenir l'usurpation d'identité électronique.
  • Pour vous assurer que messages électroniques qui sont envoyés par un délégué peut toujours être clairement différenciables des messages électroniques qui sont envoyés par le propriétaire de boîte aux lettres réelle.
Toutes les nouvelles versions de la banque Exchange va maintenant demander explicitement l'autorisation Envoyer en tant que pour envoyer des messages électroniques en tant que le propriétaire de boîte aux lettres. Toutefois, voici les trois exceptions à cette règle exigence :
  • Le compte de propriétaire de boîte aux lettres ne nécessite pas explicite envoyer en tant que autorisations pour sa propre boîte aux lettres.
  • N'est pas le cas du compte externe associé pour une boîte aux lettres exiger des autorisations Envoyer en tant qu'explicites.
  • Un compte délégué qui possède également l'accès complet à la boîte aux lettres autorisation ne requiert pas d'autorisations Envoyer en tant qu'explicites.
Pour plus d'informations sur ces exceptions, voir plus » Section d'informations ».

Résolution

Tous les comptes qui bénéficient d'un accès partiel ou complet à une boîte aux lettres, à l'exception de ceux mentionnés dans la section « Cause », doivent maintenant être accordés explicitement l'autorisation Envoyer en tant que pour le compte de propriétaire de boîte aux lettres pour envoyer du courrier en tant que propriétaire de la boîte aux lettres. Cela inclut les comptes de service d'application qui exécutent des fonctions telles que l'envoi de messages électroniques pour les utilisateurs d'appareils mobiles.

L'autorisation Envoyer en tant que s'applique à l'identité d'un objet utilisateur Active Directory, pas au contenu de boîte aux lettres qui sont stockés dans une base de données. Par conséquent, l'autorisation Envoyer en tant que doit être accordée au compte de service sur chaque objet utilisateur qui possède une boîte aux lettres. Lorsque des messages électroniques sont envoyés, ils ne sont pas envoyés à partir d'une base de données ou de boîtes aux lettres particulière, mais à partir d'un utilisateur. L'utilisateur peut être le propriétaire de boîte aux lettres ou tout autre compte qui possède l'autorisation Envoyer en tant que.

Vous ne pouvez pas octroyer l'autorisation Envoyer en tant que sur un serveur qui exécute Exchange Server ou sur un objet de base de données et obtenir l'effet de l'octroi de l'autorisation Envoyer en tant que pour toutes les boîtes aux lettres dans la base de données. L'octroi de l'autorisation Envoyer en tant que sur un objet de base de données Exchange vous donne l'autorisation à la base de données elle-même. L'autorisation est héritée par toutes les boîtes aux lettres dans la base de données. Toutefois, il ne pas vous donne l'autorisation aux utilisateurs qui disposent des autorisations Envoyer en tant qu'et qui disposent de boîtes aux lettres dans la base de données.

Remarque : L'octroi de l'autorisation Recevoir comme sur une base de données Exchange est le équivalent fonctionnel de l'octroi de l'autorisation accès complet à la boîte aux lettres à tous les boîtes aux lettres dans la base de données. Ce comportement diffère de l'envoyer Que l'autorisation.

Comment faire pour accorder les autorisations Envoyer en tant que pour un seul compte

Pour accorder explicitement un autre compte l'autorisation Envoyer en tant que boîte aux lettres propriétaire, procédez comme suit :
  1. Démarrer la gestion Active Directory utilisateurs et ordinateurs console.
  2. Sur la Vue menu, assurez-vous que leFonctionnalités avancées option est sélectionnée. Si cette option n'est pas sélectionnée, la page de sécurité sera pas visible pour le compte d'utilisateur objets.
  3. Ouvrez les propriétés du compte d'utilisateur qui possède le boîte aux lettres.
  4. Cliquez sur le Sécurité onglet.
  5. Si le compte n'est pas déjà dans la liste des utilisateurs ou de groupes noms, ajoutez le compte doit avoir l'autorisation Envoyer en tant que pour cela utilisateur.
  6. Dans le Autorisations Cliquez sur le Autoriser pour le « envoyer en tant que » autorisation pour le compte approprié.
  7. Cliquez sur OK.
  8. Redémarrez le service banque d'informations Microsoft Exchange sur le serveur Exchange concerné.
Remarque : Si vous ne redémarrez pas la banque d'informations Microsoft Exchange service, le service de banque d'informations Microsoft Exchange met à jour ses autorisations de cache pour que les nouveaux autorisations prennent effet conformément à la valeur qui est définie dans la sous-clé de Registre suivante :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem

Nom de valeur : Mailbox Cache Age Limit
Type valeur : REG_DWORD
Radix : décimal
Données de la valeur : La limite d'âge du cache boîte aux lettres d'informations en quelques minutes.
La valeur par défaut pour cette entrée de Registre est de 120 minutes (deux heures). Si vous modifiez cette entrée de Registre, vous devez redémarrer Microsoft Service de banque d'informations Exchange.

Remarque : Si vous définissez les valeurs de délai d'attente pour une valeur très faible, vous pouvez affecter les performances du serveur.

Comment faire pour accorder l'autorisation Envoyer en tant que pour plusieurs comptes

Un exemple de script est fourni à la fin de cet article va rechercher un domaine du service Active Directory pour les comptes qui ont l'autorisation accès complet à la boîte aux lettres sans l'autorisation Envoyer en tant que pour une boîte aux lettres. Voici les caractéristiques d'un compte de service ou une ressource qui seront affectés par cette modification de la sécurité. Le script peut générer un fichier d'exportation que vous pouvez consulter, modifier et puis réimporter pour octroyer l'autorisation Envoyer en tant que pour les comptes qui nécessitent cette autorisation.

Vous pouvez également accorder l'autorisation Envoyer en tant que par héritage sur chaque objet utilisateur dans un domaine Active Directory ou dans un conteneur. Si vous accordez l'autorisation Envoyer en tant que par cette méthode, peut accorder des autorisations pour les objets que vous n'aviez pas l'intention. En outre, vous risquez de perdre les autorisations pour les objets qui sont déplacés à partir du conteneur. Par conséquent, cette méthode n'est pas recommandée et peut avoir des implications en matière de sécurité qui doivent être soigneusement avant d'implémenter.

Si vous accordez l'autorisation Envoyer en tant qu'à l'aide de cette méthode, les comptes qui ont hérité de l'autorisation Envoyer en tant que seront invisibles au script qui est référencé à la fin de l'article. Pour traiter ces comptes en utilisant le script à une date ultérieure, vous devez supprimer l'autorisation héritée Envoyer en tant que premier.

Pour accorder l'autorisation Envoyer en tant que pour un seul compte sur tous les comptes d'utilisateur dans un conteneur ou un domaine Active Directory à l'aide de l'héritage, procédez comme suit :
  1. Démarrer la gestion Active Directory utilisateurs et ordinateurs console.
  2. Sur la Vue menu, assurez-vous que leFonctionnalités avancées option est sélectionnée. Si cette option n'est pas sélectionnée, la page de sécurité sera pas visible pour le domaine et conteneur objets.
  3. Ouvrez les propriétés du domaine ou du conteneur, puis Cliquez sur la page sécurité.
  4. Cliquez sur Avancée.
  5. Si le compte nécessitant une autorisation n'est pas déjà répertorié, Cliquez sur Ajouter, puis sélectionnez le compte. Sinon, double-cliquez sur le compte à modifier.
  6. Dans le S'applique À liste, cliquez surObjets utilisateur.
  7. Accordez l'autorisation Envoyer en tant que compte.
  8. Cliquez sur OK jusqu'à ce que vous avez quitté et enregistrés toutes les modifications.

Règles particulières pour les comptes protégés par adminSDHolder

Si vous utilisez le script pour octroyer l'autorisation Envoyer en tant que pour un propriétaire de boîte aux lettres est également administrateur de domaine, l'autorisation Envoyer en tant que ne sera pas efficace. Nous vous recommandons fortement que vous ne pas boîte aux lettres aux comptes d'utilisateurs qui disposent des droits d'administrateur de domaine ou qui sont protégés par adminSDHolder.

L'objet adminSDHolder est un modèle pour les comptes qui ont des droits d'administration Active Directory étendus. Pour empêcher une élévation involontaire des privilèges, tout compte qui est protégé par l'objet adminSDHolder doit disposer des autorisations correspondent à celles qui figurent sur l'objet adminSDHolder .

Si vous modifiez les droits ou les autorisations sur l'objet adminSDHolder d'un compte protégé, une tâche d'arrière-plan défait le changement en quelques minutes. Par exemple, si vous accordez l'autorisation Envoyer en tant que sur un objet administrateur de domaine pour un compte de service d'application, la tâche d'arrière-plan annule automatiquement l'autorisation.

Par conséquent, vous ne pouvez pas accorder l'autorisation Envoyer en tant qu'à un compte de service d'application pour un compte qui est protégé par l'objet adminSDHolder , sauf si vous modifiez l'objet adminSDHolder . Si vous ne modifiez pas l'objet adminSDHolder , les autorisations d'accès pour tous les comptes protégés changera. Ne vous devez modifier l'objet adminSDHolder après une révision complète des implications de sécurité qui peuvent se produire avec la modification.

Pour associer une boîte aux lettres à un compte qui est protégé par l'objet adminSDHolder , procédez comme suit :
  1. Démarrer la gestion Active Directory utilisateurs et ordinateurs console.
  2. Sur la Vue menu, assurez-vous que leFonctionnalités avancées option est sélectionnée. Si cette option n'est pas sélectionnée, la page de sécurité sera pas visible pour les objets compte d'utilisateur.
  3. Créer un compte utilisateur ordinaire en tant que la boîte aux lettres propriétaire.
  4. Affecter le compte d'utilisateur ordinaire une boîte aux lettres sur un échange serveur.
  5. Ouvrez les propriétés du nouveau compte de propriétaire de boîte aux lettres.
  6. Dans le Avancées d'Exchange zone, accorder la Autorisation d'accès de la boîte aux lettres complète à l'administrateur protégé compte.
  7. Dans la page sécurité, accordez l'autorisation Envoyer en tant que pour le compte d'administrateur protégé.
  8. Cliquez sur OK Pour quitter les propriétés de la objet propriétaire de boîte aux lettres.
  9. Cliquez droit sur l'objet compte propriétaire de boîte aux lettres, puis Cliquez sur Désactiver compte Pour désactiver le compte pour toutes les ouvertures de session.
Pour plus d'informations sur protégés par adminSDHolder comptes, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
907434Le « envoyer en tant que » est supprimée d'un objet utilisateur après avoir configuré le droit « Envoyer en tant que » dans le répertoire utilisateurs et ordinateurs Active snap-in en Exchange Server
318180 Thread AdminSDHolder affecte les membres transitifs des groupes de distribution
817433 Autorisations déléguées ne sont pas disponibles et l'héritage est désactivé automatiquement
306398 Objet AdminSDHolder affecte la délégation de contrôle pour les derniers comptes administrateur

Tâches spéciales pour BlackBerry Enterprise Server

Tâche 1: Assurez-vous que le serveur BlackBerry Enterprise Server s'exécute sous un compte unique distinct

Assurez-vous que le serveur BlackBerry Enterprise Server fonctionne comme un Séparez le compte qui est créée spécifiquement pour les tâches administratives. Par par défaut, ce compte est appelé « BESAdmin ».

Si vous avez un distinct compte d'administration de BlackBerry Enterprise Server, passez à l'étape 2.

Si vous ne disposez pas d'un compte séparé, créez un compte distinct. Ensuite, utilisez ce compte pour effectuer des tâches administratives. Pour savoir comment procéder si vous exécutez BlackBerry Enterprise Server 4.0 ou BlackBerry Enterprise Server 4.1, consultez le Guide d'Installation de BlackBerry Enterprise Server.  Pour obtenir des instructions sur la procédure à suivre si vous exécutez BlackBerry Enterprise Server 3.6, reportez-vous à l'Installation de BlackBerry Enterprise Server 2000/2003 et le Guide de démarrage.

Tâche 2: Assurez-vous que le compte de service BlackBerry Enterprise Server dispose des autorisations appropriées

Vérifiez que le compte de service BlackBerry Enterprise Server les autorisations appropriées.

Remarque : Si le compte est dans un domaine, assurez-vous que le compte est un membre du groupe utilisateurs du domaine uniquement. Sur un contrôleur de domaine, le compte doit être membre du groupe Administrateurs intégrés.
  1. Sur le serveur BlackBerry Enterprise Server, procédez comme suit :
    1. Assurez-vous que le compte est un membre de la variable locale Groupe d'administrateurs.
    2. Attribuer des « Ouvrir une session localement » et « Ouvrir une session en tant que Service » autorisations au compte.
  2. Autorisations administrateur Exchange Affichage seul de subvention à la niveau du groupe d'administration. Pour ce faire, procédez comme suit :
    1. Dans Gestionnaire système Exchange, cliquez droit sur le premier Exchange Server nom du groupe d'administration, puis cliquez sur Délégué Contrôle.
    2. Notez que le service BlackBerry Enterprise Server compte est répertorié comme possédant le rôle d'administrateur Exchange Affichage seul.
  3. Accorder « Envoyer en tant que, » « Recevoir comme » et « administrer les informations Stocker » les autorisations au niveau du serveur pour chaque serveur Exchange. Pour faire cela, procédez comme suit :
    1. Dans Gestionnaire système Exchange, cliquez droit sur le premier Exchange Server nom du groupe d'administration, puis développez le Serveurs groupe.
    2. Cliquez droit sur un serveur Exchange, cliquez sur Propriétés, puis cliquez sur Sécurité.
    3. Dans le volet supérieur, sélectionnez l'entreprise BlackBerry Compte de service du serveur. Dans le volet inférieur, assurez-vous que le « envoyer en tant que, » « Recevoir comme » et « Administrer la banque d'informations » autorisations est définies sur Autoriser.
    4. Répétez les étapes 3 b et 3c pour chaque échange serveur.
  4. Accorder « Envoyer en tant que, » « Recevoir comme » et « administrer les informations Autorisations stocker » à la banque de boîtes aux lettres. Pour ce faire, procédez comme suit :
    1. Dans Gestionnaire système Exchange, cliquez droit sur le premier Nom du groupe d'administration Exchange, puis développez le Serveurs groupe.
    2. Développez le premier groupe de la banque de boîtes aux lettres, cliquez droit sur chaque banque de boîtes aux lettres, cliquez sur Propriétés, puis cliquez sur Sécurité.
    3. Dans le volet supérieur, sélectionnez l'entreprise BlackBerry Compte de service du serveur. Dans le volet inférieur, assurez-vous que le « envoyer en tant que, » « Recevoir comme » et « Administrer la banque d'informations » autorisations est définies sur Autoriser.
    4. Répétez les étapes 4 b et 4c pour chaque banque de boîtes aux lettres sur chaque Exchange server.
  5. Dans le composant logiciel enfichable ordinateurs et utilisateurs Active Directory, procédez comme ces étapes :
    1. Avec le bouton droit de l'utilisateur qui vous souhaitez ajouter pour les autorisations, puis cliquez sur Propriétés.
    2. Sur la Sécurité onglet, ajouter le Compte de service blackBerry Enterprise Server et puis cliquez sur pour sélectionner le Envoyer en tant que case à cocher.
Si vous n'exécutez pas Exchange Server 2003, reportez-vous à la tâche 3.

Tâche 3: Effacer le cache du serveur BlackBerry Enterprise Server

Pour effacer le cache d'autorisations dans la banque Exchange, redémarrer les services associés à Blackberry et redémarrez les informations de Microsoft Exchange Banque d'informations. Après avoir Redémarrez la banque Exchange, vous devez redémarrer les services associés à RIM Blackberry pour accorder au compte « BESAdmin » le nouvellement ajouté envoyer en tant que autorisation sur la banque Exchange.

Plus d'informations

Autorisations d'accès boîte aux lettres et dossiers Exchange sont fractionnées entre les bases de données Active Directory et Microsoft Exchange. Toutefois, les deux types des autorisations sont définies dans la console de gestion des utilisateurs Active Directory, mais autorisations différentes sont stockées dans deux endroits différents.

En règle générale, Si une autorisation est définie sur la page sécurité pour un objet, il est actif Autorisation d'annuaire. Si elle est définie sur les droits de boîte aux lettres Exchange avancés page, il s'agit d'une autorisation de base de données Exchange.

L'attribut Active Directory msExchMailboxSecurityDescriptor est une copie de sauvegarde d'un sous-ensemble des droits de boîte aux lettres effectifs. Il est utilisé en interne par Exchange pour une variété de buts. En outre, l'attribut msExchMailboxSecurityDescriptor est mis à jour pour correspondre à des droits actuels effectifs si les administrateurs utilisent des interfaces prises en charge pour attribuer des droits. Toutefois, si l'attribut msExchMailboxSecurityDescriptor est modifié directement par un administrateur, les modifications ne sera pas propagée vers la banque Exchange et les modifications ne prendront pas effet. Il n'est pas garanti pour être synchronisé avec les droits de boîte aux lettres réelle. Vous doivent pas utiliser l'attribut msExchMailboxSecurityDescriptor pour lire ou écrire des droits de boîte aux lettres.
Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
310866Comment faire pour définir les droits de boîte aux lettres Exchange Server 2003 et Exchange 2000 Server sur une boîte aux lettres qui existe dans la banque d'informations

L'autorisation accès complet à la boîte aux lettres est un Autorisation de la banque Exchange de base de données. L'autorisation Envoyer en tant qu'est un actif Autorisation d'annuaire. Avant les modifications de fichier Exchange Store.exe décrit dans cet article, le système Exchange ne consultait pas le paramètre pour l'autorisation Envoyer en tant que si l'expéditeur disposait déjà de l'accès complet à la boîte aux lettres autorisation.

Inclusion de l'autorisation Envoyer en tant qu'avec le L'autorisation d'accès de la boîte aux lettres complète a permis aux administrateurs de serveur Exchange s'octroyer des autorisations Envoyer en tant qu'effectives pour des boîtes aux lettres sur un serveur qui ils administrent. Par séparant l'autorisation Envoyer en tant qu'à partir de l'autorisation accès complet à la boîte aux lettres, Les administrateurs Active Directory peuvent maintenant bloquer ce processus puisque l'envoyer en tant que l'autorisation est une autorisation Active Directory et pas une banque d'informations Exchange autorisation. Par conséquent, le processus n'est pas nécessairement sous le contrôle de Administrateurs Exchange.

Propriétaires de boîtes aux lettres

Un propriétaire de boîte aux lettres est défini comme le compte d'utilisateur Active Directory dont l'attribut msExchMailboxGUID porte l'identificateur global unique (GUID) pour une boîte aux lettres particulière. Un seul compte dans une forêt entière est autorisé à porter le GUID d'une boîte aux lettres particulière. Si vous tentez de définir un deuxième propriétaire avec le même GUID, Active Directory rejette la modification avec une erreur.

Lorsque vous ã un compte ou lorsque vous connectez un déconnecté boîte aux lettres à un compte Active Directory, le GUID de boîte aux lettres est automatiquement définie sur ce compte. Il est rarement nécessaire ou conseillé aux administrateurs la valeur GUID de boîte aux lettres directement.

Comptes externes associés

Une configuration Exchange courante consiste à installer Exchange dans un forêt de ressources. Une forêt de ressources est une forêt dans une forêt différente comptes d'utilisateurs qui auront des boîtes aux lettres dans le système. Cela présente un problème parce que l'attribut msExchMailboxGUID peut uniquement être définie sur les objets dans la même forêt que le Exchange server.

La solution à ce problème consiste à activer la boîte aux lettres une compte de la forêt de serveur Exchange. Ensuite, vous liez cette boîte aux lettres compte à une autre forêt ou dans un domaine Microsoft Windows NT 4. Vous pouvez Pour ce faire, l'octroi de l'autorisation compte externe associé. Un seul compte peut être l'autorisation compte externe associé. Le compte Autrement dit sélectionné doit être d'une forêt différente.

Lorsque vous définissez l'associé Autorisation compte externe, vous écrivez la valeur du SID pour l'externe compte à l'attribut msExchMasterAccountSID du propriétaire de la boîte aux lettres. Par conséquent, ce n'est pas un autorisation du tout, mais un moyen pratique pour contrôler la valeur de l'attribut msExchMasterAccountSID . Une fois que l'attribut msExchMasterAccountSID a été défini, le compte externe qui possède le SID aura accès Exchange comme s'il était le propriétaire de boîte aux lettres réelle compte.

Remarque : Cela s'applique uniquement à access d'Exchange, pas à tous Accès au répertoire actif. En outre, vous devez marquer le propriétaire de boîte aux lettres compte désactivé pour les ouvertures de session après avoir défini le compte externe associé autorisation afin que toutes les autorisations fonctionnent comme prévu.
Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
300456Autorisations et délégations clientes ne sont pas conservées après leur affectation dans Exchange 2000

Scénarios de délégation

Un délégué est un utilisateur qui a accès partiel à une autre boîte aux lettres et le droit d'envoyer des messages électroniques pour le compte de cette boîte aux lettres propriétaire. Un scénario de délégation courant consiste à accorder l'accès délégué à un assistant administratif pour le calendrier d'un cadre. Le délégué peut en général, lire et mettre à jour le calendrier. En outre, le délégué peut répondre à tous les messages électroniques au nom de l'exécutif.

Vous pouvez utiliser les deux interfaces suivantes pour accorder l'envoyer sur la part d'et déléguer des autorisations :
  • Dans l'objet propriétaire de boîte aux lettres, accorder l'autorisation Envoyer de part de dans l'Exchange-Général boîte de dialogue.
  • Dans Microsoft Office Outlook, utilisez le Délégués boîte de dialogue.
Ces deux méthodes définissent l'attribut publicDelegates de la boîte aux lettres. Tous les utilisateurs qui sont répertoriés dans cet attribut ont envoyer sur la part de l'autorisation du propriétaire de boîte aux lettres. Lorsque ces délégués envoient un message électronique comportant le nom du propriétaire dans la À partir de zone, le message électronique est envoyé à partir du délégué et non à partir ou en tant que propriétaire de la boîte aux lettres. Le message de courrier électronique À partir de Affiche la valeur suivante :
Nom du délégué> pour le compte dePropriétaire de boîte aux lettres>
Dans certains cas, vous ne puissiez pas définir l'attribut publicDelegates dans Outlook. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
329622 l'Autorisation « Envoyer de la part de » n'est pas affectée à un utilisateur après avoir délégué l'accès dans Outlook

Si vous accordez l'accès délégué à votre boîte aux lettres, le délégué peut utiliser l'envoi de la part de même si vous n'accordez pas l'accès à l'un de vos dossiers de boîtes aux lettres. L'autorisation fondamentale qui possède un délégué est l'envoi de la part de. Autorisations d'accès aux dossiers de votre boîte aux lettres sont séparées et doivent être accordées en plus des autorisations de délégation. En règle générale, les délégués va utiliser Outlook pour accéder aux dossiers individuels pour lequel vous avez donné leur autorisation. Pour ce faire, cliquez sur Ouvrir sur la Fichier menu dans Outlook, puis cliquez sur Dossier d'un autre utilisateur.

Vous pouvez également les délégués peuvent ouvrir votre boîte aux lettres en la faisant figurer comme une boîte aux lettres supplémentaire dans le Avancée onglet de leurs profils Outlook. Cette méthode provoque votre boîte aux lettres apparaissent dans l'arborescence de dossiers Outlook du délégué. En outre, Cette méthode permet d'accéder à tous les dossiers dans votre boîte aux lettres pour lesquelles un délégué a été accordé des autorisations.

Vous souhaiterez peut-être votre délégué parfois posséder l'autorisation Envoyer de part d'et à d'autres moments du Autorisation Envoyer en tant que. Pour configurer un délégué avec ces deux autorisations, procédez comme ces étapes :
  • Accorder au délégué l'autorisation accès complet à la boîte aux lettres. Ceci ne peut pas être effectuée via Outlook. Au lieu de cela, un administrateur Active Directory doit Pour cela sur le compte de propriétaire de boîte aux lettres. Même si vous accordez des autorisations de propriétaire sur chaque dossier dans votre boîte aux lettres, ce qui n'est pas la même autorisation que la version complète Autorisation d'accès aux boîtes aux lettres.
  • N'accordez pas au délégué l'autorisation Envoyer en tant que. Si vous accorder au délégué l'autorisation Envoyer en tant que, tous les messages électroniques qui sont envoyés par le délégué sera effectué avec l'autorisation Envoyer en tant que. Le délégué sera aucun plus être en mesure d'utiliser l'envoi de la part de.
Dans ce scénario, les délégués want utiliser l'envoi de la part de devraient vous connecter à leurs propres boîtes aux lettres. Si les délégués sont réponse à ou transfert d'un message électronique qui se trouve déjà dans un de vos dossiers, le message électronique est envoyé automatiquement pour le compte de vous. Si le les délégués créent un nouveau message électronique de votre part, ils doivent taper votre nom dans le À partir de boîte de message électronique doit être envoyé votre pour le compte.

Indépendamment de si les délégués ont ouvert vos dossiers ou de votre boîte aux lettres entière comme une boîte aux lettres secondaire, tous les messages électroniques qu'ils envoi de votre part utilisera l'envoyer au nom de l'autorisation en tant que leurs propres boîte aux lettres est la boîte aux lettres principale pour le profil Outlook actuel.

Lorsque délégués veulent envoyer un message électronique comme vous, ils doivent ouvrir une session sur votre boîte aux lettres à l'aide d'un profil Outlook séparé qui ouvre uniquement votre boîte aux lettres. Courrier électronique les messages que les délégués envoient quand ils sont connectés à ce profil seront est envoyé automatiquement de votre part.

Recherche de comptes qui ont l'autorisation accès complet à la boîte aux lettres sans l'autorisation Envoyer en tant que

L'exemple de script qui est décrite dans cette section permet de rechercher une Domaine Active Directory à la fois pour les comptes d'utilisateur dans lequel la boîte aux lettres pleine L'autorisation d'accès a été accordée à une boîte aux lettres sans l'autorisation Envoyer en tant que.

Important Avant de modifier les autorisations, consultez le "À propos des propriétaires de boîtes aux lettres avec délégués" section.

Le script comporte les trois modes suivants :
  • Exporter Vous pouvez produire une liste d'utilisateurs qui ont l'accès complet à la boîte aux lettres autorisation, mais pas l'autorisation Envoyer en tant que. Vous pouvez ensuite revoir cette liste dans Le bloc-notes ou un autre éditeur pour supprimer tous les comptes que vous ne souhaitez pas avoir l'autorisation Envoyer en tant que.
  • Importation Vous pouvez importer une liste d'utilisateurs qui ont l'accès complet à la boîte aux lettres autorisation à laquelle l'autorisation Envoyer en tant que doit également être accordée. Notez que vous avez Impossible d'utiliser ce script pour octroyer l'autorisation d'accès complet à la boîte aux lettres et les Autorisation Envoyer en tant que. Chaque compte doit avoir déjà l'accès complet à la boîte aux lettres autorisation à octroyer l'autorisation Envoyer en tant que.
  • SetAll Vous pouvez accorder l'autorisation Envoyer en tant que pour tous les utilisateurs du domaine ayant déjà l'autorisation accès complet à la boîte aux lettres pour une boîte aux lettres particulière. A fichier journal sera généré dans le même format que le fichier d'exportation. Il s'agit équivalent à l'exécution les modes exportation et importation sans modifier la fichier d'exportation.
Remarque : Il n'y a aucune fonction d'annulation dans ce script.

Autorisations requises pour le script

Vous devez exécuter le script pendant que vous êtes connecté avec un compte administratif qui est de la même forêt que le propriétaire de boîte aux lettres les comptes sont à partir de. Le script peut ne pas fonctionne avec un compte qui a autorisations d'administration inter-forêts. Le script peut également échouer lorsque vous exécuter à partir d'une station de travail est joint à une forêt différente de la forêt à laquelle les comptes de propriétaire de boîte aux lettres sont joints.

Étant donné ces conditions, vous pouvez exécuter le script avec plusieurs comptes administratifs dans un session d'ouverture de session unique à l'aide de la commande RunAs.exe . Cette procédure peut être utile si vous avez segmenté les autorisations Active Directory et Exchange Server, et que vous ne disposez d'aucun compte unique qui permet d'administrer tous les serveurs Exchange ou tout Domaines Active Directory. Vous pouvez ouvrir une invite de commande pour exécuter le script en tant que chaque compte administratif. Prenons l'exemple suivant :
RunAs.exe /user:domain\account cmd.EXE
Remarque : Vous ne devez pas exécuter plusieurs copies du script en même temps dans le même domaine.

Les champs dans le fichier d'exportation sont comme suit. Les champs sont décrits dans l'ordre dans lequel elles sont présentées dans le fichier d'exportation.
  • Nom complet du compte du propriétaire de boîte aux lettres

    Il peut y avoir plusieurs lignes dans la sortie de fichier qui répertorie le même propriétaire de boîte aux lettres. Ce problème se produit lorsque plusieurs autres comptes disposer des autorisations d'accès complet à la boîte aux lettres à la même boîte aux lettres.
  • Nom de domaine et d'ouverture de session d'un compte qui possède les autorisations d'accès complet à la boîte aux lettres, mais pas l'autorisation Envoyer en tant que

    Le même compte peut apparaître plusieurs fois dans l'ensemble le fichier d'exportation lorsque le compte a accès à plusieurs boîtes aux lettres. Il s'agit susceptibles d'être le cas d'un compte de service d'application ou d'une personne qui a gère plusieurs boîtes aux lettres de ressources.
  • Nom complet d'un compte qui possède l'autorisation accès complet à la boîte aux lettres, mais pas l'autorisation Envoyer en tant que

    Ce champ est fourni en plus de la Nom d'ouverture de sessionchamp pour faciliter l'identification du compte.
  • Statut délégué du propriétaire de la boîte aux lettres

    Si le propriétaire de boîte aux lettres dispose de délégués, la valeur du champ estDispose de délégués. Si le propriétaire de boîte aux lettres ne dispose d'aucun délégués, la valeur du champ est Non Délégués.
  • État activé ou désactivé du compte du propriétaire de boîte aux lettres

    Ce champ est utile lorsque vous souhaitez identifier les ressources comptes ou des comptes de boîte aux lettres inter-forêts. En règle générale, ces comptes sont désactivé.
  • Nom unique complet du compte du propriétaire de boîte aux lettres

    Ce champ est utile lorsque vous souhaitez identifier le domaine et le conteneur du compte du propriétaire de boîte aux lettres.
  • Nom unique complet de la base de données de boîtes aux lettres du propriétaire de boîte aux lettres

    Ce champ inclut la base de données, le groupe de stockage, le serveur et le groupe d'administration pour la boîte aux lettres.
Dans l'exemple suivant, l'utilisateur qui porte le nom d'ouverture de session « NoSendAs » a l'autorisation accès complet à la boîte aux lettres, mais pas l'envoyer en tant que autorisation pour "la boîte aux lettres « mailbox Owner :
"" "Boîte aux lettres propriétaire" """" Domain\NoSendAs"" """" non envoyer en tant qu'utilisateur"" """"A délégués"" """"activé"" "[champs supplémentaires omis]

Configuration de station de travail administrative pour le script

Ce script utilise les interfaces de gestion Exchange pour communiquer avec les serveurs Exchange. Par conséquent, ce script doit être exécuté à partir d'un échange serveur ou à partir d'une station de travail avec l'administrateur du système Exchange installé.

Modification du fichier d'exportation

Le fichier d'exportation est formaté en tant que texte brut Unicode ainsi que jeux de caractères à partir de plusieurs langues peuvent être satisfaite. Certains éditeurs de texte peut être impossible d'afficher ou de modifier le fichier correctement ou peut enregistrer le fichier en tant que ANSI ou texte ASCII. L'utilitaire Bloc-notes pour Windows Server 2003, Windows XP et Microsoft Windows 2000 peut gérer correctement le texte Unicode fichiers. En outre, Microsoft Office Excel peut gérer correctement texte Unicode fichiers.

Le fichier de sortie est dans un format délimité par des tabulations avec triple guillemets autour des valeurs de chaque champ. Les guillemets triples sont utilisés pour rendre l'importation et exportation à partir d'Excel plus déterministe. Dans Excel, les guillemets triples deviennent des guillemets simples et sera revenir aux guillemets triples lorsque le fichier est enregistré à nouveau en tant que texte Unicode. Consultez les instructions suivantes pour ouvrir et enregistrer un fichier d'exportation dans correctement Excel.

Vous pouvez également filtrer un fichier d'exportation sans l'aide d'Excel à l'aide l'utilitaire Find.exe ou Findstr.exe. Ces utilitaires sont inclus avec Windows. Ils vous permettent de rechercher des mots dans un fichier et Seules les lignes qui contiennent ces mots ou uniquement les lignes qui ne contiennent pas de sortie ces mots. Par exemple, si vous souhaitez créer une liste dans le fichier de tous les propriétaires de boîtes aux lettres qui ont des délégués, appliquez une de ces commandes pour créer un fichier qui contient uniquement les lignes avec la chaîne « Has Delegates » :
Find.exe « dispose de délégués » OriginalFile.txt > HasDelegates.txt

Findstr.exe/c: "dispose de délégués" OriginalFile.txt > HasDelegates.txt
Un autre exemple, supposons que vous filtrez toutes les les propriétaires de boîtes aux lettres avec délégués. Le commutateur /V retourne toutes les lignes qui ne correspondent pas aux mots de la recherche. Vous peut utiliser une de ces commandes pour générer un fichier excluant toutes "A Lignes Delegates » :
Find.exe « Aucun Delegates » OriginalFile.txt > NoDelegates.txt

Find.exe /V « dispose de délégués » OriginalFile.txt > NoDelegates.txt

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

Findstr.exe /V/c: "dispose de délégués" OriginalFile.txt > NoDelegates.txt
Vous pouvez également utiliser ces commandes pour générer un fichier qui répertorie tous les comptes où un compte de service d'application a plein Autorisation d'accès aux boîtes aux lettres, mais n'a ne pas l'autorisation Envoyer en tant que. Le commutateur /I rend la commande sans respecter la casse :
Find.exe /I « domain\ServiceAccount » OriginalFile.txt > ServiceAccount.txt

Findstr.exe /I/c: "domain\ServiceAccount" OriginalFile.txt > ServiceAccount.txt
Remarque : Si vous utilisez l'utilitaire Find.exe pour créer un fichier filtré, vous devez supprimer les lignes d'en-tête que crée l'utilitaire Find.exe en haut du fichier.

Do n'utilisez pas les noms de fichiers génériques (*. *) avec l'utilitaire Findstr.exe. Si vous utilisez des caractères génériques, chaque ligne dans le fichier de sortie doit être précédée du nom de fichier. Vous devez Examinez attentivement le fichier de sortie après avoir filtré à l'aide de Find.exe ou Findstr.exe afin de vérifier que votre filtre capturé ou exclu les comptes que vous avez but.

Dans l'exemple suivant, l'utilisateur qui porte le nom d'ouverture de session « NoSendAs » a l'autorisation accès complet à la boîte aux lettres, mais pas l'envoyer en tant que autorisation pour "la boîte aux lettres « mailbox Owner.
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [additional fields omitted] 

À propos des propriétaires de boîtes aux lettres qui ont des délégués

Un délégué qui a accès complet à la boîte aux lettres (également appelé un « super délégué ») habituellement ne doit pas être accordé l'autorisation Envoyer en tant que. Lors de la Ouvre une super session directement sur boîte aux lettres du propriétaire de boîte aux lettres, le délégué peut envoyer en tant que propriétaire. Lorsque le délégué utilise (fonctions) délégation d'OutlookSupplémentaires Boîtes aux lettres à ouvrir ou Ouvrez le dossier d'un autre utilisateur), les messages sont envoyés sur le compte du propriétaire.

Accorder l'autorisation Envoyer en tant que pour un super délégué uniquement si vous souhaitez que le délégué toujours envoyer en tant que propriétaire de la boîte aux lettres et ne jamais envoyer au nom de la propriétaire de boîte aux lettres. Nous vous recommandons que vous recherchez le fichier d'exportation pour le texte "A Délégués, » et ensuite déterminer si l'un des super délégués qui sont répertoriées sont en réalité des délégués du propriétaire de la boîte aux lettres.

Uniquement les super délégués répertoriés dans le fichier d'exportation. Les délégués ordinaires n'ont pas l'autorisation accès complet à la boîte aux lettres. En outre, lorsque vous accordez l'autorisation Envoyer en tant que à un délégué ordinaire, le délégué sera toujours envoyer en tant que propriétaire de la boîte aux lettres. Ceci est vrai même lorsque le délégué ordinaire n'a pas l'autorisation accès complet à la boîte aux lettres. Si vous accordez les autorisations Envoyer en tant qu'à un délégué lorsque vous n'aviez pas l'intention Vous pouvez facilement annuler l'autorisation ultérieurement.

Comment ouvrir un fichier d'exportation dans Excel

  1. Démarrez Excel avant d'ouvrir le fichier d'exportation.
  2. Ouvrez le fichier dans Excel en fichiers texte de la frappe. Démarrage de l'Assistant Importation de texte.
  3. Dans l'Assistant Importation de texte, modifiez ou acceptez le suivant paramètres :
    • Type de données d'origine: Délimité
    • Commencer l'importation à la ligne: 1
    • Origine du fichier: Unicode (UTF-8)
    • Délimiteurs: Onglet uniquement
    • Interpréter des séparateurs identiques consécutifs comme uniques: non marqué
    • Qualificateur de texte: "(guillemets doubles)

Comment enregistrer un fichier d'exportation après avoir modifié le fichier dans Excel

  1. Dans le fichier d'exportation, cliquez sur Enregistrer en tant que.
  2. Enregistrez le fichier en utilisant un nom différent pour que vous conservez un copie non modifiée du fichier d'origine.
  3. Cliquez sur Fichier, cliquez sur Enregistrer en tant que, entrez un nom de fichier pour enregistrer la sortie et puis cliquez sur Texte Unicode dans le Enregistrer en tant que Type liste.

Syntaxe du script

Il s'agit d'un script en mode texte, et il doit être exécuté dans une commande invite de fenêtre, pas à partir de la Exécuter boîte de dialogue. Pour ouvrir une commande fenêtre d'invite, cliquez sur Démarrer, cliquez sur Exécuter, type CMD dans le Ouvrir zone, puis cliquez sur OK.

Journal des erreurs et exporter les fichiers seront enregistrés dans le répertoire de l'invite de commande en cours. Vous devez disposer des autorisations pour créer des fichiers dans ce répertoire. Pour obtenir de l'aide de la ligne de commande, entrez la commande suivante :
CSCRIPT AddSendAs.vbs
Pour exporter les utilisateurs qui ont un accès complet à la boîte aux lettres sans l'autorisation Envoyer en tant que pour un domaine, entrez la commande suivante :
CSCRIPT AddSendAs.vbs [domain controller name] ?Export
Example:
CSCRIPT AddSendAs.vbs CORP-DC-1 ?Export
Le fichier d'exportation sera généré en tant que « Send_As_Export_H_MM_SS.txt ».

Pour importer un fichier d'exportation modifié, entrez la commande suivante :
CSCRIPT AddSendAs.vbs [domain controller name] ?Import [filename]


Example:


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

Comment faire pour accorder l'autorisation Envoyer en tant que pour chaque boîte aux lettres dans le domaine pour tous les utilisateurs qui disposent déjà de l'autorisation accès complet à la boîte aux lettres pour une boîte aux lettres

Remarque : Si vous avez des délégués qui ont également l'accès complet à la boîte aux lettres autorisation de votre organisation, vous ne devez pas utiliser le mode SetAll. Si vous le faites Utilisez le mode SetAll dans ce cas, l'envoyer en tant que délégués seront accordées autorisation. Ce comportement peut provoquer tous les messages électroniques qu'ils envoient à utiliser l'autorisation Envoyer en tant que plutôt qu'envoyer de la part de. Vous pouvez corriger ce problème en supprimant l'autorisation Envoyer en tant que qui a été par erreur accordée au délégué :
CSCRIPT AddSendAs.vbs [domain controller name] ?SetAll


Example:


CSCRIPT AddSendAs.vbs CORP-DC-1 ?SetAll
Si vous utilisez le mode SetAll, un fichier d'exportation sera généré en tant que Send_As_Export_H_MM_SS.txt. Vous devez enregistrer ce fichier car il est un enregistrement de tous les comptes qui ont été modifiés. Si vous deviez exécuter le script une fois encore, elle produirait pas la même liste de comptes, car la comptes seraient a déjà été accordées l'autorisation Envoyer en tant que.

Erreurs que vous rencontrez lorsque vous exécutez le script sera enregistré dans le fichier Send_As_Errors_H_MM_SS.txt. Le nom de fichier d'erreur correspondra l'horodatage de hours_minutes_seconds de n'importe quel fichier d'exportation associé.

Modification du script

Il peut y avoir des comptes de votre organisation qui disposent des autorisations sur de nombreux objets, mais vous ne souhaitez pas modifier les autorisations. Pour réduire la taille du fichier d'exportation, vous pouvez filtrer ces comptes en modifiant la Variable FMA_EXCLUSIVE_LIST qui se trouve en haut du script. Par par défaut, cette variable répertorie quelques comptes qui doivent être supprimés dans la sortie du script. Vous pouvez ajouter d'autres comptes en utilisant le format suivant.
& "<Domain\Name>" & OUTPUT_DELIMITER
Par exemple, vous pourriez modifier la valeur de la variable suivante.
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
pour qu'il apparaisse comme suit.
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER & "Mydomain\Service1" & OUTPUT DELIMITER
Cette modification supprime la liste du compte « Mydomain\Service1 » dans le fichier d'exportation ainsi que « NT AUTHORITY\SELF » et « Autorite NT\SYSTEM ». Notez que la valeur Domain\Name respecte la casse et il doit apparaître exactement comme il le fait ou comme il le ferait dans le fichier d'exportation.

Il existe une autre variable modifiable, FMA_EXCLUSIVE_EXSVC, qui a la valeur par défaut » \Exchange Services » & OUTPUT_DELIMITER. « Exchange Services » sont le nom d'un compte qui détient les autorisations par le biais du connecteur Active Directory dans Exchange Server 5.5 et dans les scénarios de migration et coexistence d'Exchange 2000. Ce compte est créé dans plusieurs domaines, et il peut apparaître à plusieurs reprises dans le fichier d'exportation si Il n'est pas supprimé.

La variable FMA_EXCLUSIVE_EXSVC accepte uniquement un seul compte en tant que sa valeur. Le nom du compte ne respecte pas la casse. Le compte doit commencer par une barre oblique inverse (\) et ne doit pas inclure le domaine auquel appartient le compte. Le compte sera supprimé pour tous domaines dans lesquels il existe.

Si vous avez utilisé la migration de tiers outils ou méthodes de synchronisation d'annuaire, un compte différent peut exister dans plusieurs domaines ayant accordé massivement des autorisations aux boîtes aux lettres utilisateur. Dans ce scénario, vous pouvez remplacer le nom de ce compte par « \Exchange Services ».

Conseils et avertissements

  • Ne supprimez pas les fichiers journaux et les erreurs générées par le script. Ils peuvent être utiles pour le dépannage ou l'annulation des modifications une version ultérieure. N'oubliez pas que, dès que vous avez accordé l'autorisation Envoyer en tant que pour une compte, il sera plus consigné dans le fichier d'exportation.
  • Si une base de données ou un serveur Exchange est arrêté, le traitement du script sera plus lent. Dans ce cas, vous pouvez trier le fichier d'exportation par base de données et déplacer les lignes qui sont associés à une base de données arrêtée dans un fichier différent pour une version ultérieure importer.
  • Le script supprime la sortie de comptes où l'ouverture de session nom se termine par «$ » ou est NT AUTHORITY\SYSTEM. Ces comptes système ne devraient pas généralement besoin de l'envoyer en tant qu'autorisation et leur suppression à partir du fichier d'exportation réduit considérablement sa taille.
  • Le fichier d'exportation doit être au format Unicode avant de pouvoir être importé. Si vous avez involontairement enregistré le fichier en tant que texte ANSI, vous pouvez : résoudre ce problème en chargeant le fichier dans le bloc-notes et enregistrez-le au format Unicode texte.
  • Si une importation ne fonctionne pas, résoudre les problèmes avec les comptes de test et une seule ligne dans le fichier d'importation. Vous devez configurer un test qui compte a une boîte aux lettres sur un serveur Exchange en cours d'exécution et ensuite accorder l'autorisation accès complet à la boîte aux lettres vers un autre compte de test. N'accordez pas l'autorisation Envoyer en tant que sur l'autre compte de test.
  • Il n'existe aucun mode d'annulation de ce script. Afin d'éliminer les Autorisations Envoyer en tant que vous avez accordé avec ce script, vous devez générer un autre script ou les supprimer manuellement. Pour éviter le mode d'annulation n'est pas fourni. l'utilisation de ce script pour supprimer les autorisations Envoyer en tant que pour tous les utilisateurs dans un organisation.
  • Le script ne gère pas correctement un compte qui a reçu le contrôle total d'un objet utilisateur avec accès complet à la boîte aux lettres. Contrôle total inclut l'autorisation Envoyer en tant que mais le script exporte le compte comme s'il n'avait pas l'autorisation Envoyer en tant que. Vous pouvez augmenter la taille de le fichier d'exportation, mais aucun dommage se produit à partir de l'importation du fichier, puis redondante l'octroi d'autorisations Envoyer en tant qu'à ces comptes.
  • Comptes d'utilisateur Active Directory qui ont distingué les noms et qui comprennent les onglets ou guillemets doubles non concordants ne peuvent pas être traitées à l'aide de ce script. Le script peut correctement traiter un nom qui comprend des guillemets doubles concordants comme suit :
    "CN = First « Nickname » Last, DC = domain, DC = com"
  • Chaque version de Microsoft Excel prend en charge une limite maximale des lignes différentes. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
    120596Fichiers texte qui sont supérieures à 65 536 lignes ne peuvent pas être importés à Excel 97, Excel 2000, Excel 2002 et Excel 2003
    Limites de ligne pour Excel 2003 et Excel 2007 sont les suivantes :
    • Lignes d'Excel 2003 : 65 536
    • Lignes Excel 2007: 1 048 576
    Si votre fichier de sortie est supérieure à ces limites, vous devez scinder le fichier en sections avant de le charger dans Excel.
  • Le fichier Send_As_Errors répertorie les comptes spécifiques où un échec de lecture ou d'autorisations d'écriture s'est produite. Si d'autres comptes dans le domaine ont été correctement traités, ces comptes peuvent avoir quelque chose en commun le script qui empêche l'exécution avec eux. Problèmes courants incluent la suivant :
    • Manque d'autorisations administratives pour afficher ou définir propriétés sur les comptes.
    • La banque de boîtes aux lettres Exchange n'est pas en cours d'exécution.
    • La station de travail n'est pas un membre de la même domaine.
    • Le compte administratif utilisé n'est pas à partir de la même forêt.
Pour exécuter ce script, copiez et collez toutes les lignes entre début SCRIPT et fin du SCRIPT dans un éditeur de texte brut tel que le bloc-notes. Enregistrez le script sous AddSendAs.vbs. DÉBUT DU 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 DE FIN

Microsoft fournit des exemples de programmation à titre d'illustration uniquement, sans garantie expresse ou implicite. Cela sous-entend, sans toutefois être exhaustif, un processus opérationnel pour des circonstances d'utilisation particulières. Cet article suppose que vous êtes familiarisé avec le langage de programmation présenté ainsi qu'avec les outils utilisés pour créer et déboguer les procédures. Ingénieurs du support technique Microsoft peuvent vous expliquer la fonctionnalité d'une procédure particulière. Toutefois, ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques.

Pour plus d'informations sur la prise en charge les options qui sont disponibles auprès de Microsoft, visitez le site Web Microsoft suivant site :
http://support.Microsoft.com/default.aspx?scid=fh ;[LN] ;CNTACTMS
Les produits tiers qui traite de cet article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft n'offre aucune garantie, expresse ou implicite, concernant les performances ou la fiabilité de ces produits.

Propriétés

Numéro d'article: 912918 - Dernière mise à jour: mardi 8 mai 2012 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange Server 2003 Enterprise Edition
Mots-clés : 
kbtshoot kbpending kbbug kbprb kbmt KB912918 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 912918
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com