Benutzer können keine e-Mail-Nachrichten von einem mobilen Gerät oder von einem freigegebenen Postfach in Exchange 2000 Server und Exchange Server 2003 senden

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 912918 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Wenn Sie versuchen, eine e-Mail-Nachricht in Microsoft Exchange senden 2000Server oder in Microsoft Exchange Server 2003 können Sie die e-Mail-Nachricht können nicht senden Meldung. Darüber hinaus erhalten Sie eine der folgenden Fehlermeldungen oder einer der folgenden non-Delivery Reports (NDR).

Fehlermeldungen

  • Der Zugriff wurde verweigert
  • Sie haben keine ausreichende Berechtigung Um diesen Vorgang für dieses Objekt auszuführen. Finden Sie die Kontaktperson des Ordners oder des Systems Administrator.
  • Nicht aufgeführter Nachricht Fehler
  • MAPI_E_NO_ACCESS -2147024891
  • Fehler beim Senden der e-Mail-Nachricht für Benutzer Benutzername (HRESULT:-2147024891) anhalten Benutzer Benutzername. (Sicherheitsfehler- Kann nicht das Postfach des Benutzers zugreifen.)
  • Ressource nicht Gefunden
Hinweis Sie erhalten die Fehlermeldung "Zugriff verweigert" oder "Ressource not found"Fehlermeldung von Microsoft Outlook Web Access, wenn Sie als, in angemeldet sind einem Delegieren Sie Konto.

Unzustellbarkeitsberichte

  • Sie sind nicht berechtigt, an diesen Empfänger zu senden. Für Unterstützung benötigen, wenden Sie sich an Ihren Systemadministrator.
  • Die Nachricht konnte nicht gesendet werden, mit Ihrem Postfach. Sie tun haben Sie nicht die Berechtigung zum Senden der Nachricht im Auftrag des angegebenen Benutzers.

Produkte sind betroffen?

Dieses Problem tritt bekanntermaßen auf den folgenden Fremdanbieter-auswirken Produkte:
  • Research In Motion (RIM) BlackBerry Enterprise Server (BES)
  • Good Technology GoodLink Wireless Messaging
Dieses Problem kann auch benutzerdefinierte MAPI oder CDO-betreffen. Objects (CDO)-basierte Programme, die e-Mail-Nachrichten senden.

Andere Produkte von Drittanbietern, die Dienstkonten zum Senden von e-Mail-Nachrichten verwenden können auch beeinflusst werden. Wenn Sie ein Fremdanbieterprodukt ausführen, die von dieser betroffen ist Problem, empfehlen wir, dass Sie den Kreditor erhalten Sie Hilfe bei der Lösung dieses Problems Problem.

Hat jedoch bestätigt wurde, die den folgenden Fremdanbieter- Produkte sind nicht von diesem Problem betroffen:
  • Cisco Unity Unified Messaging
  • Quest Migration Suite for Exchange
  • Das Microsoft ExMerge-Dienstprogramm für Exchange

Ursache

Dieses Problem kann auftreten, wenn eine der folgenden Bedingungen ist True:
  • Sie sind nicht berechtigt zum Senden von e-Mail-Nachrichten als der Postfacheigentümer für das Konto, das Sie verwenden, um die E-mail zu senden Meldung.
  • Sie werden Microsoft Exchange 2000 Server Service Pack ausführen. 3 (SP3) zusammen mit einer Version der Store.exe-Datei, die zu oder später als Version entspricht 6619.4. Version 6619.4 wurde erstmals in der folgenden Microsoft zur Verfügung gestellt. Knowledge Base-Artikel:
    915358 Ein Hotfix ist verfügbar, um das Verhalten von der Berechtigung "Vollständiger Postfachzugriff" in Exchange 2000 Server ändern
  • Microsoft Exchange Server 2003 SP1 werden zusammen mit einer Datei-Version von Store.exe ausgeführt werden, die gleich oder höher als version 7233.51.
  • Sie sind Exchange Server 2003 SP2 zusammen mit einem Store.exe ausgeführt. Dateiversion, die später als Version 7650.23 oder zu entspricht. Version 7650.23 wurde zuerst in der folgenden Microsoft Knowledge Base zur Verfügung gestellt Artikel:
    895949 Verhaltens der Berechtigung "Senden als" ändern in Exchange 2003
    Diese Änderung ist nicht in Exchange Server 2003 SP2 enthalten. Wenn Sie die Exchange Server 2003 SP1-Version der Store.exe-Datei, die diese Änderung enthalten ausgeführt wurde und Sie auf Exchange Server 2003 SP2 aktualisieren, installieren Sie die SP2-Version dieses Hotfixes, um das neue Verhalten beizubehalten. Diese Änderung wird in Microsoft Exchange Server 2003 SP3 enthalten sein.

SICHERHEITSASPEKTE

Bevor Sie die Versionen der Store.exe-Dateien, die in aufgeführt sind die Im Abschnitt die Berechtigung Vollständiger Postfachzugriff implizit gewährt "Ursache" Berechtigung als Postfacheigentümer senden. Dies bedeutete, dass ein anderes Konto, das verfügt über vollständigen Postfachzugriff Berechtigung e-Mail-Nachrichten senden kann, die angezeigt wurde als ob sie vom Eigentümer Postfachs gesendet wurden.

Viele Microsoft Exchange Kunden haben darum gebeten, dass die Berechtigung Senden als aus dem vollständigen getrennt werden Postfach über die Zugriffsberechtigung für die folgenden zwei Gründen:
  • Um e-Mail-spoofing zu verhindern.
  • Um sicherzustellen, e-mail, die von gesendeten Nachrichten ein Delegaten kann immer eindeutig von e-Mail-Nachrichten unterscheiden, die gesendet werden durch die tatsächlichen Postfacheigentümer.
Alle Versionen von Exchange-Informationsspeicher werden nun explizit die Berechtigung "Senden als" zum Senden von e-Mail-Nachrichten als erforderlich der Besitzer des Postfachs. Sind jedoch die folgenden drei Ausnahmen für diese Anforderung:
  • Das Postfacheigentümer-Konto erfordert keine explizite senden als Berechtigungen für das eigene Postfach.
  • Zugeordnetes externes Konto für ein Postfach nicht explizite Berechtigungen Senden als erforderlich.
  • Ein Delegat-Konto, das auch die vollständigen Postfachzugriff verfügt Berechtigung erfordert keine explizite Berechtigung Senden als.
Weitere Informationen zu diesen Ausnahmen finden Sie unter "mehr Im Informationsabschnitt ".

Lösung

Alle Konten, die teilweisen oder vollständigen Zugriff auf ein Postfach, mit Ausnahme derjenigen, die im Abschnitt "Ursache" gewährt werden müssen nun explizit die Berechtigung "Senden als" für das Postfacheigentümer-Konto erteilt werden um e-Mail-Nachrichten als Postfachbesitzer senden. Dies umfasst Anwendungsdienstkonten, die Funktionen wie das Senden von e-Mail-Nachrichten für Benutzer mobiler Geräte durchführen.

Berechtigung "Senden als" gilt für die Identität eines Active Directory-Benutzerobjekts, nicht zum Inhalt der Postfächer, die in einer Datenbank gespeichert sind. Aus diesem Grund muss die Berechtigung Senden als das Dienstkonto auf jedem Benutzerobjekt gewährt werden, das ein Postfach besitzt. Wenn e-Mail-Nachrichten gesendet werden, werden sie nicht von einem bestimmten Postfach oder Datenbank, sondern von einem Benutzer gesendet. Der Benutzer kann sein, den Besitzer des Postfachs oder ein anderes Konto, das über die Berechtigung Senden als verfügt.

