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

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 912918 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

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 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:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=9174704&sliceId=&dialogID=11024244&stateId=1 0 11020632
Jeśli używasz serwera BlackBerry Enterprise Server 3.6, odwiedź następującą witrynę firmy BlackBerry w sieci Web:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=KB04334&sliceId=SAL_Public&dialogID=11016727&stateId=1 0 11020358

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:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=KB04707&sliceId=SAL_Public&dialogID=3016166&stateId=0%200%202441763

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:
http://support.microsoft.com/default.aspx?scid=fh;PL;CNTACTMS
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

Numer ID artykułu: 912918 - Ostatnia weryfikacja: 26 listopada 2007 - Weryfikacja: 17.2
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange Server 2003 Enterprise Edition
Słowa kluczowe: 
kbtshoot kbpending kbbug kbprb KB912918

Przekaż opinię

 

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