Użytkownicy nie mogą wysyłać wiadomości e-mail z urządzeń przenośnych lub udostępnionych skrzynek pocztowych w programach Exchange 2000 Server i Exchange Server 2003

Symptomy

Nie można wysłać wiadomości e-mail za pomocą programu Microsoft Exchange 2000 Server lub Microsoft Exchange Server 2003. Ponadto może być wyświetlany jeden z następujących komunikatów o błędach lub jeden z następujących raportów o niedostarczeniu (NDR).

Komunikaty o błędach

  • Odmowa dostępu
  • Nie masz uprawnień do wykonania tej operacji na tym obiekcie. Sprawdź kontakt dla tego folderu lub skontaktuj się z administratorem systemu.
  • Komunikat o błędzie spoza listy
  • MAPI_E_NO_ACCESS -2147024891
  • Nie można wysłać wiadomości pocztowej dla użytkownika NAZWA_UŻYTKOWNIKA (Wynik HRESULT:-2147024891). Wstrzymywanie użytkownika NAZWA_UŻYTKOWNIKA. (Błąd zabezpieczeń — nie można uzyskać dostępu do skrzynki pocztowej użytkownika).
  • Nie można znaleźć zasobu
Uwaga: Komunikat o błędzie „Access denied” (Odmowa dostępu) lub „Resource not found” (Nie można znaleźć zasobu) w programie Outlook Web Access jest wyświetlany, gdy użytkownik jest zalogowany jako pełnomocnik.

Raporty o niedostarczeniu

  • Ta wiadomość nie została dostarczona, ponieważ nie masz uprawnień do wysyłania poczty do tego adresata. W sprawie pomocy skontaktuj się z administratorem swojego systemu.
  • Nie można wysłać wiadomości przy użyciu tej skrzynki pocztowej. Nie masz uprawnień do wysyłania tej wiadomości w imieniu podanego użytkownika.
Wiadomo, że ten problem dotyczy następujących produktów innych firm:
  • BlackBerry Enterprise Server (BES) firmy Research In Motion (RIM)
  • GoodLink Wireless Messaging firmy Good Technology
Potwierdzono jednak, że ten problem nie dotyczy następujących produktów innych firm:
  • Unity Unified Messaging firmy Cisco
  • Migration Suite for Exchange firmy Quest
  • Narzędzie ExMerge dla programu Exchange firmy Microsoft
Ten problem może też dotyczyć niestandardowych aplikacji opartych na interfejsie MAPI lub programów opartych na obiektach CDO (Collaborative Data Object), które wysyłają wiadomości e-mail.

Ten problem może również dotyczyć innych produktów innych firm, które używają kont usługi do wysyłania wiadomości e-mail. Jeśli jest używany produkt innej firmy, którego dotyczy ten problem, zaleca się skontaktowanie z jego producentem w celu uzyskania pomocy w rozwiązaniu tego problemu. Aby uzyskać więcej informacji, zobacz sekcję „Więcej informacji”.

Ważne: Awaryjnym sposobem przywrócenia funkcji Wyślij jako w aplikacjach o podstawowym znaczeniu dla działalności firmy może być udzielenie uprawnienia Wyślij jako kontu usługi przez dziedziczenie w kontenerze usługi Active Directory lub nawet w całej domenie. W tym celu zapoznaj się ze szczegółowymi instrukcjami w sekcji Jak udzielić uprawnienia Wyślij jako wielu kontom. Chociaż jest to skuteczny sposób natychmiastowego rozwiązania problemu, należy także uwzględnić jego wpływ na bezpieczeństwo i zarządzanie. Uprawnienie Wyślij jako może zostać zastosowane również do tych kont, którym nie miało być udzielone. Ponadto trzeba uwzględnić to uprawnienie w przypadku przenoszenia kont użytkownika do innego kontenera.

Przyczyna

Ten problem może wystąpić, jeśli jest spełniony jeden z następujących warunków:
  • Nie masz uprawnień do wysyłania wiadomości e-mail jako właściciel skrzynki pocztowej na koncie, którego używasz do wysyłania wiadomości e-mail.
  • Używasz programu Microsoft Exchange 2000 Server z dodatkiem Service Pack 3 (SP3), w którym plik Store.exe ma numer wersji równy 6619.4 lub nowszy. Wersja 6619.4 została po raz pierwszy udostępniona w następującym artykule w bazie wiedzy Microsoft Knowledge Base:
    915358 Dostępna jest poprawka zmieniająca zachowanie uprawnień pełnego dostępu do skrzynki pocztowej w programie Exchange 2000 Server

  • Używasz programu Microsoft Exchange Server 2003 z dodatkiem Service Pack 1 (SP1), w którym plik Store.exe ma numer wersji równy 7233.51 lub nowszy. Wersja 7233.51 została po raz pierwszy udostępniona w następującym artykule w bazie wiedzy Microsoft Knowledge Base:
    895949 Zmiana działania uprawnień do korzystania z funkcji "Wyślij jako" w programie Exchange 2003

    Należy zauważyć, że ta poprawka nie wchodzi w skład dodatku Service Pack 2 (SP2) dla programu Microsoft Exchange 2003. Jeśli zainstalowano wersję tej poprawki dla programu Exchange Server 2003 z dodatkiem SP1, po uaktualnieniu do dodatku Service Pack 2 należy zainstalować wersję poprawki dla dodatku Service Pack 2.
  • Używasz programu Exchange Server 2003 z dodatkiem SP2, w którym plik Store.exe ma numer wersji równy 7650.23 lub nowszy. Wersja 7650.23 została po raz pierwszy udostępniona w następującym artykule w bazie wiedzy Microsoft Knowledge Base:
    895949 Zmiana działania uprawnień do korzystania z funkcji "Wyślij jako" w programie Exchange 2003

    Uwaga: Ta zmiana nie była wprowadzona w programach Exchange 2000 Server SP3, Exchange Server 2003 SP1 i Exchange 2003 SP2. Zmiana ta została zaimplementowana po wydaniu wszystkich powyższych dodatków Service Pack, lecz jest obsługiwana w każdym z nich. Ta zmiana zostanie wprowadzona w kolejnych dodatkach Service Pack dla tych produktów.


    Jeśli instalujesz program Exchange Server 2003 SP2, musisz również zainstalować dodatkową aktualizację, aby zachowanie to pozostało niezmienione, nawet jeśli wersja aktualizacji programu Exchange Server 2003 SP1 jest już zainstalowana.

Rozwiązanie

Przed wydaniem wersji pliku Store.exe, które zostały wymienione w sekcji Przyczyna, udzielenie uprawnienia Pełny dostęp do skrzynki pocztowej powodowało udzielenie w sposób pośredni uprawnienia do wysyłania wiadomości jako właściciel skrzynki pocztowej. Oznaczało to, że inne konto mające uprawnienie Pełny dostęp do skrzynki pocztowej umożliwiało wysłanie wiadomości e-mail wyglądających tak, jakby zostały wysłane przez właściciela skrzynki pocztowej.

Wielu klientów korzystających z programu Microsoft Exchange żądało rozdzielenia uprawnienia Wyślij jako od uprawnienia Pełny dostęp do skrzynki pocztowej. Przyczyny tych żądań były następujące:
  • Zapobieganie fałszowaniu poczty e-mail.
  • Zapewnienie, że wiadomości e-mail wysłane przez pełnomocnika zawsze będą wyraźnie odróżniać się od wiadomości e-mail wysłanych przez rzeczywistego właściciela skrzynki pocztowej.
Wszystkie nowe wersje Magazynu informacji programu Exchange będą jawnie wymagać uprawnienia Wyślij jako do wysyłania wiadomości e-mail jako właściciel skrzynki pocztowej. Jednak istnieją trzy wyjątki od tego wymagania, które przedstawiono poniżej:
  • Konto właściciela skrzynki pocztowej nie wymaga jawnie uprawnienia Wyślij jako dla swojej własnej skrzynki pocztowej.
  • Skojarzone konto zewnętrzne skrzynki pocztowej nie wymaga jawnie uprawnienia Wyślij jako.
  • Konto pełnomocnika, które ma także uprawnienie Pełny dostęp do skrzynki pocztowej, nie wymaga jawnie uprawnienia Wyślij jako.
Aby uzyskać więcej szczegółowych informacji dotyczących tych wyjątków, zobacz sekcję „Więcej informacji”.

Wszystkie inne konta, którym udzielono częściowego lub pełnego dostępu do skrzynki pocztowej, muszą teraz mieć jawnie udzielone uprawnienie Wyślij jako, aby umożliwiały wysyłanie poczty jako właściciel skrzynki pocztowej. Dotyczy to kont usług aplikacji, które wykonują funkcje, takie jak wysyłanie wiadomości e-mail do użytkowników urządzeń przenośnych.

Uprawnienie Wyślij jako musi zostać udzielone kontu usługi w każdym obiekcie użytkownika, który jest właścicielem skrzynki pocztowej. Nie można udzielić uprawnienia Wyślij jako na serwerze programu Exchange lub w obiekcie bazy danych i osiągnąć efektu udzielenia uprawnienia Wyślij jako dla wszystkich skrzynek pocztowych w bazie danych.

To zachowanie występuje, ponieważ uprawnienie Wyślij jako jest uprawnieniem usługi Active Directory dotyczącym obiektów usługi Active Directory, dla których zostało ustawione. Udzielenie uprawnienia Wyślij jako w obiekcie bazy danych programu Exchange daje użytkownikowi uprawnienie do uprawnienia Wyślij jako w samej bazie danych. Jednak nie daje użytkownikowi uprawnienia do użytkowników z uprawnieniem Wyślij jako, których skrzynki pocztowe znajdują się w bazie danych.