Nicht die Berechtigung Senden als auf einem Server mit Exchange Server oder ein Datenbankobjekt gewähren und erzielen die Auswirkungen der Gewährung der Berechtigung "Senden als" für alle Postfächer in der Datenbank. Gewähren der Berechtigung "Senden als" auf einem Exchange-Datenbankobjekt gibt Ihnen die Berechtigung für die Datenbank selbst. Die Berechtigung wird durch alle Postfächer in der Datenbank geerbt. Allerdings ist es Ihnen nicht Berechtigung für die Benutzer über die Berechtigung Senden als verfügen und die Postfächer in der Datenbank haben.

Hinweis Gewähren der Berechtigung "empfangen als" für eine Exchange-Datenbank ist die Erteilen der Berechtigung "Vollständiger Postfachzugriff" für alle funktionale Entsprechung Postfächer in der Datenbank. Dies unterscheidet sich vom Verhalten der senden Als Berechtigung.

Erteilen der Berechtigung "Senden als" für ein Konto für

Nach der explizit ein anderes Konto als ein Postfach senden Berechtigung Besitzer, gehen Sie folgendermaßen vor:
  1. Starten Sie das Active Directory-Benutzer und Computer-management die Konsole.
  2. Auf der Ansicht Menü, stellen Sie sicher, dass dieErweiterte Funktionen Option ist aktiviert. Wenn diese Option nicht ist ausgewählt haben, wird die Seite Sicherheit für Benutzer-Account nicht angezeigt Objekte.
  3. Öffnen Sie die Eigenschaften des Benutzerkontos, das besitzt die Postfach.
  4. Klicken Sie auf der Sicherheit Registerkarte.
  5. Wenn das Konto nicht bereits in der Liste der Gruppen- oder Benutzernamen ist Namen, fügen Sie das Konto, das die Berechtigung "Senden als" für dieses haben sollte der Benutzer.
  6. In der Berechtigungen auf der Für "Senden als" zulassen Berechtigung für das entsprechende Konto.
  7. Klicken Sie auf OK.
  8. Starten Sie den Microsoft Exchange Information Store Service auf die betroffenen Exchange-Server.
Hinweis Wenn Sie Microsoft Exchange Information Store nicht neu starten Dienst, der Dienst Microsoft Exchange Information Store aktualisiert seine Berechtigungen Zwischenspeichern, um die neue stellen Berechtigungen wirksam entsprechend der Wert, der im folgenden Unterschlüssel der Registrierung festgelegt ist:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem

Wertname: Mailbox Cache Age Limit
Werttyp: REG_DWORD
Basis: Dezimal
Wertdaten: Mailbox Informationen Cache Age Limit in Minuten.
Der Standardwert für diesen Registrierungseintrag ist 120 Minuten (zwei Stunden). Wenn Sie diesen Registrierungseintrag geändert haben, müssen Sie Microsoft starten. Exchange-Informationsspeicherdienst.

Hinweis Wenn Sie die Zeitüberschreitungswerte auf einen sehr niedrigen Wert einstellen, können Sie beeinträchtigen Sie die Leistung des Servers.

Gewusst wie: gewähren die Berechtigung "Senden als" für mehrere Konten

Am Ende dieses Artikels, die eine Domäne Active Directory für Konten durchsucht, die über die Berechtigung "Vollständiger Postfachzugriff" ohne die Berechtigung "Senden als" für ein Postfach verfügen, ist ein Beispielskript bereitgestellt. Dies sind die Merkmale eines Dienst oder Ressource ein, die von dieser Sicherheitsänderung betroffen sind. Das Skript kann eine Exportdatei generieren, die Sie überprüfen, bearbeiten und dann erneut importieren, um die Berechtigung "Senden als" Konten gewähren, die diese Berechtigung benötigen.

Sie können die Berechtigung Senden als auch durch Vererbung auf jedem Benutzerobjekt in Active Directory-Domäne oder in einem Container erteilen. Wenn Sie die Berechtigung Senden als von dieser Methode gewähren, können Sie Berechtigungen für Objekte erteilen, die Sie nicht möchten. Darüber hinaus verlieren Sie möglicherweise Berechtigungen für Objekte, die aus dem Container verschoben werden. Aus diesem Grund wird diese Methode wird nicht empfohlen und möglicherweise Auswirkungen auf die Sicherheit, die sorgfältig überlegt werden, sollte bevor Sie es implementieren.

Wenn Sie die Berechtigung "Senden als" mithilfe dieser Methode gewähren, sind die Konten, die die Berechtigung Senden als geerbt haben für das Skript sichtbar, die am Ende dieses Artikels verwiesen wird. Um diese Konten mithilfe des Skripts zu einem späteren Zeitpunkt zu verarbeiten, müssen Sie zuerst die ererbte Berechtigung Senden als entfernen.

Gehen Sie folgendermaßen vor, um die Berechtigung "Senden als" für ein einzelnes Konto für alle Benutzerkonten in einer Active Directory-Domäne oder einem Container durch Vererbung zu gewähren:
  1. Starten Sie das Active Directory-Benutzer und Computer-management die Konsole.
  2. Auf der Ansicht Menü, stellen Sie sicher, dass dieErweiterte Funktionen Option ist aktiviert. Wenn diese Option nicht ist ausgewählt haben, wird die Seite Sicherheit für die Domäne und Container nicht angezeigt Objekte.
  3. Öffnen Sie die Eigenschaften der Domäne oder des Containers, und klicken Sie dann Klicken Sie auf die Seite Sicherheit.
  4. Klicken Sie auf Erweiterte.
  5. Wenn das Konto, das Berechtigung benötigt noch nicht aufgeführt ist, Klicken Sie auf Hinzufügen, und wählen Sie dann das Konto. Andernfalls doppelklicken Sie auf das Konto für die Bearbeitung.
  6. In der Angewendet auf aufBenutzerobjekte.
  7. Gewähren Sie dem Konto die Berechtigung Senden als.
  8. Klicken Sie auf OK bis Sie beendet und gespeichert haben alle Änderungen.

Besondere Regeln für AdminSDHolder-geschützte Konten

Wenn Sie das Skript verwenden, um die Berechtigung "Senden als" für einen Postfachbesitzer zu gewähren, der auch ein Domänenadministrator ist, werden die Berechtigung Senden als nicht wirksam. Es wird dringend empfohlen, dass Sie nicht postfachaktiviert sind Benutzerkonten, über Domänenadministratorrechte verfügen oder AdminSDHolder-geschützte.

Das Objekt "AdminSDHolder" ist eine Vorlage für Konten, die über umfassende Verwaltungsrechte für Active Directory verfügen. Um unbeabsichtigte Erhöhung von Berechtigungen zu verhindern, muss jedes Konto, das durch das Objekt AdminSDHolder geschützt ist berechtigt, die denen entsprechen, die auf das Objekt "AdminSDHolder" aufgeführt sind.

Wenn Sie die Rechte oder die Berechtigungen für das Objekt "AdminSDHolder" für ein geschütztes Konto ändern, wird eine Hintergrundaufgabe die Änderung innerhalb weniger Minuten rückgängig machen. Z. B. Wenn Sie die Berechtigung "Senden als" auf ein Domain-Administrator-Objekt für ein Anwendungsdienstkonto gewähren, wird die Hintergrundaufgabe automatisch die Berechtigung widerrufen.

Sie können nicht aus diesem Grund die Berechtigung "Senden als" zu einem Anwendungsdienstkonto für ein Konto gewähren, die vom Objekt "AdminSDHolder" geschützt ist, es sei denn, Sie das AdminSDHolder -Objekt selbst ändern. Wenn Sie das Objekt AdminSDHolder ändern, ändert die Zugriffsberechtigungen für alle geschützten Konten. Sie sollten nur nach einer vollständigen Überprüfung der Auswirkungen auf die Sicherheit, die auftreten können das Objekt AdminSDHolder ändern, mit der Änderung.

Um ein Postfach mit einem Konto zuzuordnen, ist geschützt durch das Objekt "AdminSDHolder" gehen Sie folgendermaßen vor:
  1. Starten Sie das Active Directory-Benutzer und Computer-management die Konsole.
  2. Auf der Ansicht Menü, stellen Sie sicher, dass dieErweiterte Funktionen Option ist aktiviert. Wenn diese Option nicht ist ausgewählt haben, wird die Seite Sicherheit nicht für Benutzerkontoobjekte sichtbar.
  3. Erstellen Sie ein gewöhnliches Benutzerkonto, das Postfach des Leiters Besitzer.
  4. Weisen Sie dem gewöhnlichen Benutzerkonto ein Postfach auf einem Exchange Server.
  5. Öffnen Sie die Eigenschaften des neuen Postfacheigentümer-Kontos.
  6. In der Exchange-Erweitert das Feld, gewähren Sie der Vollständiger Postfachzugriff für den geschützten administrator das Konto.
  7. In der Seite Sicherheit gewähren die Berechtigung "Senden als" auf der geschützten Administratorkonto.
  8. Klicken Sie auf OK um die Eigenschaften des verlassen die Postfacheigentümer-Objekt.
  9. Mit der rechten Maustaste das Postfacheigentümer-Kontoobjekt, und klicken Sie dann Klicken Sie auf Konto deaktivieren um das Konto für alle Anmeldungen zu deaktivieren.
Weitere Informationen zu AdminSDHolder-geschützten Konten, klicken Sie auf die nachstehenden Artikelnummern klicken, um die Artikel der Microsoft Knowledge Base:
907434Die "Senden als", die Rechte aus einem Benutzerobjekt entfernt wird, nachdem Sie die "Send As" Rechte in der Active Directory-Benutzer und-Computer konfiguriert Snap-in in Exchange Server
318180 AdminSDHolder Thread wirkt sich auf transitive Mitgliedern Verteilergruppe
817433 Delegierte Berechtigungen sind nicht verfügbar und Vererbung wird automatisch deaktiviert.
306398 Auswirkungsdelegierung von Steuerelement für letzte Administratorkonten AdminSDHolder object

Spezielle Aufgaben für BlackBerry Enterprise Server

Aufgabe 1: Stellen Sie sicher, dass das BlackBerry Enterprise Server als ein separates, eindeutiges Konto ausgeführt wird

Stellen Sie sicher, dass das BlackBerry Enterprise Server, als ausgeführt wird ein Trennen Sie Konto, das speziell für Administrationsaufgaben erstellt wird. Durch wird dieses Konto "BESAdmin." genannt

Wenn Sie eine Separate haben Konto für die Verwaltung von BlackBerry Enterprise Server, fahren Sie mit Aufgabe 2.

Wenn Sie nicht über ein separates Konto verfügen, erstellen Sie ein separates Konto. Verwenden Sie dieses Konto dann, um administrative Aufgaben auszuführen. Anweisungen dazu, wie Sie dies tun, wenn Sie BlackBerry Enterprise Server 4.0 oder BlackBerry Enterprise Server 4.1 ausführen finden Sie unter dem BlackBerry Enterprise Server-Installationshandbuch.  Hinweise dazu, wie Sie diese Option, wenn Sie BlackBerry Enterprise Server 3.6 ausführen, finden Sie unter dem BlackBerry Enterprise Server 2000/2003-Installation and Getting Started Guide.

Aufgabe 2: Stellen Sie sicher, dass das BlackBerry Enterprise Server-Dienstkonto über die entsprechenden Berechtigungen verfügt

Stellen Sie sicher, dass das BlackBerry Enterprise Server-Dienstkonto verfügt die entsprechenden Berechtigungen.

Hinweis Wenn das Konto in einer Domäne ist, stellen Sie sicher, dass das Konto ein Mitglied nur die Gruppe der Domänenbenutzer. Auf einem Domänencontroller das Konto Mitglied der integrierten Administratorgruppe sollte sein.
  1. Gehen Sie folgendermaßen vor, auf dem BlackBerry Enterprise Server:
    1. Stellen Sie sicher, dass das Konto Mitglied der lokalen ist Gruppe "Administratoren".
    2. Weisen Sie "Lokal anmelden" und "Anmelden als Dienst" Berechtigungen für das Benutzerkonto.
  2. GRANT Exchange-Administrator mit Leserechten Berechtigungen auf der Ebene der administrativen Gruppe. Gehen Sie hierzu folgendermaßen vor:
    1. In Exchange-System-Manager die erste Maustaste Name der administrativen Gruppe Exchange Server, und klicken Sie dann auf Delegaten Steuerelement.
    2. Beachten Sie, dass das BlackBerry Enterprise Server-Dienst Konto wird mit die Rolle des Exchange-Administrator mit Leserechten aufgelistet.
  3. Erteilen Sie "Senden als",""Empfangen als"und"Verwalten von Informationen Store"Berechtigungen auf Serverebene für jeden Exchange-Server. Zu tun Hierzu gehen Sie folgendermaßen vor:
    1. In Exchange-System-Manager die erste Maustaste Name der administrativen Gruppe Exchange Server, und erweitern Sie dann die Server Gruppe.
    2. Maustaste auf einen Exchange-Server, und klicken Sie auf Eigenschaften, und klicken Sie dann auf Sicherheit.
    3. Wählen Sie im oberen Bereich der BlackBerry Enterprise Server-Dienstkonto. Stellen Sie sicher, dass im unteren Bereich der "Senden als" "Empfangen als" und "Informationsspeicher verwalten" Berechtigungen legen Zulassen.
    4. Wiederholen Sie Schritte 3 b und 3 c für die einzelnen Exchange Server.
  4. Erteilen Sie "Senden als",""Empfangen als"und"Verwalten von Informationen Speichern"die Berechtigungen für den Postfachspeicher. Gehen Sie hierzu folgendermaßen vor:
    1. In Exchange-System-Manager die erste Maustaste Name der administrativen Gruppe Exchange, und erweitern Sie dann die Server Gruppe.
    2. Die erste Mailbox Store Gruppe der rechten Maustaste auf jede Postfachspeicher, klicken Sie auf Eigenschaften, und klicken Sie dann auf Sicherheit.
    3. Wählen Sie im oberen Bereich der BlackBerry Enterprise Server-Dienstkonto. Stellen Sie sicher, dass im unteren Bereich der "Senden als" "Empfangen als" und "Informationsspeicher verwalten" Berechtigungen legen Zulassen.
    4. Wiederholen Sie die Schritte 4 b und 4 c für jeden Postfachspeicher auf jedem Exchange-Server.
  5. Führen Sie in das Active Directory-Benutzer und Computer-Snap-in Diese Schritte:
    1. Mit der rechten Maustaste des Benutzers, die Sie hinzufügen möchten Berechtigungen für, und klicken Sie dann auf Eigenschaften.
    2. Auf der Sicherheit Registerkarte, fügen Sie die BlackBerry Enterprise Server-Dienstkonto, und klicken Sie dann auf die Senden als das Kontrollkästchen.
Wenn Sie Exchange Server 2003 nicht ausgeführt werden, finden Sie in Aufgabe 3.