Uwaga: Udzielenie uprawnienia Odbierz jako w bazie danych programu Exchange jest funkcjonalnym odpowiednikiem udzielenia uprawnienia Pełny dostęp do skrzynki pocztowej dotyczącego wszystkich skrzynek pocztowych w bazie danych. Jest to różnica w stosunku do zachowania uprawnienia Wyślij jako.

W przypadku uprawnienia Wyślij jako uprawnienie jest stosowane tylko do samego obiektu bazy danych. Nie jest ono stosowane do skrzynek pocztowych w bazie danych. Uprawnienie Odbierz jako jest ewidentnie dziedziczone przez wszystkie skrzynki pocztowe znajdujące się w bazie danych.

Aby lepiej zrozumieć różnicę między tymi dwoma uprawnieniami, należy pomyśleć o wszystkich skrzynkach pocztowych w bazie danych tak, jakby były folderami w jednej skrzynce pocztowej (skrzynka pocztowa „baza danych”). Jeśli masz pełny dostęp do bazy danych, masz uprawnienie dostępu do całej zawartości bazy danych. Obejmuje to wszystkie skrzynki pocztowe.

Uprawnienie Wyślij jako jest stosowane do tożsamości obiektu użytkownika w usłudze Active Directory, a nie do zawartości skrzynek pocztowych przechowywanych w bazie danych. Podczas wysyłania wiadomości e-mail nie są wysyłane z danej skrzynki pocztowej lub bazy danych, ale od użytkownika. Użytkownikiem może być właściciel skrzynki pocztowej lub dowolne inne konto mające uprawnienie Wyślij jako.


Aby jawnie udzielić innemu kontu uprawnienia do wysyłania jako właściciel skrzynki pocztowej, wykonaj następujące kroki:
  1. Uruchom konsolę zarządzania Użytkownicy i komputery usługi Active Directory.
  2. Upewnij się, że w menu Widok zaznaczono opcję Opcje zaawansowane. Jeśli ta opcja nie będzie zaznaczona, nie będzie wyświetlana strona Zabezpieczenia dla obiektów kont użytkowników.
  3. Otwórz właściwości konta użytkownika, które jest właścicielem skrzynki pocztowej.
  4. Kliknij kartę Zabezpieczenia.
  5. Jeśli konto nie znajduje się jeszcze na liście nazw grup lub użytkowników, dodaj konto, które ma mieć uprawnienie Wyślij jako dla tego użytkownika.
  6. W polu Uprawnienia kliknij pole Zezwalaj dotyczące uprawnienia „Wyślij jako” dla odpowiedniego konta.
  7. Kliknij przycisk OK.
  8. Uruchom usługę magazynu informacji programu Microsoft Exchange na właściwym serwerze Exchange.
Uwaga: W przypadku nieuruchomienia ponownie usługi Magazyn informacji programu Microsoft Exchange usługa ta dokona aktualizacji pamięci podręcznej uprawnień, aby nowe uprawnienia zadziałały zgodnie z wartością określoną w następującym podkluczu rejestru:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem

Nazwa wartości: Mailbox Cache Age Limit
Typ wartości: REG_DWORD
Podstawa: Dziesiętna
Dane wartości: Limit czasowy przechowywania w pamięci podręcznej informacji skrzynki pocztowej, w minutach.
Domyślna wartość dla tego wpisu rejestru to 120 minut (dwie godziny). Po zmodyfikowaniu tego wpisu rejestru należy ponownie uruchomić usługę Magazynu informacji programu Microsoft Exchange.

Uwaga: Ustawienie niskich wartości limitu czasu może wpłynąć na wydajność serwera.

Jak udzielić uprawnienia Wyślij jako wielu kontom

Przykładowy skrypt podany na końcu tego artykułu będzie wyszukiwał w domenie usługi katalogowej Active Directory konta, które mają uprawnienie Pełny dostęp do skrzynki pocztowej, ale nie mają dla skrzynki pocztowej uprawnienia Wyślij jako. Są to typowe konta usług lub zasobów, na które ma wpływ ta zmiana zabezpieczeń. Skrypt może wygenerować plik eksportu, który można przejrzeć i edytować, a następnie zaimportować z powrotem w celu udzielenia uprawnienia Wyślij jako kontom, które wymagają tego uprawnienia.

Uprawnienia Wyślij jako można też udzielić przez dziedziczenie w każdym obiekcie użytkownika w domenie lub kontenerze usługi Active Directory. Udzielenie uprawnienia Wyślij jako tą metodą może spowodować udzielenie go obiektom, które nie powinny mieć tego uprawnienia. Ponadto możliwa jest utrata uprawnienia przez obiekty, które zostaną przeniesione z kontenera. Dlatego ta metoda nie jest preferowana i przed jej zastosowaniem należy dokładnie przeanalizować zmiany w zabezpieczeniach, które powstaną na skutek jej użycia.

Aby udzielić uprawnienia Wyślij jako jednemu kontu lub wszystkim kontom użytkowników w domenie lub kontenerze usługi Active Directory, wykonaj następujące kroki:
  1. Uruchom konsolę zarządzania Użytkownicy i komputery usługi Active Directory.
  2. Upewnij się, że w menu Widok zaznaczono opcję Opcje zaawansowane. Jeśli ta opcja nie będzie zaznaczona, nie będzie wyświetlana strona Zabezpieczenia dla obiektów domeny i kontenera.
  3. Otwórz właściwości domeny lub kontenera, a następnie kliknij stronę Zabezpieczenia.
  4. Kliknij przycisk Zaawansowane.
  5. Jeśli konto, które wymaga uprawnienia, nie znajduje się jeszcze na liście, kliknij przycisk Dodaj, a następnie wybierz konto. W przeciwnym razie kliknij dwukrotnie konto, aby je edytować.
  6. Na liście Zastosuj do kliknij pozycję Obiekty użytkownik.
  7. Udziel kontu uprawnienia Wyślij jako.
  8. Klikaj przycisk OK do czasu zamknięcia wszystkich okien i zapisania wszystkich zmian.
Uwaga: Skrypt opisany na końcu tego artykułu uwzględnia uprawnienia dziedziczone. Dlatego w przypadku udzielenia uprawnienia Wyślij jako przy użyciu tej metody konta z odziedziczonym uprawnieniem Wyślij jako staną się niewidoczne dla skryptu. Aby później przetworzyć te konta za pomocą skryptu, należy najpierw usunąć odziedziczone uprawnienie Wyślij jako.

Specjalne reguły dotyczące kont chronionych za pomocą obiektów adminSDHolder

Użycie skryptu w celu udzielenia uprawnienia Wyślij jako właścicielowi skrzynki pocztowej, który jest również administratorem domeny, spowoduje, że uprawnienie nie będzie obowiązywać. Zdecydowanie zaleca się, aby do obsługi skrzynek pocztowych nie używać kont użytkowników, które mają prawa administratora domeny lub są chronione za pomocą obiektów adminSDHolder.

Obiekt adminSDHolder jest szablonem kont mających szerokie prawa administracyjne w usłudze Active Directory. Aby zapobiec niezamierzonemu zwiększaniu uprawnień, każde konto chronione za pomocą obiektu adminSDHolder musi mieć prawa dostępu zgodne z prawami wymienionymi w obiekcie adminSDHolder.

Jeśli zmienisz prawa lub uprawnienia w obiekcie adminSDHolder chronionego konta, zadanie w tle w ciągu kilku minut cofnie tę zmianę. Na przykład jeśli udzielisz uprawnienia Wyślij jako w obiekcie administratora domeny kontu usługi aplikacji, zadanie w tle automatycznie wycofa to uprawnienie.

Dlatego nie można udzielić uprawnienia Wyślij jako kontu usługi aplikacji, które jest chronione za pomocą obiektu adminSDHolder, o ile nie zostanie zmieniony sam obiekt adminSDHolder. Zmiana obiektu adminSDHolder spowoduje zmianę uprawnień dostępu dla wszystkich chronionych kont. Obiekt adminSDHolder można zmienić tylko po pełnym przejrzeniu następstw dla kwestii zabezpieczeń, które może spowodować dana zmiana.

Aby skojarzyć skrzynkę pocztową z kontem, które jest chronione za pomocą obiektu adminSDHolder, wykonaj następujące kroki:
  1. Uruchom konsolę zarządzania Użytkownicy i komputery usługi Active Directory.
  2. Upewnij się, że w menu Widok zaznaczono opcję Opcje zaawansowane. Jeśli ta opcja nie będzie zaznaczona, nie będzie wyświetlana strona Zabezpieczenia dla obiektów kont użytkowników.
  3. Utwórz konto zwykłego użytkownika, które będzie właścicielem skrzynki pocztowej.
  4. Przypisz konto zwykłego użytkownika na serwerze programu Exchange.
  5. Otwórz właściwości nowego konta właściciela skrzynki pocztowej.
  6. W polu Exchange — zaawansowane udziel chronionemu kontu administratora uprawnienia Pełny dostęp do skrzynki pocztowej.
  7. Na stronie Zabezpieczenia udziel chronionemu kontu administratora uprawnienia Wyślij jako.
  8. Kliknij przycisk OK, aby zamknąć właściwości obiektu właściciela skrzynki pocztowej.
  9. Kliknij prawym przyciskiem myszy obiekt konta właściciela skrzynki pocztowej, a następnie kliknij polecenie Wyłącz konto, aby wyłączyć konto ze wszystkich opcji logowania.
Aby uzyskać więcej informacji dotyczących kont chronionych za pomocą obiektu adminSDHolder, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
907434 Prawo „Wysyłanie jako” jest usuwane z obiektu użytkownika po skonfigurowaniu prawa „Wysyłanie jako” w przystawce Użytkownicy i komputery usługi Active Directory w programie Exchange Server