Aufgabe 3: Deaktivieren Sie den Cache auf dem BlackBerry Enterprise Server

Um den Berechtigungscache im Exchange-Informationsspeicher zu löschen, neu starten die Blackberry-spezifischen Dienste, und starten Sie Microsoft Exchange-Informationen Store. Nachdem Sie Starten Sie den Exchange-Informationsspeicher neu, müssen Sie die RIM Blackberry-spezifischen Dienste, um dem Konto "BESAdmin" die neu hinzugefügten senden als erteilen neu starten Berechtigung für den Exchange-Informationsspeicher.

Weitere Informationen

Exchange-Postfächer und Ordner Zugriffsberechtigungen werden geteilt. zwischen Active Directory und Microsoft Exchange-Datenbanken. Jedoch beide Arten Berechtigungen werden in der Active Directory-Benutzerverwaltungskonsole festgelegt, aber andere Berechtigungen werden in zwei separaten Speicherorten gespeichert.

Im Allgemeinen Wenn eine Berechtigung auf der Seite Sicherheit für ein Objekt festgelegt ist, ist es eine aktive Directory-Berechtigung. Wenn sie Exchange Advanced Mailbox Rights festgelegt wird Seite ist eine Exchange-Datenbankberechtigung.

Das Active Directory-Attribut MsExchMailboxSecurityDescriptor ist eine Sicherungskopie eines Teils der effektiven Postfachberechtigungen. Es wird intern von Exchange für eine Vielzahl von Zwecken verwendet. Zusätzlich wird das Attribut MsExchMailboxSecurityDescriptor aktualisiert, um den aktuelle effektiven Berechtigungen übereinstimmt, wenn Administratoren verwenden unterstützte Schnittstellen zum Zuweisen von Berechtigungen. Jedoch Wenn Das Attribut MsExchMailboxSecurityDescriptor ist direkt von einem Administrator, die Änderungen geändert. werden nicht an den Exchange-Informationsspeicher weitergegeben, und die Änderungen werden nicht, Effekt. Es ist nicht unbedingt mit den tatsächlichen Postfachberechtigungen synchronisiert werden. Sie Das Attribut MsExchMailboxSecurityDescriptor sollten nicht zum Lesen oder Schreiben von Postfachberechtigungen verwenden.
Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
310866Zum Festlegen von Postfachberechtigungen für Exchange Server 2003 und Exchange 2000 Server auf ein Postfach, das vorhanden ist im Informationsspeicher

Die Berechtigung Vollständiger Postfachzugriff ist ein Exchange-Datenbank-Speicherberechtigung. Die Berechtigung Senden als ist eine aktive Directory-Berechtigung. Bevor Sie die Exchange-Store.exe Dateiänderungen, die Wenden Sie sich in diesem Artikel beschrieben wird, das Exchange-System nicht die Einstellung für an die Berechtigung Senden als wenn der Absender Vollständiger Postfachzugriff bereits Berechtigung.

Einbeziehung der Berechtigung "Senden als" mit der Vollständigen Postfachzugriff verfügt über Exchange Server-Administratoren aktiviert. sich selbst effektive Berechtigungen "Senden als" für jedes Postfach auf einem Server zu erteilen, Sie verwalten. Durch Trennen die Berechtigung "Senden als" über die Berechtigung Vollständiger Postfachzugriff, Active Directory-Administratoren können nun diesen Prozess blockieren, da das Senden als Berechtigung ist eine Active Directory-Berechtigung und nicht auf einem Exchange-Informationsspeicher Berechtigung. Daher ist der Prozess nicht notwendigerweise unter der Kontrolle der Exchange-Administratoren.

Postfacheigentümer

Ein Postfacheigentümer ist definiert als das Active Directory-Benutzerkonto deren MsExchMailboxGUID -Attribut trägt die GUID (globally unique Identifier) für ein bestimmtes Postfach. Nur ein Konto in der gesamten Struktur ist gestattet tragen Sie die GUID für ein bestimmtes Postfach. Wenn Sie versuchen, einen zweiten Eigentümer mit festzulegen die gleiche GUID, die Active Directory lehnt die Änderung mit einem Fehler.

Wenn Postfach-aktivieren Sie ein Konto oder eine getrennte Verbindung Postfach einem Active Directory-Konto, die Postfach-GUID wird automatisch festgelegt. auf dieses Konto. Es ist selten notwendig oder empfehlenswert für Administratoren Postfach-GUIDs direkt festlegen.

Zugeordnete externe Konten

Eine häufige Exchange-Konfiguration ist zur Installation von Exchange in einer Ressourcen-Gesamtstruktur. Eine Ressourcengesamtstruktur ist eine Gesamtstruktur in einer anderen Gesamtstruktur der Benutzerkonten, die Postfächer im System. Dies stellt ein Problem, da das MsExchMailboxGUID -Attribut nur für Objekte in derselben Gesamtstruktur wie festgelegt werden, kann die Exchange-Server.

Die Lösung dieses Problems ist, aktivieren Sie das Postfach ein Konto in der Exchange Server-Gesamtstruktur. Dann verknüpfen Sie das Postfach-aktiviert Konto einer in einer anderen Gesamtstruktur oder in einer Microsoft Windows NT 4-Domäne. Sie können zu diesem Zweck gewähren der Berechtigung Zugeordnetes externes Konto. Nur eine einzige Konto kann die Berechtigung Zugeordnetes externes Konto gewährt werden. Das Konto d. h. ausgewählt werden muss, aus einer anderen Gesamtstruktur.

Wenn Sie die zugehörige festlegen Externe Konto die Berechtigung, werden Sie den SID-Wert für das externe schreiben. Konto, das Attribut MsExchMasterAccountSID des Postfacheigentümers. Daher ist dies kein Berechtigung überhaupt, sondern eine bequeme Möglichkeit, den Wert des Attributs MsExchMasterAccountSID steuern. Nachdem das Attribut MsExchMasterAccountSID festgelegt wurde, besitzt das externe Konto, das die SID wird Exchange-Zugriff gewährt werden, als handele es sich um die tatsächlichen Postfacheigentümer das Konto.

Hinweis Dies gilt nur für Exchange-Zugriff, nicht für alle Active Directory-Zugriff. Darüber hinaus sollten Sie den Besitzer des Postfachs kennzeichnen. Konto als deaktiviert für Anmeldungen nach dem Festlegen der Zugeordnetes externes Konto Berechtigung erwartet, alle Berechtigungen als arbeiten.
Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
300456Client-Berechtigungen und Delegierungen bleiben nicht erhalten, nachdem in Exchange 2000 zugewiesen wird

Delegierungsszenarien

Ein Delegat ist ein Benutzer, die auf teilweisen Zugriff gewährt wurde ein anderes Postfach und das Recht, e-Mail-Nachrichten im Auftrag dieses Postfach senden Besitzer. Ein häufiges Delegierungsszenario ist erteilen der Zugriffsrechte für Stellvertretung, eine Verwaltungsassistent für den Kalender einer Führungskraft. Der Delegat kann in der Regel lesen Sie und aktualisieren Sie des Kalenders. Darüber hinaus kann der Delegat auf Antworten e-Mail-Nachrichten im Auftrag des Vorgesetzten.

Sie können die folgenden zwei Schnittstellen senden im Auftrag von erteilen und Delegieren von Berechtigungen:
  • Erteilen Sie in dem Postfacheigentümer-Objekt im Dialogfeld Senden im Auftrag Berechtigung in der Exchange-Allgemein.
  • In Microsoft Office Outlook, verwenden Sie die Delegaten im Dialogfeld.
Diese beiden Methoden legen Sie das Attribut PublicDelegates des Postfachs. Alle Benutzer, die in diesem Attribut aufgeführt sind, haben die Senden im Auftrag der Berechtigung für den Besitzer des Postfachs. Wenn solche Stellvertreter eine E-mail schicken, der Name des Besitzers der in der Aus im Feld wird die e-Mail-Nachricht vom Stellvertreter und nicht vom oder als Postfacheigentümer gesendet. Der e-Mail-Nachricht Aus Feld zeigt den folgenden Wert:
Name des Stellvertreters> im Auftrag vonPostfacheigentümer>
In Manchmal können Sie das Attribut PublicDelegates in Outlook einrichten, möglich. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
329622Berechtigung "Senden im Auftrag" wird nicht an einen Benutzer zugewiesen, nachdem Sie Zugriff in Outlook delegieren

Wenn Sie Zugriffsrechte für Stellvertretung an Ihr Postfach gewähren, können der Delegat die Senden im Auftrag der Berechtigung, selbst wenn Sie nicht Zugriff an einen Ihrer Postfachordner gewähren. Die grundlegende Berechtigung, die eine Stellvertretung hat ist das Senden im Auftrag von Berechtigung. Zugriffsberechtigungen für Ihre Postfachordner sind getrennt und müssen zusätzlich zu Stellvertretungsberechtigungen erteilt werden. Normalerweise werden Delegaten Outlook verwenden, auf einzelne Ordner zugreifen, die Sie ihnen Berechtigung erteilt haben. Dazu klicken Sie auf Öffnen auf der Datei Menü in Outlook, und klicken Sie dann auf Ordner eines anderen Benutzers.

Alternativ Delegaten können Ihr Postfach öffnen, indem Sie es als zusätzliches Postfach in der Erweiterte Registerkarte ihre Outlook-Profile. Diese Methode bewirkt, dass Ihr Postfach in Outlook-Ordner-Struktur der Stellvertretung angezeigt werden. Darüber hinaus Diese Methode ermöglicht den Zugriff auf alle Ordner in Ihrem Postfach für die ein Stellvertretung hat Berechtigungen gewährt wurden.

Sie sollten Ihre Stellvertretung Manchmal senden im Auftrag von und in anderen Fällen haben die Berechtigung "Senden als". So konfigurieren Sie einen Delegaten mit diesen beiden Berechtigungen Diese Schritte:
  • Gewähren Sie Ihrer Stellvertretung die Berechtigung Vollständiger Postfachzugriff. Dies über Outlook möglich. Stattdessen muss ein Administrator Active Directory tun Sie dies auf das Postfacheigentümer-Konto. Auch wenn Sie auf Berechtigungen Besitzers erteilen jeden Ordner in Ihrem Postfach, das nicht dieselbe Berechtigung wie voll ist Postfach-Berechtigungen.
  • Erteilen Sie der Delegat-Berechtigung "Senden als" nicht. Wenn Sie Gewähren Sie Ihrer Stellvertretung die Berechtigung Senden als, alle e-Mail-Nachrichten, die von gesendet werden der Delegat wird mit der Berechtigung Senden als erfolgen. Der Delegat wird keine mehr werden Sie die Senden im Auftrag Berechtigung verwenden.
In diesem Szenario sollten sich Stellvertretungen, die die Senden im Auftrag von Berechtigung verwenden möchten ihren eigenen Postfächern anmelden. Wenn die Delegaten sind Beantworten oder Weiterleiten einer e-Mail-Nachricht, die bereits in einem der ist Ihre Ordner, die e-Mail-Nachricht wird automatisch Ihrem Auftrag gesendet werden. Wenn die Delegaten eine neue e-Mail-Nachricht in Ihrem Auftrag erstellen, müssen sie Ihren Namen eingeben Klicken Sie im Dialogfeld Aus Feld für die e-Mail-Nachricht gesendet werden, auf Ihre Auftrag.

Unabhängig davon, ob die Stellvertretungen Ihre Ordner geöffnet haben oder Ihr gesamtes Postfach als sekundäres Postfach, alle e-Mail-Nachrichten erhalten, dass Sie Senden von Ihnen wird die Senden im Auftrag, solange ihre eigene Berechtigung verwenden. Postfach ist das primäre Postfach für das aktuelle Outlook-Profil.

Wenn Stellvertretungen eine e-Mail-Nachricht als Sie senden möchten, sollten sie Anmelden an Ihrem Postfach mithilfe eines separaten Outlook-Profils, das nur Ihr Postfach geöffnet wird. E-Mail Nachrichten, die Sie senden, während sie zu diesem Profil angemeldet sind, werden von Ihnen automatisch gesendet werden.

Suchen nach Konten, die über die Berechtigung "Vollständiger Postfachzugriff" ohne Berechtigung "Senden als" verfügen

Das Beispielskript, das in diesem Abschnitt beschriebene kann eine suchen. Active Directory-Domäne zu einem Zeitpunkt für Benutzerkonten, in dem das vollständige Postfach Berechtigung wurde für ein Postfach ohne Berechtigung "Senden als" gewährt.

Wichtig: Bevor Sie Berechtigungen ändern, finden Sie unter der "Postfacheigentümer mit Stellvertretungen" Abschnitt.

Das Skript verwendet die folgenden drei Modi:
  • Exportieren Sie können eine Liste der Benutzer den vollständigen Postfachzugriff ausgeben. Berechtigung jedoch nicht über die Berechtigung Senden als. Sie können dann diese Liste in überprüfen. Notepad oder einem anderen Editor, um Konten zu löschen, die Sie nicht haben möchten die Berechtigung Senden als.
  • Importieren Sie können eine Liste der Benutzer den vollständigen Postfachzugriff importieren. Berechtigung, der die Berechtigung Senden als auch erteilt werden sollte. Beachten Sie, dass Sie Verwenden Sie dieses Skript kann nicht gewähren der Berechtigung Vollständiger Postfachzugriff und die Berechtigung "Senden als". Für jedes Konto muss vollständiger Postfachzugriff bereits vorliegen. Genehmigung für die Berechtigung "Senden als" gewährt werden.
  • SetAll Sie können die Berechtigung Senden als für alle Benutzer in der Domäne erteilen. schon die Berechtigung "Vollständiger Postfachzugriff" für ein bestimmtes Postfach haben. A Log-Datei wird in demselben Format wie die Exportdatei generiert. Dies ist Äquivalent zu den Export und Import-Modi ohne Bearbeitung der Exportieren Sie Datei.
Hinweis Es ist keine Funktion zum Rückgängigmachen in diesem Skript.

Erforderliche Berechtigungen für das Skript

Sie müssen das Skript ausführen, während Sie mit angemeldet sind ein administrative Konto, das ist aus der gleichen Gesamtstruktur, die den Besitzer des Postfachs Konten sind aus. Das Skript funktioniert nicht mit einem Konto, das hat Cross-Forest-Administratorberechtigungen. Das Skript kann auch nicht funktionieren, wenn Sie Führen Sie es von einer Arbeitsstation, die Mitglied einer anderen Gesamtstruktur als der Gesamtstruktur mit der die Postfacheigentümer-Konten verbunden sind.

Angesichts dieser Bedingungen können Sie das Skript ausführen, mit mehreren Administratorkonten in einer einzigen Anmeldesitzung mithilfe des Befehls RunAs.exe . Diese Vorgehensweise kann sein nützlich, wenn Sie Berechtigungen für Active Directory und Exchange Server unterteilt haben, und Sie haben kein Konto gibt, das alle Exchange-Server oder alle verwalten können Active Directory-Domänen. Sie können zum Ausführen des Skripts als eine Eingabeaufforderung öffnen. Jedes Administratorkonto. Betrachten Sie das folgende Beispiel:
RunAs.exe/user: domain\account CMD.exeEXE-DATEI
Hinweis Sie sollten mehrere Kopien des Skripts nicht zur gleichen Zeit ausführen. mit der gleichen Domäne.