318180 AdminSDHolder thread affects transitive members of distribution groups

817433 Delegated permissions are not available and inheritance is automatically disabled

306398 AdminSDHolder object affects delegation of control for past administrator accounts

Specjalne zadania dla serwera BlackBerry Enterprise Server

Zadanie 1: Upewnij się, że serwer BlackBerry Enterprise Server działa jako osobne, unikatowe konto.

Upewnij się, że serwer BlackBerry Enterprise Server działa jako osobne konto, utworzone wyłącznie na potrzeby zadań administrowania. Domyślna nazwa konta to „BESAdmin”.

Jeśli posiadasz osobne konto na potrzeby administrowania serwerem BlackBerry Enterprise Server, przejdź do zadania numer 2.


Jeśli nie masz osobnego konta, utwórz je. Następnie używaj go do wykonywania zadań administracyjnych. Aby uzyskać informacje na ten temat, przejdź do jednej z witryn w sieci Web dotyczących rozwiązania BlackBerry, w której omówiono używaną wersję serwera BlackBerry Enterprise Server.


Jeśli używasz serwera BlackBerry Enterprise Server 4.0 lub BlackBerry Enterprise Server 4.1, odwiedź następującą witrynę firmy BlackBerry w sieci Web: Jeśli używasz serwera BlackBerry Enterprise Server 3.6, odwiedź następującą witrynę firmy BlackBerry w sieci Web:

Zadanie 2: Upewnij się, że do konta usługi BlackBerry Enterprise Server przypisane są odpowiednie uprawnienia.

Sprawdź, czy do konta usługi BlackBerry Enterprise Server przypisane są odpowiednie uprawnienia.

Uwaga: Jeśli konto znajduje się w domenie, upewnij się, że należy ono tylko do jednej grupy Użytkowników domeny. Na kontrolerze domeny konto powinno należeć do grupy Wbudowanych administratorów.
  1. Na serwerze BlackBerry Enterprise Server wykonaj następujące kroki:
    1. Upewnij się, że konto należy do grupy Administratorów lokalnych.
    2. Przypisz do konta uprawnienia Zaloguj lokalnie oraz Zaloguj w trybie usługi.
  2. Udziel serwerowi Exchange uprawnień administratora tylko do podglądu na poziomie grupy administracyjnej. Aby to zrobić, wykonaj następujące kroki:
    1. W programie Exchange System Manager kliknij prawym przyciskiem myszy pierwszą nazwę grupy administracyjnej serwera Exchange Server, a następnie wybierz polecenie Deleguj kontrolę.
    2. Należy zwrócić uwagę na to, że konto usługi BlackBerry Enterprise Server widnieje na liście jako Administrator serwera Exchange tylko do podglądu (Exchange View-Only Administrator).
  3. Na poziomie serwera udziel uprawnień „Wyślij jako”, „Odbierz jako” oraz „Administruj magazynem informacji” każdemu serwerowi Exchange Server. Aby to zrobić, wykonaj następujące kroki:
    1. W programie Exchange System Manager kliknij prawym przyciskiem myszy pierwszą nazwę grupy administracyjnej serwera Exchange Server, a następnie rozwiń grupę Servers (Serwery).
    2. Kliknij prawym przyciskiem myszy serwer Exchange Server, a następnie kolejno polecenia Properties (Właściwości) i Security (Zabezpieczenia).
    3. W górnym okienku wybierz konto usługi BlackBerry Enterprise Server. Upewnij się, że w dolnym okienku uprawnienia „Wyślij jako”, „Odbierz jako” oraz „Administruj magazynem informacji” są ustawione jako Allow (Zezwalaj).
    4. Powtórz kroki 3b i 3c dla każdego serwera Exchange Server.
  4. Udziel uprawnień „Wyślij jako”, „Odbierz jako” oraz „Administruj magazynem informacji” magazynowi skrzynki pocztowej. Aby to zrobić, wykonaj następujące kroki:
    1. W programie Exchange System Manager kliknij prawym przyciskiem myszy pierwszą nazwę grupy administracyjnej serwera Exchange, a następnie rozwiń grupę Servers (Serwery).
    2. Rozwiń pierwszą grupę magazynu skrzynki pocztowej, kliknij prawym przyciskiem myszy każdy magazyn skrzynki pocztowej, a następnie kliknij kolejno polecenia Properties (Właściwości) i Security (Zabezpieczenia).
    3. W górnym okienku wybierz konto usługi BlackBerry Enterprise Server. Upewnij się, że w dolnym okienku uprawnienia „Wyślij jako”, „Odbierz jako” oraz „Administruj magazynem informacji” są ustawione jako Allow (Zezwalaj).
    4. Powtórz kroki 4b i 4c dla każdego magazynu skrzynki pocztowej każdego serwera Exchange Server.
  5. W przystawce Użytkownicy i komputery usługi Active Directory wykonaj następujące kroki:
    1. Prawym przyciskiem myszy kliknij użytkownika, dla którego chcesz dodać uprawnienia, a następnie kliknij polecenie Properties (Właściwości).
    2. Na karcie Security (Zabezpieczenia) dodaj konto usługi BlackBerry Enterprise Server, a następnie kliknij, aby zaznaczyć pole wyboru Send As (Wyślij jako).
Jeśli nie używasz programu Exchange Server 2003, przejdź do zadania nr 3.

Zadanie 3: Wyczyść pamięć podręczną serwera BlackBerry Enterprise Server

Aby wyczyścić pamięć podręczną uprawnień w Magazynie informacji, należy ponownie uruchomić usługi związane z serwerem Blackberry i ponownie uruchomić usługę Magazyn informacji programu Microsoft Exchange. Po ponownym uruchomieniu usługi Magazyn informacji należy ponownie uruchomić usługi związane z serwerem RIM Blackberry, aby udzielić kontu „BESAdmin” nowo dodanego uprawnienia Wyślij jako w odniesieniu do Magazynu informacji programu Exchange.

Aby uzyskać więcej informacji dotyczących szczegółowych wymagań związanych z serwerem Blackberry, odwiedź następującą witrynę BlackBerry w sieci Web:

Więcej informacji

Uprawnienia dostępu do skrzynki pocztowej i folderu programu Exchange są podzielone między bazy danych usługi Active Directory i programu Microsoft Exchange. Chociaż oba rodzaje uprawnień są ustawiane w konsoli zarządzania użytkownikami usługi Active Directory, różne uprawnienia są przechowywane w dwóch osobnych lokalizacjach.

Jeśli uprawnienie jest ustawiane na stronie Zabezpieczenia danego obiektu, jest ono uprawnieniem usługi Active Directory. Jeśli jest ono ustawiane na stronie Exchange — zaawansowane, Prawa skrzynki pocztowej, jest ono uprawnieniem bazy danych programu Exchange. Dlatego podczas próby uzyskania dostępu do strony Prawa skrzynki pocztowej, gdy baza danych użytkownika jest niedostępna, jest wyświetlany następujący komunikat o błędzie:
Usługa Magazyn informacji firmy Microsoft jest niedostępna.
Uprawnienie Skojarzone konto zewnętrzne jest wyjątkiem od reguły stanowiącej, że uprawnienia ustawiane za pomocą strony Exchange — zaawansowane, Prawa skrzynki pocztowej są przechowywane w bazie danych programu Exchange. Uprawnienie Skojarzone konto zewnętrzne nie jest nawet prawdziwym uprawnieniem, ale metodą ustawiania atrybutu msExchMasterAccountSID usługi Active Directory. Atrybut msExchMasterAccountSID, chociaż sam nie jest uprawnieniem, kontroluje działanie innych uprawnień. Aby uzyskać szczegółowe informacje dotyczące atrybutu msExchMasterAccountSID, zobacz sekcję "Skojarzone konta zewnętrzne".

Uwaga: Atrybut msExchMailboxSecurityDescriptor usługi Active Directory jest kopią zapasową podzbioru efektywnych praw skrzynki pocztowej. Jest on używany wewnętrznie przez program Exchange w wielu różnych celach. Ponadto atrybut msExchMailboxSecurityDescriptor jest aktualizowany w celu zachowania zgodności z bieżącymi efektywnymi prawami, jeśli administratorzy używają obsługiwanych interfejsów w celu przypisywania praw.

Jeśli jednak atrybut msExchMailboxSecurityDescriptor zostanie zmodyfikowany bezpośrednio przez administratora, zmiany nie zostaną przekazane do magazynu programu Exchange i nie zaczną obowiązywać. Nie ma gwarancji synchronizacji z rzeczywistymi prawami skrzynki pocztowej. Nie należy używać atrybutu msExchMailboxSecurityDescriptor w celu odczytywania lub zapisywania praw skrzynki pocztowej.

Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
310866 How to set Exchange Server 2003 and Exchange 2000 Server mailbox rights on a mailbox that exists in the information store


Uprawnienie Pełny dostęp do skrzynki pocztowej jest uprawnieniem magazynu bazy danych programu Exchange. Uprawnienie Wyślij jako jest uprawnieniem usługi Active Directory. Zanim plik Store.exe programu Exchange został zmieniony w sposób opisany w tym artykule, system Exchange nie sprawdzał ustawienia uprawnienia Wyślij jako, jeśli nadawca miał już uprawnienie Pełny dostęp do skrzynki pocztowej.

Uwaga: Można udzielić uprawnienia Wyślij jako bez udzielania uprawnienia Pełny dostęp do skrzynki pocztowej. W takich sytuacjach program Exchange zawsze uwzględniał uprawnienie Wyślij jako.

Uwzględnienie uprawnienia Wyślij jako w uprawnieniu Pełny dostęp do skrzynki pocztowej umożliwiło administratorom serwera Exchange udzielanie sobie czynnych uprawnień Wyślij jako do dowolnej skrzynki pocztowej znajdującej się na administrowanym przez nich serwerze. Administratorzy mogą wykonać tę czynność, ponieważ mają pełną efektywną kontrolę nad bazą danych programu Exchange. Przez oddzielenie uprawnienia Wyślij jako od uprawnienia Pełny dostęp do skrzynki pocztowej administratorzy usługi Active Directory mogą teraz zablokować ten proces, ponieważ uprawnienie Wyślij jako jest uprawnieniem usługi Active Directory, a nie magazynu programu Exchange. Dlatego proces ten niekoniecznie znajduje się pod kontrolą administratorów programu Exchange.

Właściciele skrzynek pocztowych

Właściciel skrzynki pocztowej jest definiowany jako konto użytkownika usługi Active Directory, którego atrybut msExchMailboxGUID przenosi globalny unikatowy identyfikator numeryczny (GUID) dla danej skrzynki pocztowej. Tylko jedno konto w całym lesie może przenosić identyfikator GUID dla danej skrzynki pocztowej. W przypadku próby ustawienia drugiego właściciela z takim samym identyfikatorem GUID, usługa Active Directory odrzuci zmianę i zgłosi błąd.


Po włączeniu obsługi skrzynki pocztowej na koncie lub podłączeniu odłączonej skrzynki pocztowej do konta usługi Active Directory, identyfikator GUID skrzynki pocztowej zostanie automatycznie ustawiony na tym koncie. Sytuacje, w których jest niezbędne lub zalecane, aby administratorzy ręcznie ustawiali identyfikator GUID skrzynki pocztowej, należą do rzadkości.

Skojarzone konta zewnętrzne

Typowa konfiguracja programu Exchange to instalacja programu Exchange w lesie zasobów. Las zasobów to las inny niż las, w którym znajdują się konta użytkowników mających skrzynki pocztowe w systemie. Stanowi to problem, ponieważ atrybut msExchMailboxGUID można ustawić tylko w obiektach znajdujących się w tym samym lesie co serwer programu Exchange.

Rozwiązaniem tego problemu jest włączenie obsługi skrzynki pocztowej na koncie w lesie serwera programu Exchange. Następnie to obsługujące skrzynkę pocztową konto można połączyć z innym kontem w lesie lub domenie systemu Microsoft Windows NT 4.0. Można to zrobić udzielając uprawnienia Skojarzone konto zewnętrzne. Uprawnienia Skojarzone konto zewnętrzne można udzielić tylko jednemu kontu. Wybrane konto musi znajdować się w innym lesie.

Podczas ustawiania uprawnienia Skojarzone konto zewnętrzne w atrybucie msExchMasterAccountSID właściciela skrzynki pocztowej jest zapisywana wartość SID dotycząca konta zewnętrznego. Dlatego też nie jest to w ogóle uprawnienie, ale wygodna metoda kontrolowania wartości atrybutu msExchMasterAccountSID. Po ustawieniu atrybutu msExchMasterAccountSID kontu zewnętrznemu, które ma dany identyfikator SID, zostanie udzielony dostęp do programu Exchange, tak jakby było to rzeczywiste konto właściciela skrzynki pocztowej.

Należy zauważyć, że dotyczy to tylko dostępu do programu Exchange, a nie do całej usługi Active Directory. Ponadto po ustawieniu uprawnienia Skojarzone konto zewnętrzne należy konto właściciela skrzynki pocztowej oznaczyć jako wyłączone z logowania, dzięki czemu wszystkie uprawnienia będą działać zgodnie z oczekiwaniami.
300456 Client permissions and delegations do not persist after being assigned in Exchange 2000

Scenariusze udzielania pełnomocnictwa

Pełnomocnik to użytkownik, któremu udzielono częściowego dostępu do innej skrzynki pocztowej oraz prawa do wysyłania wiadomości e-mail w imieniu właściciela tej skrzynki pocztowej. Typowy scenariusz udzielania pełnomocnictwa obejmuje udzielenie asystentowi administracyjnemu dostępu pełnomocnika do kalendarza przełożonego. Zazwyczaj pełnomocnik może odczytywać i aktualizować kalendarz. Ponadto pełnomocnik może odpowiadać na wiadomości e-mail w imieniu przełożonego.

Dostęp pełnomocnika jest udzielany przez dodanie pełnomocnika do wielowartościowego atrybutu publicDelegates właściciela skrzynki pocztowej. Wszyscy użytkownicy wymienieni w tym atrybucie mają uprawnienie Wyślij w imieniu dla właściciela skrzynki pocztowej. Gdy tacy pełnomocnicy wysyłają wiadomość e-mail, w której polu Od znajduje się nazwa właściciela, w polu Od wiadomości e-mail będzie wyświetlana następującą wartość:
<Nazwa pełnomocnika> w imieniu <Właściciel skrzynki pocztowej>
Jednak wiadomość e-mail jest wysyłana od pełnomocnika, a nie od właściciela skrzynki pocztowej (ani jako od właściciela).

Poniżej przedstawiono listę dwóch interfejsów, których można użyć w celu udzielenia uprawnienia Wyślij w imieniu i uprawnień pełnomocnika:
  • W obiekcie właściciela skrzynki pocztowej uprawnienia Wyślij w imieniu można udzielić w oknie dialogowym Exchange — ogólne.
  • W programie Microsoft Outlook należy użyć okna dialogowego Pełnomocnicy.
Działanie obu tych metod polega na ustawianiu atrybutu publicDelegates. Jednak metoda z użyciem programu Outlook umożliwia także udzielenie pełnomocnikowi określonych uprawnień do folderów. Pełnomocnikowi można także udzielić uprawnień bezpośrednio z właściwości pojedynczego folderu programu Outlook.

W niektórych przypadkach ustawienie atrybutu publicDelegates w programie Outlook może być niemożliwe.
329622 "Send on behalf" permission is not assigned to a user after you delegate access in Outlook


Jeśli udzielono dostępu pełnomocnika do skrzynki pocztowej, pełnomocnik może używać uprawnienia Wyślij w imieniu, nawet jeśli nie udzielono mu dostępu do żadnego z folderów w skrzynce pocztowej. Najważniejszym uprawnieniem pełnomocnika jest uprawnienie Wyślij w imieniu. Uprawnienia dostępu do folderów w skrzynce pocztowej są odrębnymi uprawnieniami i należy ich udzielać oprócz uprawnień pełnomocnika.

Zazwyczaj pełnomocnicy używają programu Microsoft Outlook w celu uzyskiwania dostępu do pojedynczych folderów, do których udzielono im uprawnienia. Można to zrobić, klikając polecenie Otwórz w menu Plik programu Outlook, a następnie klikając polecenie Folder innego użytkownika.

Alternatywnie pełnomocnicy mogą otworzyć skrzynkę pocztową użytkownika, wyświetlając ją jako dodatkową skrzynkę pocztową na karcie Zaawansowane w swoich profilach programu Outlook. Ta metoda spowoduje, że skrzynka pocztowa użytkownika będzie wyświetlana w drzewie folderów programu Outlook pełnomocnika. Ponadto ta metoda umożliwia dostęp do wszystkich folderów w skrzynce pocztowej, do których udzielono pełnomocnikowi uprawnień.

Czasami konieczne jest, aby pełnomocnik miał uprawnienie Wyślij w imieniu, a czasami, aby miał uprawnienie Wyślij jako. Aby skonfigurować pełnomocnika z tymi dwoma uprawnieniami, wykonaj następujące kroki:
  • Udziel pełnomocnikowi uprawnienia Pełny dostęp do skrzynki pocztowej. Tej czynności nie można wykonać w programie Outlook. Tę czynność musi wykonać administrator usługi Active Directory na koncie właściciela skrzynki pocztowej. Udzielenie uprawnień właściciela do każdego folderu w skrzynce pocztowej nie daje uprawnienia odpowiadającego uprawnieniu Pełny dostęp do skrzynki pocztowej.
  • Nie udzielaj pełnomocnikowi uprawnienia Wyślij jako. Jeśli udzielisz pełnomocnikowi uprawnienia Wyślij jako, wszystkie wiadomości e-mail wysłane przez pełnomocnika będą wysyłane z użyciem uprawnienia Wyślij jako. Pełnomocnik nie będzie już mógł używać uprawnienia Wyślij w imieniu.
W tym scenariuszu pełnomocnik, który chce używać uprawnienia Wyślij jako, powinien zalogować się do swojej skrzynki pocztowej. Jeśli pełnomocnik będzie odpowiadać na wiadomość e-mail znajdującą się już w jednym z folderów użytkownika lub przesyłać ją dalej, wiadomość e-mail zostanie automatycznie wysłania w imieniu użytkownika. Jeśli pełnomocnik utworzy nową wiadomość e-mail w imieniu użytkownika, w polu Od będzie musiał wprowadzić nazwę użytkownika, aby wiadomość e-mail została wysłana w imieniu użytkownika.

Niezależnie do tego, czy pełnomocnik ma otwarte foldery użytkownika, czy całą jego skrzynkę pocztową jako drugą skrzynkę pocztową, wszystkie wysyłane przez niego wiadomości e-mail będą wysyłane przy użyciu uprawnienia Wyślij w imieniu, jeśli jego własna skrzynka pocztowa będzie podstawową skrzynką pocztową w bieżącym profilu programu Outlook.

Gdy pełnomocnik chce wysłać wiadomość e-mail jako użytkownik, powinien zalogować się do skrzynki pocztowej użytkownika, używając innego profilu programu Outlook, który otwiera tylko skrzynkę pocztową użytkownika. Wiadomości e-mail wysłane, gdy pełnomocnik będzie zalogowany do tego profilu, będą automatycznie wysyłane jako wiadomości od użytkownika.