Die Felder in der Exportdatei sind als folgt. Die Felder werden in der Reihenfolge wird in beschrieben die Exportieren Sie Datei.
  • Anzeigename des Postfacheigentümer-Kontos

    Möglicherweise gibt es mehr als eine Zeile in der Ausgabe-Datei Listet die denselben Postfacheigentümer. Dieses Verhalten tritt auf, wenn mehrere weitere Konten haben Sie die Berechtigung Vollständiger Postfachzugriff für dasselbe Postfach.
  • Namen von Domänen- und Anmeldename eines Kontos, das über die Berechtigung Vollständiger Postfachzugriff, aber nicht über die Berechtigung Senden als verfügt

    Das gleiche Konto möglicherweise mehrmals während des gesamten angezeigt. die Exportdatei, wenn das Konto Zugriff auf mehrere Postfächer hat. Dies ist wahrscheinlich der Fall für ein Anwendungsdienstkonto oder einer Person, die mehrere Ressourcenpostfächer verwaltet.
  • Anzeigename eines Kontos, das die Berechtigung Vollständiger Postfachzugriff, aber nicht über die Berechtigung Senden als verfügt.

    Dieses Feld dient zusätzlich zu den AnmeldenameFeld, das zur Identifikation des Kontos zu erleichtern.
  • Stellvertretungsstatus des Postfacheigentümers

    Wenn der Postfacheigentümer Stellvertretungen hat, ist der Wert des FeldsHas Delegates. Wenn der Postfacheigentümer keine Stellvertretungen hat, ist der Wert des Felds Nein Delegaten.
  • Aktivierten oder deaktivierten Status des Postfacheigentümer-Kontos

    Dieses Feld ist hilfreich, wenn Sie eine Ressource bezeichnen möchten Firmen oder gesamtstrukturübergreifenden Postfachkonten. In der Regel werden diese Konten deaktiviert.
  • Vollständiger Distinguished Name des Postfacheigentümer-Kontos

    Dieses Feld ist hilfreich, wenn Sie identifizieren möchten die Domäne und des Containers des Postfacheigentümer-Kontos.
  • Vollständiger Distinguished Name der Postfachdatenbank des Postfacheigentümers

    Dieses Feld enthält die Datenbank der Speichergruppe, die Server und die administrative Gruppe für das Postfach.
Im folgenden Beispiel, die Benutzer mit den Anmeldenamen "NoSendAs" hat die Berechtigung Vollständiger Postfachzugriff, aber nicht senden als Berechtigung für das Postfach "Mailbox Owner":
"" "Mailbox Owner" "" "" "Domain\NoSendAs" "" "" "No Send As User" "" "" "Has Delegates" "" "" "aktiviert" "" [zusätzliche Felder ausgelassen]

Konfiguration der Administratorarbeitsstation für das Skript

Dieses Skript verwendet das Exchange Management-Schnittstellen zur Kommunikation mit Exchange-Servern. Daher muss dieses Skript von einem Exchange ausgeführt werden Server oder von einem Computer mit Exchange System Administrator.

Bearbeiten der Exportdatei

Die Exportdatei wird als Unicode-nur-Text so, die formatiert Zeichensätze aus mehreren Sprachen können untergebracht werden. Einige Text-Editoren möglicherweise nicht korrekt anzeigen oder bearbeiten Sie die Datei oder möglicherweise speichern Sie die Datei im ANSI-Format oder ASCII-Text. Das Editor-Dienstprogramm für Windows Server 2003, Windows XP und Microsoft Windows 2000 können Unicode-Text ordnungsgemäß behandeln. Dateien. Darüber hinaus können Microsoft Office Excel korrekt Unicode-Text behandeln Dateien.

Die Ausgabedatei ist in einem tabstoppgetrennten Format mit dreifach die Werte für jedes Feld in Anführungszeichen gesetzt werden. Die dreifachen Anführungszeichen dienen zum Import und Export aus Excel deterministischer zu machen. In Excel, die dreifachen Anführungszeichen als einfache Anführungszeichen, und wird um Anführungszeichen triple beim Speichern der Datei als Unicode-Text wird wieder zurückgesetzt. Finden Sie unter die folgenden Anweisungen zum ordnungsgemäßen öffnen und Speichern einer Exportdatei in Excel.

Sie können auch eine Exportdatei filtern, ohne Excel mithilfe Das Dienstprogramm Find.exe oder Findstr.exe. Diese Dienstprogramme sind Lieferumfang von Windows. Sie können Sie nach Wörtern in einer Datei zu suchen und Ausgabe nur Zeilen, die diese Wörter enthalten oder nur Zeilen, die nicht enthalten Diese Wörter. Z. B. Wenn Sie eine Liste in der Datei aller Postfacheigentümer erstellen, die Delegaten haben möchten, verwenden Sie eine der folgenden Befehle zum Erstellen einer Datei nur Zeilen mit der Zeichenfolge "Has Delegates" enthält:
Find.exe "Has Delegates" OriginalFile.txt > HasDelegates.txt

Findstr.exe/c: "Has Delegates" OriginalFile.txt > HasDelegates.txt
Ein weiteres Beispiel: genommen Sie an, dass Sie alle herausfiltern den Postfacheigentümer mit Stellvertretungen. Die Option/v gibt alle Zeilen, die nicht die Suchwörtern entsprechen. Sie verwenden diese Befehle, um eine Datei zu generieren, die alle ausschließt kann "hat Delegates"Zeilen:
Find.exe "Keine Delegates" OriginalFile.txt > NoDelegates.txt

Find.exe/v "Has Delegates" OriginalFile.txt > NoDelegates.txt

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

Findstr.exe/v/c: "Has Delegates" OriginalFile.txt > NoDelegates.txt
Sie können diese Befehle auch verwenden, um eine Datei generieren die eine Liste aller Konten, in denen ein Anwendungsdienstkonto voll ist Postfach-Berechtigungen, aber nicht die Berechtigung Senden als verfügt. Der Schalter/i stellt den Befehl Groß-und Kleinschreibung:
/ I "Domain\ServiceAccount" OriginalFile.txt Find.exe > ServiceAccount.txt

Findstr.exe/i/c: "Domain\ServiceAccount" OriginalFile.txt > ServiceAccount.txt
Hinweis Wenn Sie das Dienstprogramm Find.exe verwenden, um eine gefilterte Datei erstellen, müssen Sie entfernen. die Header-Zeilen, die das Dienstprogramm Find.exe am oberen Rand der Datei erstellen.

Führen Sie Platzhalter-Dateinamen nicht verwenden (*. *) mit dem Findstr.exe-Dienstprogramm. Bei Verwendung von Platzhalterzeichen Jede Zeile in der Ausgabedatei wird von dem Dateinamen vorangestellt. Sie sollten die Ausgabedatei sorgfältig zu untersuchen, nachdem Sie mithilfe von Find.exe filtern oder Findstr.exe zu überprüfen, ob Ihr Filter aufgefangen oder die Konten ausgeschlossen, die Sie vorgesehen.

Im folgenden Beispiel, die Benutzer mit den Anmeldenamen "NoSendAs" hat die Berechtigung Vollständiger Postfachzugriff, aber nicht senden als Berechtigung für das Postfach "Mailbox Owner".
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [additional fields omitted] 