Znajdowanie kont, które mają uprawnienie Pełny dostęp do skrzynki pocztowej, ale nie mają uprawnienia Wyślij jako

Przykładowy skrypt opisany w tej sekcji może w danej chwili wyszukiwać w jednej domenie usługi Active Directory konta użytkowników, którym udzielono uprawnienia Pełny dostęp do skrzynki pocztowej bez uprawnienia Wyślij jako.


Ważne: Przed dokonaniem zmiany uprawnień zapoznaj się z sekcją Informacje o właścicielach skrzynek pocztowych mających pełnomocników

Skrypt ma trzy następujące tryby:
  • Export: Można wyeksportować listę użytkowników, którzy mają uprawnienie Pełny dostęp do skrzynki pocztowej, ale nie mają uprawnienia Wyślij jako. Następnie można wyświetlić tę listę w Notatniku lub innym edytorze, aby usunąć konta, które nie powinny mieć uprawnienia Wyślij jako.
  • Import: Można zaimportować listę użytkowników, którzy mają uprawnienie Pełny dostęp do skrzynki pocztowej i którym należy też udzielić uprawnienia Wyślij jako. Należy zauważyć, że za pomocą tego skryptu nie można udzielić i uprawnienia Pełny dostęp do skrzynki pocztowej i uprawnienia Wyślij jako. Każde konto musi mieć już uprawnienie Pełny dostęp do skrzynki pocztowej, aby można było mu udzielić uprawnienia Wyślij jako.
  • SetAll: Uprawnienia Wyślij jako można udzielić wszystkim użytkownikom w domenie, którzy mają już uprawnienie Pełny dostęp do skrzynki pocztowej dla określonej skrzynki pocztowej. Zostanie wygenerowany plik dziennika w takim samym formacie jak plik eksportu. Ten tryb stanowi odpowiednik użycia trybów Export i Import bez edytowania pliku eksportu.
Uwaga: Ten skrypt nie oferuje funkcji cofania.

Uprawnienia wymagane dla skryptu

Skrypt należy uruchomić po zalogowaniu się na koncie administracyjnym z tego samego lasu, w którym znajdują się konta właściciela skrzynki pocztowej. Skrypt może nie działać z kontami, które mają uprawnienia administracyjne w różnych lasach. Skrypt może także nie działać, jeśli zostanie uruchomiony ze stacji roboczej, którą dołączono do lasu innego niż ten, do którego dołączono konta właściciela skrzynki pocztowej.

Uwzględniając te warunki, w jednej sesji logowania można uruchomić skrypt za pomocą wielu kont administracyjnych, używając polecenia RunAs.exe. Ta procedura może być użyteczna, jeśli użytkownik ma podzielone na segmenty uprawnienia w usłudze Active Directory i na serwerze programu Exchange Server i nie ma jednego konta umożliwiającego administrowanie wszystkimi serwerami programu Exchange lub wszystkimi domenami usługi Active Directory. Można otworzyć wiersz polecenia, aby uruchomić skrypt za pomocą każdego konta administracyjnego. Rozpatrzmy następujący przykład:
RunAs.exe /użytkownik:domena\konto CMD.EXE
Uwaga: W jednej domenie nie należy jednocześnie uruchamiać wielu kopii skryptu.

Pola znajdujące się w pliku eksportu opisano poniżej. Te pola zostały opisane w kolejności ich występowania w pliku eksportu.
  • Nazwa wyświetlana konta właściciela skrzynki pocztowej

    Ten sam właściciel skrzynki pocztowej może być wymieniony w kilku wierszach w pliku wynikowym. Stanie się tak, jeśli wiele kont będzie miało uprawnienie Pełny dostęp do skrzynki pocztowej dla tej samej skrzynki pocztowej.
  • Domena i nazwa logowania konta, które ma uprawnienie Pełny dostęp do skrzynki pocztowej, ale nie ma uprawnienia Wyślij jako

    Jedno konto może być wielokrotnie wymienione w pliku eksportu, jeśli ma ono dostęp do wielu skrzynek pocztowych. Prawdopodobnie tak będzie w przypadku konta usługi aplikacji lub osoby, które służy do zarządzania wieloma skrzynkami pocztowymi zasobów.
  • Nazwa wyświetlania konta, które ma uprawnienie Pełny dostęp do skrzynki pocztowej, ale nie ma uprawnienia Wyślij jako

    To pole jest używane oprócz pola Nazwa logowania, aby ułatwić identyfikację konta.
  • Stan pełnomocnika właściciela skrzynki pocztowej

    Jeśli właściciel skrzynki pocztowej ma pełnomocników, wartością pola jest Ma pełnomocników. Jeśli właściciel skrzynki pocztowej nie ma pełnomocników, wartością pola jest Brak pełnomocników.
  • Stan włączenia lub wyłączenia konta właściciela skrzynki pocztowej

    To pole ułatwia identyfikację kont zasobów lub kont w skrzynkach pocztowych w różnych lasach. Zazwyczaj te konta są wyłączone.
  • Pełna nazwa wyróżniająca konta właściciela skrzynki pocztowej

    To pole ułatwia identyfikację domeny oraz kontenera konta właściciela skrzynki pocztowej.
  • Pełna nazwa wyróżniająca bazy danych skrzynek pocztowych właściciela skrzynki pocztowej

    To pole zawiera bazę danych, grupę przechowywania, serwer oraz grupę administracyjną skrzynki pocztowej.
W poniższym przykładzie użytkownik mający nazwę logowania „Brak_Wyślij_jako” ma uprawnienie Pełny dostęp do skrzynki pocztowej, ale nie ma uprawnienia Wyślij jako do skrzynki pocztowej „Właściciel skrzynki pocztowej”.
"""Właściciel skrzynki pocztowej""" """Domena\Brak_Wyślij_jako""" """Nie wysyłaj jako użytkownik""" """Ma pełnomocników""" """Włączone""" [pominięto dodatkowe pola]

Konfiguracja administracyjnej stacji roboczej na potrzeby skryptu

Ten skrypt używa interfejsów zarządzania programu Exchange w celu komunikowania się z serwerami programu Exchange. Dlatego skrypt należy uruchomić na serwerze programu Exchange lub stacji roboczej, na której jest zainstalowany administrator systemu programu Exchange.

Edytowanie pliku eksportu

Plik eksportu to zwykły plik tekstowy w formacie Unicode, co umożliwia korzystanie z zestawów znaków dla różnych języków. Niektóre edytory tekstów mogą nie umożliwiać prawidłowego wyświetlania lub edytowania tego pliku lub mogą zapisywać go w formacie pliku tekstowego ANSI lub ASCII. Narzędzie Notatnik w systemach Microsoft Windows XP, Microsoft Windows 2000 i Microsoft Windows 2003 poprawnie obsługuje pliki tekstowe w formacie Unicode. Ponadto pliki tekstowe w formacie Unicode są poprawnie obsługiwane w programie Microsoft Excel.

Dane w pliku wyjściowym są rozdzielane tabulatorami, a wartość każdego pola jest zamknięta w potrójnym cudzysłowie. Znaki potrójnego cudzysłowu są stosowane, aby importowanie i eksportowanie z programu Excel było bardziej deterministyczne. W programie Excel znaki potrójnego cudzysłowu zostaną zamienione na znaki pojedynczego cudzysłowu, a przy ponownym zapisywaniu pliku w formacie Unicode zostaną przywrócone znaki potrójnego cudzysłowu. Zapoznaj się z następującymi instrukcjami, aby poprawnie otworzyć i zapisać plik eksportu w programie Excel.

Można także filtrować plik eksportu za pomocą programu Excel przy użyciu narzędzia Find.exe lub Findstr.exe. Narzędzia te są dołączone do systemu Windows. Umożliwiają one wyszukiwanie słów w pliku i wyprowadzanie tylko wierszy zawierających te słowa lub niezawierających tych słów. Jeśli na przykład chcesz otrzymać listę wszystkich właścicieli skrzynek pocztowych w pliku, którzy mają pełnomocników, użyj jednego z poniższych poleceń, aby utworzyć plik tylko z wierszami zawierającymi ciąg „Ma pełnomocników”:
Find.exe „Ma pełnomocników” Oryginalny_plik.txt > Ma_pełnomocników.txt

Findstr.exe /C:„Ma pełnomocników” Oryginalny_plik.txt > Ma_pełnomocników.txt
W innym przykładzie załóżmy, że odfiltrowujesz wszystkich właścicieli skrzynek pocztowych, którzy mają pełnomocników. Przełącznik /V powoduje, że zwracane są wszystkie wiersze niezawierające szukanych wyrazów. W celu utworzenia pliku niezawierającego wierszy „Ma pełnomocników”, można użyć jednego z następujących poleceń:
Find.exe „Brak pełnomocników” Oryginalny_plik.txt > Brak_pełnomocników.txt


Find.exe /V “Ma pełnomocników” Oryginalny_plik.txt > Brak_pełnomocników.txt


Findstr.exe /C:“Brak pełnomocników” Oryginalny_plik.txt > Brak_pełnomocników.txt


Findstr.exe /V /C:„Ma pełnomocników” Oryginalny_plik.txt > Brak_pełnomocników.txt
Poleceń tych można także użyć w celu utworzenia pliku z listą wszystkich kont, w przypadku których konto usługi aplikacji ma uprawnienie Pełny dostęp do skrzynki pocztowej, ale nie ma uprawnienia Wyślij jako. Użycie przełącznika /I powoduje, że w poleceniu nie jest rozróżniana wielkość liter:
Find.exe /I „domena\Konto_usługi” Oryginalny_plik.txt > Konto_usługi.txt


Findstr.exe /I /C:„domena\Konto_usługi” Oryginalny_plik.txt > Konto_usługi.txt
Uwaga: Jeśli używasz narzędzia Find.exe do utworzenia odfiltrowanego pliku, musisz usunąć wiersze nagłówka, które narzędzie Find.exe utworzy na początku pliku.

Z narzędziem Findstr.exe nie należy używać nazw plików składających się z symboli wieloznacznych (*.*). Użycie symboli wieloznacznych spowoduje, że na początku każdego wiersza w pliku wyjściowym będzie znajdować się nazwa pliku. Plik wyjściowy przefiltrowany za pomocą narzędzia Find.exe lub Findstr.exe należy dokładnie przejrzeć, aby sprawdzić, czy filtr przechwycił lub wykluczył odpowiednie konta.

W poniższym przykładzie użytkownik mający nazwę logowania „Brak_Wyślij_jako” ma uprawnienie Pełny dostęp do skrzynki pocztowej, ale nie ma uprawnienia Wyślij jako do skrzynki pocztowej „Właściciel skrzynki pocztowej”.
"""Właściciel skrzynki pocztowej""" """Domena\Brak_Wyślij_jako""" """Nie wysyłaj jako użytkownik""" 
"""Ma pełnomocników""" """Włączone""" [pominięto dodatkowe pola]

Informacje o właścicielach skrzynek pocztowych mających pełnomocników

Pełnomocnik mający uprawnienie Pełny dostęp do skrzynki pocztowej (nazywany też superpełnomocnikiem) zazwyczaj nie powinien mieć uprawnienia Wyślij jako. Gdy superpełnomocnik loguje się bezpośrednio do skrzynki pocztowej właściciela skrzynki pocztowej, może używać uprawnienia Wyślij jako. Gdy pełnomocnik używa funkcji delegowania programu Outlook (Dodatkowe skrzynki odbiorcze do otwarcia lub Otwieranie folderu innego użytkownika), wiadomości są wysyłane z użyciem uprawnienia Wyślij w imieniu.

Uprawnienia Wyślij jako należy udzielać superpełnomocnikowi tylko wtedy, gdy pełnomocnik zawsze ma wysyłać wiadomości jako właściciel skrzynki pocztowej i nigdy nie ma wysyłać wiadomości w imieniu właściciela skrzynki pocztowej. Zaleca się, aby w pliku eksportu wyszukać ciąg „Ma pełnomocników”, a następnie określić, czy dowolny z superpełnomocników wymienionych w pliku jest w rzeczywistości pełnomocnikiem właściciela skrzynki pocztowej.

W pliku eksportu są wymieni wyłącznie superpełnomocnicy. Zwykli pełnomocnicy nie mają uprawnienia Pełny dostęp do skrzynki pocztowej. Ponadto po udzieleniu zwykłemu pełnomocnikowi uprawnienia Wyślij jako będzie on zawsze wysyłał wiadomości jako właściciel skrzynki pocztowej. Będzie się tak dziać nawet wtedy, gdy zwykły pełnomocnik nie będzie miał uprawnienia Pełny dostęp do skrzynki pocztowej. Jeśli uprawnienie Wyślij jako zostanie udzielone pełnomocnikowi, który nie powinien go mieć, z łatwością będzie je można później odwołać.

Jak otworzyć plik eksportu w programie Excel

  1. Uruchom program Excel przed otwarciem pliku eksportu.
  2. Otwórz plik w programie Excel jako typ Pliki tekstowe. Spowoduje to uruchomienie Kreatora importu tekstu.
  3. W Kreatorze importu tekstu zmień lub zaakceptuj następujące ustawienia:
    • Typ danych źródłowych: Rozdzielany
    • Zacznij import od wiersza: 1
    • Pochodzenie pliku: Unicode (UTF-8)
    • Ograniczniki: Tabulator
    • Kolejne ograniczniki traktuj jako jeden: niezaznaczone
    • Kwalifikator tekstu: " (podwójny cudzysłów)

Jak zapisać plik eksportu po edycji w programie Excel

  1. W pliku eksportu kliknij polecenie Zapisz jako.
  2. Nadaj plikowi inną nazwę, aby zachować nieedytowaną kopię oryginalnego pliku.
  3. Kliknij polecenie Plik, kliknij polecenie Zapisz jako, wprowadź nazwę zapisywanego pliku, a następnie z listy rozwijanej Zapisz jako typ wybierz pozycję Tekst Unicode.

Składnia skryptu

Jest to skrypt trybu tekstowego i należy uruchomić go w oknie wiersza polecenia, a nie w oknie dialogowym Uruchamianie. Aby otworzyć wiersz polecenia, kliknij przycisk Start, kliknij polecenie Uruchom, w polu Otwórz wpisz polecenie CMD, a następnie kliknij przycisk OK.

Dziennik błędów i plik eksportu zostaną zapisane w bieżącym katalogu wiersza polecenia. Musisz mieć uprawnienia do tworzenia plików w tym katalogu.
Aby wyświetlić pomoc wiersza polecenia, wprowadź następujące polecenie:
CSCRIPT AddSendAs.vbs 
Aby wyeksportować użytkowników, którzy w domenie mają uprawnienie Pełny dostęp do skrzynki pocztowej bez uprawnienia Wyślij jako, wprowadź następujące polecenie:
CSCRIPT AddSendAs.vbs [nazwa kontrolera domeny] –Export Przykład: CSCRIPT AddSendAs.vbs KD-FIRMY-1 –Export
Wygenerowany plik eksportu będzie miał nazwę Wyślij_jako_eksport_G_MM_SS.txt.
Aby zaimportować edytowany plik eksportu, wprowadź następujące polecenie:
CSCRIPT AddSendAs.vbs [nazwa kontrolera domeny] –Import [nazwa_pliku]


Przykład:


CSCRIPT AddSendAs.vbs KD-FIRMY-1 –Import "Wyślij_jako_eksport_G_MM_SS.txt"

Jak udzielić uprawnienia Wyślij jako do każdej skrzynki pocztowej w domenie wszystkim użytkownikom, którzy mają już uprawnienie Pełny dostęp do skrzynki pocztowej dla określonej skrzynki pocztowej.

Uwaga: Jeśli w organizacji znajdują się pełnomocnicy, którzy mają także uprawnienie Pełny dostęp do skrzynki pocztowej, nie należy używać trybu SetAll. Użycie w takiej sytuacji trybu SetAll spowoduje, że pełnomocnicy otrzymają uprawnienie Wyślij jako. To zachowanie może spowodować, że wysyłane przez nich wiadomości e-mail będą wysyłane przy użyciu uprawnienia Wyślij jako, a nie Wyślij w imieniu. To zachowanie można poprawić, usuwając uprawnienie Wyślij jako, które w sposób niezamierzony zostało udzielone pełnomocnikowi.
CSCRIPT AddSendAs.vbs [nazwa kontrolera domeny] –SetAll


Przykład:


CSCRIPT AddSendAs.vbs KD-FIRMY-1 –SetAll
Użycie trybu SetAll spowoduje, że wygenerowany plik eksportu będzie miał nazwę Wyślij_jako_eksport_G_MM_SS.txt. Należy zapisać ten plik, ponieważ zawiera on spis wszystkich kont, które zostały zmienione. W przypadku ponownego uruchomienia skryptu nie wygeneruje on takiej samej listy kont, ponieważ kontom udzielono już uprawnienia Wyślij jako.


Błędy, które wystąpią w trakcie działania skryptu, zostaną zapisane w pliku Wyślij_jako_błędy_G_MM_SS.txt. Nazwa pliku błędów będzie zgodna z sygnaturą czasową godziny_minuty_sekundy skojarzonego z nim pliku eksportu.

Modyfikacje skryptu

W organizacji mogą być użytkownicy kont, którzy mają uprawnienia do wielu obiektów, ale nie ma potrzeby zmiany tych uprawnień. Aby zmniejszyć rozmiar pliku eksportu, możesz odfiltrować te konta, modyfikując zmienną FMA_EXCLUSIVE_LIST znajdującą się blisko początku skryptu. Domyślnie zmienna ta wyświetla kilka kont, które powinny być pominięte w danych wyjściowych skryptu. Można dodać więcej kont, używając następującego formatu:
& "<Domena\Nazwa>" & OUTPUT_DELIMITER
Można na przykład zmienić wartość następującej zmiennej:
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & 
OUTPUT_DELIMITER
na następującą:
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & 
OUTPUT_DELIMITER & "Moja_domena\Usługa_1" & OUTPUT DELIMITER
Ta zmiana powoduje pominięcie konta „Moja_domena\Usługa_1” w pliku eksportu wraz z „NT AUTHORITY\SELF” i „NT AUTHORITY\SYSTEM”. Należy zauważyć, że w wartości Domena\Nazwa uwzględniana jest wielkość liter i dlatego musi ona wyglądać dokładnie tak, jak w systemie lub jak występowałaby w pliku eksportu.

Kolejną zmienną, którą można edytować, jest zmienna FMA_EXCLUSIVE_EXSVC mająca wartość domyślną "\Usługi programu Exchange" & OUTPUT_DELIMITER. „Usługi programu Exchange” to nazwa konta, które otrzymuje uprawnienia za pośrednictwem łącznika usługi Active Directory w scenariuszach migracji i współistnienia programu Exchange 5.5 i programu Exchange 2000. To konto jest tworzone w wielu domenach i jeśli nie zostanie pominięte, może wielokrotnie występować w pliku eksportu.