Postfacheigentümer Stellvertretungen definiert sind, die

Eine Stellvertretung, die vollständigen Postfachzugriff verfügt (auch bekannt als ein "Super") sollte normalerweise nicht gewährt die Berechtigung Senden als werden. Wenn die Super-Protokolle direkt an den Postfachbesitzer Postfach, der Delegat als Eigentümer senden können. Wenn der Delegat verwendet () von Outlook Delegierung featuresZusätzliche Postfächer zu öffnen oder Ordner eines anderen Benutzers öffnen), Nachrichten im Auftrag des Eigentümers.

Ein Stellvertreter die Berechtigung Senden als erteilen, nur, wenn Sie möchten die Delegaten immer, als Postfacheigentümer senden und nie senden im Auftrag von der Postfachbesitzer. Es wird empfohlen, dass Sie die Exportdatei für den Text "hat durchsuchen Delegaten,"und dann bestimmen, ob eines der Super-Stellvertreter, sind Sie tatsächlich Stellvertreter des Postfacheigentümers aufgeführt.

Nur Super-Stellvertreter werden in der Exportdatei aufgeführt. Normale Stellvertreter haben keinen die Berechtigung "Vollständiger Postfachzugriff". Darüber hinaus, wenn Sie die Berechtigung Senden als erteilen an einem normalen Stellvertreter wird der Delegat immer als Postfacheigentümer senden. Dies gilt auch, wenn die normalen Stellvertreter die Berechtigung Vollständiger Postfachzugriff nicht verfügt. Wenn Sie Berechtigungen "Senden als" an eine Stellvertretung erteilen nicht unbeabsichtigt, Sie können die Berechtigung später einfach widerrufen.

Wie Sie eine Exportdatei in Excel öffnen

  1. Starten Sie Excel, bevor Sie die Exportdatei öffnen.
  2. Öffnen Sie die Datei in Excel als Typ Textdatei. Der Textimport-Assistent wird gestartet.
  3. Der Textkonvertierungs-Assistenten ändern Sie, oder übernehmen Sie die folgenden Einstellungen:
    • Ursprünglicher Datentyp: Getrennt
    • Beginnen Sie Import in Zeile: 1
    • Dateiursprung: Unicode (UTF-8)
    • Trennzeichen: Nur die Registerkarte
    • Aufeinanderfolgende Trennzeichen als ein Zeichen behandeln: nicht markierte
    • Textqualifizierer: "(doppelte Anführungszeichen)

Wie Sie eine Exportdatei speichern, nachdem Sie die Datei in Excel bearbeiten

  1. Klicken Sie in der Exportdatei Speichern als.
  2. Speichern Sie die Datei mit einen anderen Namen, so dass Sie beibehalten einer nicht bearbeitete Kopie der ursprünglichen Datei.
  3. Klicken Sie auf Datei, klicken Sie auf Speichern als, geben Sie einen Dateinamen für die Ausgabe zu speichern, und klicken Sie dann auf Unicode-text Klicken Sie im Dialogfeld Dateityp Liste.

Skriptsyntax

Dies ist ein Text-Modus-Skript, und sie sollten ein Befehl ausgeführt werden Fenster, nicht von der Eingabeaufforderung die Ausführen im Dialogfeld. Um einen Befehl zu öffnen. Fenster der Eingabeaufforderung, klicken Sie auf Start, klicken Sie auf Ausführen, Typ CMD Klicken Sie im Dialogfeld Öffnen ein, und klicken Sie dann auf OK.

Error Log and Export Dateien gespeichert werden die aktuellen Eingabeaufforderungsverzeichnis. Sie benötigen Berechtigungen zum Erstellen von Dateien Dieses Verzeichnis. Um Hilfe zur Befehlszeile zu erhalten, geben Sie den folgenden Befehl:
CSCRIPT AddSendAs.vbs
Um Benutzer exportieren Vollständiger Postfachzugriff ohne die Berechtigung "Senden als" für eine Domäne haben, geben Sie den folgenden Befehl:
CSCRIPT AddSendAs.vbs [domain controller name] ?Export
Example:
CSCRIPT AddSendAs.vbs CORP-DC-1 ?Export
Die Exportdatei wird als generiert werden "Send_As_Export_H_MM_SS.txt".

Um eine bearbeitete Exportdatei zu importieren, geben Sie den folgenden Befehl:
CSCRIPT AddSendAs.vbs [domain controller name] ?Import [filename]


Example:


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

Gewusst wie: gewähren die Berechtigung "Senden als" für jedes Postfach in der Domäne für alle Benutzer, die bereits die Berechtigung "Vollständiger Postfachzugriff" für ein Postfach verfügen

Hinweis Wenn Sie Delegaten verfügen, die auch den vollständigen Postfachzugriff Berechtigung in Ihrer Organisation sollten Sie den SetAll-Modus nicht verwenden. Wenn Sie tun Verwenden Sie den SetAll-Modus in diesem Fall senden als werden Delegaten gewährt werden Berechtigung. Dieses Verhalten kann alle e-Mail-Nachrichten führen, die sie senden, verwenden die Berechtigung Senden als anstelle der senden im Auftrag von Berechtigung. Sie können Korrigieren Sie dieses Verhalten, indem Sie die Berechtigung Senden als, die versehentlich wurde entfernt erteilt dem Delegaten:
CSCRIPT AddSendAs.vbs [domain controller name] ?SetAll


Example:


CSCRIPT AddSendAs.vbs CORP-DC-1 ?SetAll
Wenn Sie den SetAll-Modus verwenden, wird eine Exportdatei sein. als "Send_As_Export_H_MM_SS.txt" generiert. Sie sollten diese Datei speichern, da es ist ein Datensatz aller Konten, die geändert wurden. Wenn Sie ausführen wollten die Skript erneut, es wäre nicht ausgeben derselben Liste mit Konten, da die Konten würde bereits die Berechtigung Senden als erteilt haben.

Fehler, die während der Skriptausführung auftreten werden. in der Datei "Send_As_Errors_H_MM_SS.txt" gespeichert. Der Name entspricht. der Zeitstempel für die Fehlerdatei für jeden zugeordneten Exportdatei.

Skriptänderungen

Gibt es eventuell Konten in Ihrer Organisation, die über Berechtigungen verfügen. für viele Objekte jedoch nicht die Berechtigungen ändern möchten. Reduzieren der Größe der Exportdatei, Filtern Sie diese Konten durch Ändern der Variable "FMA_EXCLUSIVE_LIST" modifizieren, die im oberen Bereich des Skripts befindet. Durch standardmäßig diese Variable listet einige Konten, die in unterdrückt werden sollen die Ausgabe des Skripts. Sie können weitere Konten hinzufügen, mit das folgende Format.
& "<Domain\Name>" & OUTPUT_DELIMITER
Sie könnten z. B. den Wert der Variable ändern.
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
sodass sie wie folgt angezeigt wird.
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER & "Mydomain\Service1" & OUTPUT DELIMITER
Diese Änderung wird die Auflistung der Konten "Mydomain\Service1" in unterdrückt. die Exportdatei zusammen mit "NT AUTHORITY\SELF" und "NT-AUTORITÄT\SYSTEM". Beachten Sie, dass der Domäne Name-Wert Groß-/Kleinschreibung ist und muss genau so angezeigt wie dies der Fall ist, oder wie in der Exportdatei.