Wartością zmiennej FMA_EXCLUSIVE_EXSVC może być tylko jedna nazwa konta. W nazwie konta nie jest rozróżniana wielkość liter. Nazwa wyświetlanego konta musi rozpoczynać się od ukośnika odwrotnego i nie powinna zawierać nazwy domeny, do której należy konto. Konto będzie pomijane w przypadku wszystkich domen, w których istnieje.

Jeśli użyte zostały narzędzia migracji lub metody synchronizacji katalogów innej firmy, to w wielu domenach może istnieć inne konto z szerokimi uprawnieniami do skrzynek pocztowych użytkowników. W tym scenariuszu można zastąpić nazwę „\Usługi programu Exchange” nazwą tego konta.

Porady i zastrzeżenia

  • Nie odrzucaj plików dzienników i plików błędów generowanych przez skrypt. Mogą być one przydatne podczas rozwiązywania problemów lub późniejszego odwracania zmian. Należy pamiętać, że gdy tylko kontu zostanie udzielone uprawnienie Wyślij jako, nie będzie ono już rejestrowane w pliku eksportu.
  • Wyłączenie serwera lub bazy danych programu Exchange spowoduje spowolnienie przetwarzania skryptu. W takim przypadku można posortować plik eksportu według baz danych i przenieść wiersze skojarzone z zatrzymaną bazą danych do innego pliku, aby je później zaimportować.
  • Skrypt pomija konta, których nazwa kończy się znakiem $ lub brzmi ZARZĄDZANIE NT\SYSTEM. Te konta systemowe zazwyczaj nie potrzebują uprawnienia Wyślij jako i usunięcie ich z pliku eksportu spowoduje znaczące zmniejszenie jego rozmiaru.
  • Plik eksportu musi być w formacie Unicode, aby można było go zaimportować. Jeśli ten plik zostanie przypadkowo zapisany jako tekst ANSI, można rozwiązać ten problem, otwierając go w Notatniku i zapisując jako tekst w formacie Unicode.
  • Jeśli importowanie nie jest możliwe, należy spróbować rozwiązać problem, używając kont testowych i jednego wiersza w pliku eksportu. Konto testowe należy skonfigurować tak, aby miało skrzynkę pocztową na serwerze programu Exchange, a następnie innemu kontu testowemu należy udzielić uprawnienia Pełny dostęp do skrzynki pocztowej, ale nie uprawnienia Wyślij jako.
  • Ten skrypt nie oferuje trybu cofania zmian. Aby usunąć uprawnienia Wyślij jako udzielone przy użyciu tego skryptu, należy utworzyć inny skrypt lub usunąć je ręcznie. Skrypt nie oferuje trybu cofania zmian, aby uniemożliwić użycie go w celu odebrania uprawnienia Wyślij jako wszystkim użytkownikom w organizacji.
  • Ten skrypt nie obsługuje poprawnie kont, którym wraz z uprawnieniem Pełny dostęp do skrzynki pocztowej udzielono prawa Pełna kontrola w obiekcie użytkownika. Uprawnienie Wyślij jako jest zawarte w uprawnieniu Pełna kontrola, ale skrypt będzie eksportować konto tak, jakby nie miało uprawnienia Wyślij jako. Może to zwiększyć rozmiar pliku eksportu, lecz import pliku i udzielenie uprawnienia Wyślij jako takim kontom nie spowoduje żadnej szkody.
  • Za pomocą tego skryptu nie można przetwarzać kont użytkowników usługi Active Directory o nazwach wyróżniających i zawierających tabulatory lub niedopasowane znaki cudzysłowu. Skrypt może prawidłowo przetwarzać nazwę zawierającą parzyste podwójne cudzysłowy, na przykład:
    “CN=First “Pseudonim” Last,DC=domain,DC=com”
  • Program Excel obsługuje pliki o maksymalnej długości równej 65 535 wierszy. Jeśli plik wyjściowy jest większy, przed załadowaniem do programu Excel należy podzielić go na sekcje.
  • W pliku Wyślij_jako_błędy będą wymienione konta, w przypadku których wystąpił błąd odczytu lub zapisu uprawnień. Jeśli pozostałe konta w domenie zostały przetworzone prawidłowo, konta te mogą mieć cechę wspólną, która uniemożliwia wykonanie na nich skryptu. Typowe problemy to między innymi:
    • Brak uprawnień administracyjnych do wyświetlania lub ustawiania właściwości kont.
    • Niedziałający magazyn skrzynek pocztowych programu Exchange.
    • Stacja robocza nie jest członkiem tej samej domeny.
    • Używane konto administracyjne nie należy do tego samego lasu.
Aby uruchomić ten skrypt, skopiuj wszystkie wiersze między wierszami POCZĄTEK SKRYPTU i KONIEC SKRYPTU i wklej je do edytora zwykłego tekstu, takiego jak Notatnik. Zapisz skrypt pod nazwą AddSendAs.vbs. POCZĄTEK SKRYPTU
Option Explicit

Dim OUTPUT_DELIMITER
OUTPUT_DELIMITER = """""""" & vbTab & """"""""

'Definiowanie listy wykluczania, jeśli dowolnemu użytkownikowi z tej listy udzielono uprawnienia Pełny dostęp do skrzynki pocztowej, będzie on ignorowany. Jeśli
'chcesz zmodyfikować tę listę, pamiętaj, aby używać tego samego formatu. Przed i po
'każdym aliasie powinna znajdować się zmienna OUTPUT_DELIMITER
Dim FMA_EXCLUSIVE_LIST
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "ZARZĄDZANIE NT\SELF" & OUTPUT_DELIMITER & "ZARZĄDZANIE NT\SYSTEM" & OUTPUT_DELIMITER
Dim FMA_EXCLUSIVE_EXSVC
FMA_EXCLUSIVE_EXSVC = "\Usługi programu Exchange" & OUTPUT_DELIMITER

'Typ uprawnienia: Zezwalaj lub Odmów
const ACCESS_ALLOWED_OBJECT_ACE_TYPE = 5
const ADS_ACETYPE_ACCESS_ALLOWED = &h0
const ADS_ACETYPE_ACCESS_DENIED = &h1

'Flagi: określają dziedziczenie
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

' Deklarowanie stałych ADSI
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

'nazwa pliku wyjściowego
Const EXPORT_FILE = "Wyślij_jako_eksport"
Const ERROR_FILE = "Wyślij_jako_błędy"

' tryb skryptu
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"

' indeks argumentów
Const ARG_INDEX_MODE = 1
Const ARG_INDEX_DC = 0
Const ARG_INDEX_FILENAME = 2

' indeks kolumn w pliku importu/eksportu
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 = "Brak pełnomocników"
Const STRNO = "Ma pełnomocników"
Const MIN_ARG = 2
Const INIT_ARRAY_SIZE = 100

' Program Microsoft Exchange
Const EX_MB_SEND_AS_ACCESSMASK = &H00100
Const EX_FULLMailbox_AccessMask = 1
Const MESO = "Obiekty systemu Microsoft Exchange"
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("OSTRZEŻENIE: Jeśli będziesz kontynuować, każdemu kontu w domenie, które ma")
WScript.StdOut.WriteLine("uprawnienie Pełny dostęp do skrzynki pocztowej dla danej skrzynki, ")
WScript.StdOut.WriteLine("zostanie udzielone uprawnienie Wyślij jako właściciel skrzynki pocztowej.")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Aby przed udzieleniem uprawnienia Wyślij jako przejrzeć listę skrzynek pocztowych,")
WScript.StdOut.WriteLine("anuluj tę operację i użyj trybu -Export tego skryptu.")
WScript.StdOut.WriteLine()
WScript.StdOut.Write("Naciśnij klawisz T, aby kontynuować, lub dowolny inny klawisz, aby anulować:") ")
strInput = WScript.StdIn.ReadLine()
If (UCase(strInput) <> UCase("T")) Then
WScript.Quit
End If
End If

WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Znak ""!"" wskazuje błąd przetwarzania obiektu.")
WScript.StdOut.WriteLine(" Sprawdź " & sErrorsFilename)
WScript.StdOut.WriteLine("Trwa uruchamianie...")
WScript.StdOut.WriteLine()

err.Clear
Set rootDSE = GetObject("LDAP://" & sDCServer & "/RootDSE")
sDomainContainer = rootDSE.Get("defaultNamingContext")
WScript.StdOut.WriteLine("Znajdowanie kontrolera domeny [ " & sDCServer & " ] dla domeny [ " & sDomainContainer & " ]")

If (err.number <> 0) Then
WScript.StdOut.WriteLine("Nie znaleziono domeny lub kontrolera domeny, błąd:" & err.Description)
objfileError.WriteLine("Nie można odnaleźć domeny lub kontrolera domeny. Błąd:" & 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("Nie można utworzyć powiązania z serwerem usługi Active Directory. Błąd:" & err.Description)
objfileError.WriteLine("Nie można utworzyć powiązania z serwerem usługi Active Directory. Błąd:" & err.Description)
WScript.Quit
End If

Set objCommand.ActiveConnection = conn
WScript.StdOut.WriteLine("Wyszukiwanie kont użytkowników właścicieli skrzynek pocztowych w domenie " & sDomainContainer)

objCommand.CommandText = "<LDAP://" & 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("Wyszukiwanie właścicieli skrzynek pocztowych nie powiodło się. Błąd:" & err.Description)
objfileError.WriteLine("Wyszukiwanie właścicieli skrzynek pocztowych nie powiodło się. Błąd:" & err.Description)
WScript.Quit
End If

If (rsUsers.RecordCount = 0) Then
WScript.StdOut.WriteLine("Nie odnaleziono kont użytkowników właścicieli skrzynek pocztowych w domenie " & sDomainContainer & ".")
objfileError.WriteLine("Nie odnaleziono kont użytkowników właścicieli skrzynek pocztowych w domenie " & sDomainContainer & ".")
fError = True
End If

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

'Pomiń obiekty skrzynek pocztowych w kontenerze Obiekty systemu Microsoft Exchange
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("Nie można pobrać obiektu użytkownika: " & rsUsers.Fields(0).Value)
objfileError.WriteLine("Błąd: " & err.Description)
fError = True
fOneError = True
err.Clear
End If
Set objSDMailBox = objUser.MailboxRights
If (err.number <> 0) Then
objfileError.WriteLine("Nie można pobrać praw do skrzynki pocztowej: " & rsUsers.Fields(0).Value)
objfileError.WriteLine("Błąd: " & err.Description)
fError = True
fOneError = True
err.Clear
End If
Set objSDNTsecurity = objUser.ntSecurityDescriptor
If (err.number <> 0) Then
objfileError.WriteLine("Nie można pobrać deskryptora zabezpieczeń systemu NT: " & rsUsers.Fields(0).Value)
objfileError.WriteLine("Błąd: " & err.Description)
fError = True
fOneError = True
err.Clear
End If

Set objDACLNTSD = Nothing
If (objUser.AccountDisabled) Then
sMailboxStatus = "Wyłączone"
Else
sMailboxStatus = "Włączone"
End If

'Kwerenda dotycząca listy publicDelegates tego użytkownika
err.Clear
msPublicDelegates = objUser.Get("publicDelegates")
If (err.number <> 0) Then
'Ten użytkownik nie ma ustawionej listy publicDelegates
sIfPublicDelegate = STRNO
err.Clear
Else
sIfPublicDelegate = STRYES
End If

err.Clear
FindAllFMAUsers objSDMailBox

If (TotalACE > dArraySize) Then
'Należy przydzielić tablicę o większym rozmiarze
dArraySize = TotalACE + 1
ReDim Preserve sTrusteeAlias(dArraySize)
FindAllFMAUsers objSDMailBox
End If
If (err.number <> 0) Then
objfileError.WriteLine("Nie można wykonać kwerendy dotyczącej praw użytkownika do skrzynki pocztowej: " & rsUsers.Fields(0).Value)
objfileError.WriteLine("Błąd: " & 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

'Sprawdź, czy w deskryptorze zabezpieczeń systemu NT znajduje się już wpis kontroli dostępu uprawnienia Wyślij jako
'Jeśli istnieje (dotyczący zezwolenia lub odmowy), nie trzeba go już dodawać
CheckSendAsACE objDACLNTSD, sTrusteeAlias(i)

'Uwaga: wpisy związane z odmową dostępu zawsze mają pierwszeństwo przed wpisami związanymi z zezwoleniem.
'Jeśli występuje wpis kontroli dostępu związany z odmową uprawnienia Pełny dostęp do skrzynki pocztowej, pomiń go, nawet jeśli istnieje też wpis związany z zezwoleniem
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

'Kwerenda dotycząca użytkownika trustee(FMA user), mająca na celu uzyskanie jego nazwy wyświetlanej
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
'Nie można wykonać kwerendy dotyczącej nazwy wyświetlanej użytkownika mającego uprawnienie Pełny dostęp do skrzynki pocztowej; będzie używany jego alias
sFMAUserDisplayName = sAlias
Else
sFMAUserDisplayName = objTrustee.displayName
End If

'dane do pliku eksportu
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("Nie można dodać użytkownika " & rsUsers.Fields(0).Value & " do pliku eksportu. Uprawnienia dla tego użytkownika należy ustawić ręcznie.")
objfileError.WriteLine("Błąd: " & 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("Nie można zaktualizować interfejsu ADSI dla użytkownika: " & rsUsers.Fields(0).Value)
objfileError.WriteLine("Błąd: " & 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("Jeśli będziesz kontynuować, każdemu kontu wymienionemu w " & sImportFilePath ", które ma)
WScript.StdOut.WriteLine("uprawnienie Pełny dostęp do skrzynki pocztowej dla danej skrzynki, ")
WScript.StdOut.WriteLine("zostanie również udzielone uprawnienie Wyślij jako właściciel skrzynki pocztowej.")
WScript.StdOut.WriteLine()
WScript.StdOut.Write("Naciśnij klawisz T, aby kontynuować, lub dowolny inny klawisz, aby anulować:") ")
strInput = WScript.StdIn.ReadLine()
If (UCase(strInput) <> UCase("T")) Then
WScript.Quit
End If
WScript.StdOut.WriteLine("Trwa uruchamianie...")
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("Nie można otworzyć pliku importu " & sImportFilePath & ". Błąd:" & err.Description)
objfileError.WriteLine("Nie można otworzyć pliku importu " & sImportFilePath & ". Błąd:" & 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("Nie można przeanalizować jednego wiersza: " & sOneRow )
objfileError.WriteLine("Błąd: " & err.Description)
err.Clear
fError = True
fOneError = True
End If

If (UserPath <> sArraySplit(COLUMN_INDEX_USERADSPATH)) Then
'Nowy użytkownik
If (fNeedToAddSendAs = True ) Then
'zaktualizuj istniejącego użytkownika
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("Nie można zaktualizować uprawnień użytkownika: " & UserPath)
objfileError.WriteLine("Błąd: " & 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("Nie można pobrać obiektu użytkownika: " & UserPath)
objfileError.WriteLine("Błąd: " & err.Description)
err.Clear
fError = True
fOneError = True
End If
End If

'Dodaj nowy wpis kontroli dostępu Czy ten test jest potrzebny?
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
'zaktualizuj ostatniego użytkownika
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("Nie można zaktualizować uprawnień użytkownika: " & UserPath)
objfileError.WriteLine("Błąd: " & 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("Zakończono z co najmniej jednym błędem. Zobacz " & sErrorsFilename)
Else
WScript.StdOut.WriteLine("Zakończono pomyślnie. Nie wystąpiły błędy.")
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
' Otwórz dane listy arbitralnej kontroli dostępu (DACL).
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
'Zachowaj listę kont mających jawnie ustawione uprawnienie Pełny dostęp do skrzynki pocztowej na poziomie skrzynki pocztowej
sFMAExplicitAllow = sFMAExplicitAllow & objACE.Trustee & OUTPUT_DELIMITER
End If
ElseIf (( (objACE.AccessMask And EX_FULLMailbox_AccessMask) <>0 ) And (objACE.AceType = ADS_ACETYPE_ACCESS_DENIED)) Then
'Zachowaj listę kont, którym odmówiono uprawnienia Pełny dostęp do skrzynki pocztowej, jako ogranicznika użyj wartości zmiennej OUTPUT_DELIMITER,
'uwzględnij uprawnienia dziedziczone i jawnie ustawione na poziomie skrzynki pocztowej
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("Nie można odczytać uprawnień tego użytkownika: " & sTAlias)
objfileError.WriteLine("Błąd: " & err.Description)
err.Clear
fError = True
fOneError = True
End If
Next
End If
End Function

Function IfFMAAllowed(sTrustee)
'Odnaleziono wpis kontroli dostępu z zezwoleniem na uprawnienie Pełny dostęp do skrzynki pocztowej. Załóż, że to prawda.
fFMAAllowed = True

If ( (0 <> Instr(sFMADeniedList, sTrustee)) And (0 = Instr(sFMAExplicitAllow, sTrustee))) Then
'Jeśli odnaleziono wpis kontroli dostępu z odmową, a uprawnienie Pełny dostęp do skrzynki pocztowej nie jest jawnie dozwolone
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("Nie można utworzyć pliku eksportu lub pliku błędów: " & err.Description)
objfileError.WriteLine("Nie można utworzyć pliku eksportu lub pliku błędów: " & err.Description)
fError = True
fOneError = True
WScript.Quit
End If

End Function

Function DisplaySyntax
WScript.StdOut.WriteLine("Składnia:")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Eksportowanie kont mających uprawnienie Pełny dostęp do skrzynki pocztowej, które nie mają uprawnienia Wyślij jako:")
WScript.StdOut.WriteLine(" CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Export")
WScript.StdOut.WriteLine(" UWAGA: Lista zostanie zapisana w pliku Wyślij_jako_eksport_GG_MM_SS.txt")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Udzielanie uprawnienia Wyślij jako wszystkim kontom wymienionym w pliku eksportu:")
WScript.StdOut.WriteLine(" CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Import ""nazwa_pliku.txt""")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Udzielanie uprawnienia Wyślij jako wszystkim kontom w domenie, które mają uprawnienie Pełny dostęp do skrzynki pocztowej:")
WScript.StdOut.WriteLine(" CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -SetAll")
WScript.StdOut.WriteLine(" UWAGA: Konta zostaną wymienione w pliku Wyślij_jako_eksport_GG_MM_SS.txt")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("W każdym trybie błędy będą zapisywane w pliku Wyślij_Jako_Błędy_GG_MM_SS.txt.")

WScript.Quit
End Function
KONIEC SKRYPTU

Firma Microsoft podaje przykłady programowania tylko dla celów ilustracyjnych, nie udzielając żadnej rękojmi, wyrażonej wprost lub domyślnie, w tym także, bez ograniczeń, ustawowej rękojmi co do przydatności handlowej lub do określonych celów. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy Pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnej funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika.

Aby uzyskać dodatkowe informacje dotyczące opcji pomocy technicznej dostępnych w firmie Microsoft, odwiedź następującą witrynę firmy Microsoft w sieci Web: Produkty omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, domyślnych ani żadnego innego rodzaju, odnośnie do wydajności lub niezawodności tych produktów.
Właściwości

Identyfikator artykułu: 912918 — ostatni przegląd: 09.06.2009 — zmiana: 1

Opinia