Es gibt noch eine bearbeitbare Variable FMA_EXCLUSIVE_EXSVC, mit den Standardwert "\Exchange Services"& OUTPUT_DELIMITER. "Exchange Services" ist der Name eines Kontos wird durch den Active Directory Connector in Exchange Berechtigungen Server 5.5 und Exchange 2000-Migration und Koexistenz-Szenarien. Dieses Konto ist in mehreren Domänen erstellt, und es erscheint immer wieder in die Exportdatei Wenn Es wird nicht unterdrückt.

Die Variable FMA_EXCLUSIVE_EXSVC akzeptiert nur ein Konto als ihren Wert. Der Kontoname wird nicht beachtet. Das Konto muss mit einem umgekehrten Schrägstrich (\) beginnen und sollte nicht enthalten die Domäne, zu der das Konto gehört. Das Konto wird für alle unterdrückt werden Domänen, in denen es vorhanden ist.

Bei der Verwendung von Drittanbietern migration Tools oder Verzeichnis-Synchronisierungsmethoden, möglicherweise in ein anderes Konto vorhanden. mehrere Domänen, die weit gewährt Berechtigungen für Benutzerpostfächer verfügt. In diesem Szenario können Sie den Namen des Kontos "\Exchange Services". ersetzen

Präsentationstipps und

  • Entsorgen der Protokoll- und Dateien, die vom generierten nicht das Skript. Sie können für die Problembehebung oder das Rückgängigmachen von Änderungen wertvoll sein. weiter unten. Denken Sie daran, sobald Sie die Berechtigung "Senden als", erteilt haben ein Konto wird nicht mehr in der Exportdatei protokolliert werden.
  • Wenn ein Exchange Server oder die Datenbank heruntergefahren ist, wird die Verarbeitung des Skripts langsamer sein. In diesem Fall können Sie die Exportdatei nach Datenbank sortieren und Verschieben von Zeilen, die später in eine andere Datei für einen angehaltenen Datenbank zugeordnet sind Importieren.
  • Das Skript unterdrückt die Ausgabe von Konten, in dem die Anmeldung Name endet mit "$" oder NT-AUTORITÄT\SYSTEM ist. Diese Systemkonten sollten nicht in der Regel benötigen Sie das "Senden als" Berechtigung, und entfernen sie aus der Exportdatei die Dateigröße reduzieren erheblich.
  • Die Exportdatei muss im Unicode-Format sein, bevor es ausgeführt werden kann importiert. Wenn Sie die Datei versehentlich als ANSI-Text gespeichert haben, können Sie Dieses Problem zu beheben, indem Sie die Datei in Editor laden und speichern es als Unicode Text.
  • Wenn ein Import nicht funktioniert, die Fehlerbehebungsschritte zusammen mit Testkonten und einer einzigen Zeile in der Importdatei. Konfigurieren Sie einen Test zu berücksichtigen, hat ein Postfach auf einem laufenden Exchange-Server, und erteilen Sie die Berechtigung "Vollständiger Postfachzugriff" zu einem anderen Testkonto. Erteilen Sie die Berechtigung "Senden als" für das andere Testkonto nicht.
  • Es gibt keinen Modus zum Rückgängigmachen für dieses Skript. Nehmen die Senden als Berechtigungen, die Sie mit diesem Skript erteilt haben, müssen Sie generieren. ein anderes Skript oder manuell zu entfernen. Ein Rückgängig-Modus wird nicht bereitgestellt, um zu vermeiden die Verwendung dieses Skripts zum Entfernen der Berechtigung "Senden als" für alle Benutzer in einer die Organisation.
  • Das Skript handhabt nicht korrekt ein Konto, das hat wurde gewährt Vollzugriff auf ein Benutzerobjekt zusammen mit vollständiger Postfachzugriff. "Vollzugriff" beinhaltet die Berechtigung Senden als, aber das Skript exportiert das Berücksichtigen Sie, als ob er nicht die Berechtigung Senden als verfügt. Dies kann den Umfang vergrößern. die Exportdatei, jedoch kein Schaden tritt auf, in die Datei zu importieren und dann redundant Erteilen der Berechtigung Senden als auf eingefrorenen Konten.
  • Active Directory-Benutzerkonten, die deren eindeutige Namen und Registerkarten enthalten oder ungleiche doppelte Anführungszeichen ist nicht möglich Mithilfe dieses Skript verarbeitet. Das Skript kann jedoch einen Namen verarbeiten, enthält die gleiche doppelte Anführungszeichen, z. B. die folgenden:
    "CN = First"Nickname"Last, DC = Domain, DC = com"
  • Jede Version von Excel unterstützt eine unterschiedliche maximale Zeilen-Limit. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
    120596Textdateien, die größer als 65.536 Zeilen können nicht in Excel 97, Excel 2000, Excel 2002 und Excel 2003 importiert werden
    Im folgenden werden Zeilenbegrenzungen für Excel 2003 und Excel 2007:
    • Excel 2003: 65.536 Zeilen
    • Excel 2007: 1.048.576 Zeilen
    Wenn Ihre Ausgabedatei diese Grenzen überschreitet, müssen Sie die Datei in Abschnitte aufteilen, bevor Sie in Excel zu laden.
  • Die Send_As_Errors-Datei listet spezifische Konten, in denen Es wurde ein Fehler beim Lesen oder Schreiben von Berechtigungen. Wenn andere in Gruppenkonten die Domäne korrekt verarbeitet wurden, müssen diese Konten möglicherweise etwas gemeinsam die verhindert, dass das Skript mit ihnen zu laufen. Den allgemeinen Problemen gehören die nach:
    • Fehlende administrative Berechtigungen zum Anzeigen oder Festlegen eines Eigenschaften für die Konten.
    • Der Exchange-Postfachspeicher wird nicht ausgeführt.
    • Die Arbeitsstation ist nicht Mitglied der gleichen Domäne.
    • Das Administratorkonto, das verwendet wird, ist nicht aus derselben Gesamtstruktur.
Um dieses Skript auszuführen, kopieren Sie und fügen Sie alle Zeilen zwischen BEGIN SCRIPT und END SCRIPT in eine nur-Text-Editor wie Editor. Speichern Sie das Skript als AddSendAs.vbs. BEGIN-SKRIPT.
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
ENDSKRIPT

Microsoft bietet Programmierbeispiele lediglich zur Veranschaulichung, ohne ausdrückliche oder stillschweigende Garantie. Dies beinhaltet, ist jedoch nicht beschränkt auf konkludente Garantien der Handelsüblichkeit oder Eignung für einen bestimmten Zweck. In diesem Artikel wird davon ausgegangen, dass Sie mit der Programmiersprache, die Programmlistings und vertraut mit den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden. Microsoft-Supporttechniker können der Erläuterung der Funktionalität bestimmter Prozeduren helfen. Allerdings können sie nicht ändern diese Beispiele, um eine erweiterte Funktionalität oder Prozeduren entwickeln Ihren spezifischen Anforderungen zugeschnitten.

Weitere Informationen zur Unterstützung die verfügbaren Optionen von Microsoft finden Sie auf der folgenden Microsoft-Website Website:
http://support.Microsoft.com/default.aspx?scid=fh;de;[LN];CNTACTMS
Die Produkte von Drittanbietern, die in diesem Artikel erörtert werden von Unternehmen hergestellt, die von Microsoft unabhängig sind. Microsoft übernimmt keine Garantie, weder konkludent noch anderweitig, über die Leistung oder Zuverlässigkeit dieser Produkte.

Eigenschaften

Artikel-ID: 912918 - Geändert am: Samstag, 2. Februar 2013 - Version: 3.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange Server 2003 Enterprise Edition
Keywords: 
kbtshoot kbpending kbbug kbprb kbmt KB912918 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 912918
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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