Uživatelé nemohou odesílat e-maily z mobilního zařízení nebo ze sdílené poštovní schránky na serveru Exchange Server 2000 a Exchange Server 2003

Překlady článku Překlady článku
ID článku: 912918 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Při pokusu o odeslání e-mailu ze serveru Microsoft Exchange 2000 Server nebo Microsoft Exchange Server 2003 se odeslání zprávy nezdaří. Navíc se může zobrazit jedna z následujících chybových zpráv nebo zpráv o nedoručitelnosti.

Chybové zprávy:

  • Přístup byl odepřen.
  • K provedení operace s tímto objektem nemáte dostatečné oprávnění. Obraťte se na vlastníka složky nebo na správce.
  • Unlisted Message Error (Chyba neuvedené zprávy)
  • MAPI_E_NO_ACCESS -2147024891
  • Došlo k chybě při odesílání zprávy uživatele USERNAME (HRESULT:-2147024891) Odesílání uživatele USERNAME bude pozastaveno. (Chyba zabezpečení – Není možné získat přístup k poštovní schránce uživatele.)
  • Resource Not Found (Prostředek nebyl nalezen.)
Poznámka: Pokud jste se přihlásili z účtu delegáta, zobrazí aplikace Outlook Web Access (OWA) chybovou zprávu Přístup odepřen (Access denied) nebo Prostředek nebyl nalezen (Resource Not Found).

Zprávy o nedoručitelnosti:

  • Nemáte oprávnění odesílat zprávy tomuto příjemci. Obraťte se na správce systému.
  • Zprávu nelze pomocí vaší poštovní schránky odeslat. Nemáte oprávnění odesílat zprávy za zadaného uživatele.
Tento problém ovlivňuje chování následujících produktů jiných společností:
  • BlackBerry Enterprise Server (BES) společnosti Research In Motion (RIM),
  • Mobilní zasílání zpráv GoodLink společnosti Good Technology.
Tento problém neovlivňuje chování následujících produktů jiných výrobců.
  • Jednotné zasílání zpráv Cisco Unity Unified Messaging,
  • Sada Migration Suite pro Exchange Server společnosti Quest,
  • Nástroj ExMerge společnosti Microsoft pro Exchange Server.
Problém také může ovlivnit některé programy, které odesílají e-maily a které jsou založené na vlastních rozhraních MAPI nebo objektech CDO (Collaborative Data Objects).

Může také dojít k ovlivnění dalších produktů jiných společností, které odesílají e-maily pomocí účtů služeb. Pokud používáte produkty jiných společností, které jsou tímto problémem ovlivněny, doporučujeme obrátit se na dodavatele se žádostí o pomoc při řešení tohoto problému. Další informace naleznete v části Další informace.

Důležité: Chcete-li nouzově obnovit funkci Odeslat jako pro důležité podnikové aplikace, můžete udělit účtu služby oprávnění Odeslat jako prostřednictvím dědičnosti v rámci kontejneru služby Active Directory nebo v rámci celé domény. Podrobné pokyny pro tento postup naleznete v části . Přestože se jedná o účinný způsob okamžitého řešení problému, měli byste zvážit rizika, která se týkají bezpečnosti a správy. Oprávnění Odeslat jako můžete udělit účtům, kterým jste je nechtěli udělit, a budete muset dbát na nastavení správných oprávnění při přesunu uživatelských účtů do jiného kontejneru.

Příčina

K tomuto problému může dojít, pokud platí jedna z následujících podmínek:
  • Váš účet poštovní schránky nemá dostatečná oprávnění, abyste mohli odesílat e-maily jako vlastník poštovní schránky.
  • Používáte aktualizaci Microsoft Exchange 2000 Server Service Pack 3 (SP3) se souborem Store.exe, jehož číslo verze je vyšší nebo rovno 6619.4. Verze 6619.4 byla poprvé zpřístupněna v následujícím článku znalostní báze Microsoft Knowledge Base:
    915358 K dispozici je oprava hotfix, která změní chování oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) v serveru Exchange 2000 Server.
  • Používáte aktualizaci Microsoft Exchange Server 2003 Service Pack 1 (SP1) se souborem Store.exe, jehož číslo verze je vyšší nebo rovno 7233.51. Verze 7233.51 byla poprvé zpřístupněna v následujícím článku znalostní báze Microsoft Knowledge Base:
    895949 Změna chování oprávnění Odeslat jako v serveru Exchange 2003
    Tato oprava není součástí aktualizace Microsoft Exchange 2003 Service Pack 2 (SP2). Pokud jste nainstalovali verzi této opravy hotfix pro Exchange Server 2003 SP1, musíte po upgradu na aktualizaci Service Pack 2 nainstalovat verzi opravy Service Pack 2.
  • Používáte Exchange Server 2003 SP2 se souborem Store.exe, jehož číslo verze je vyšší nebo rovno 7650.23. Verze 7650.23 byla poprvé zpřístupněna v následujícím článku znalostní báze Microsoft Knowledge Base:
    895949 Změna chování oprávnění Odeslat jako v serveru Exchange 2003
    Poznámka: Tato změna nebyla obsažena v aktualizacích Exchange 2000 Server SP3, Exchange Server 2003 SP1 ani Exchange 2003 SP2. Změna byla implementována až po vydání všech těchto aktualizací Service Pack. Podpora změny je však obsažena v každé z nich. Změna bude zahrnuta v následujících aktualizacích Service Pack pro tyto produkty.

    Abyste zachovali nové chování, musíte po instalaci aktualizace Exchange Server 2003 SP2 nainstalovat další aktualizaci. Musíte tak učinit i v případě, že jste již nainstalovali verzi aktualizace pro Exchange Server 2003 SP1.

Řešení

U souborů Store.exe, jejich číslo verze je nižší než čísla verzí uvedená v části Příčina, bylo udělením oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) povoleno odesílat poštu za vlastníka poštovní schránky. To znamenalo, že pomocí jiného účtu s oprávněním Full Mailbox Access (Úplný přístup k poštovní schránce) bylo možné odesílat e-maily, které vypadaly stejně, jako by byly odeslány vlastníkem poštovní schránky.

Mnoho zákazníků, kteří používají server Microsoft Exchange, požadovalo oddělení oprávnění Odeslat jako od oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) z následujících dvou důvodů:
  • odradit e-mailové podvodníky,
  • zajistit jasné rozlišení zpráv odeslaných delegátem od zpráv, které byly odeslány skutečným vlastníkem poštovní schránky.
Nové verze služby Exchange Information Store vyžadují k odeslání e-mailů jménem vlastníka poštovní schránky udělené oprávnění Odeslat jako. S tímto požadavkem však souvisí následující tři výjimky:
  • Účet vlastníka poštovní schránky nevyžaduje pro svou poštovní schránku explicitní udělení oprávnění Odeslat jako.
  • Oprávnění poštovní schránky Associated External Account (Přidružený externí účet) nevyžaduje explicitní udělení oprávnění Odeslat jako.
  • Účet delegáta s oprávněním Full Mailbox Access (Úplný přístup k poštovní schránce) nevyžaduje explicitní nastavení oprávnění Odeslat jako.
Další informace o těchto výjimkách získáte v části Další informace.

Aby vlastník schránky mohl odesílat e-maily, musejí mít všechny ostatní účty s částečným nebo úplným přístupem k poštovní schránce pro tohoto vlastníka poštovní schránky explicitně uděleno oprávnění Odeslat jako. Toto se také týká například účtů služeb aplikace, které zasílají e-maily uživatelům mobilních zařízení.

Účty služby musejí mít uděleno oprávnění Odeslat jako pro všechny uživatelské objekty, které jsou vlastníky poštovní schránky. Nastavením oprávnění Odeslat jako pro server Exchange nebo pro objekt databáze není možné dosáhnout udělení oprávnění Odeslat jako všem poštovním schránkám v databázi.

Toto chování je způsobeno tím, že oprávnění Odeslat jako je oprávněním služby Active Directory, které se uplatní pro objekty služby Active Directory, pro které je nastaveno. Pokud udělíte oprávnění Odeslat jako databázi Exchange, udělíte tím oprávnění Odeslat jako samotné databázi. Neudělí vám však oprávnění k uživatelům s oprávněním Odeslat jako, kteří mají v databázi uložené poštovní schránky.

Poznámka: Můžete udělit oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) všem poštovním schránkám v databázi tak, že databázi Exchange udělíte oprávnění Receive As (Přijmout jako). Toto chování se liší od chování oprávnění Odeslat jako.

Oprávnění Odeslat jako se uplatní pouze na samotný objekt databáze. Neuplatní se na poštovní schránky obsažené v databázi. Oprávnění Receive As (Přijmout jako) se tedy dědí pro všechny poštovní schránky, které jsou obsaženy v databázi.

Pro získání lepší představy rozdílu mezi oprávněními si poštovní schránky v databázi můžete představit jako složky v jedné poštovní schránce (poštovní schránce databáze). Pokud máte udělen úplný přístup k databázi, potom máte povolení přistupovat k celému obsahu databáze. Včetně všech poštovních schránek.

Oprávnění Odeslat jako se uplatní na uživatelský objekt služby Active Directory, nikoli na obsah poštovních schránek, který je uložen v databázi. Odesílané e-maily nejsou odesílány z určité poštovní schránky nebo databáze. Jsou odesílány za uživatele. Takovým uživatelem může být vlastník poštovní schránky nebo jakýkoli jiný účet, který má uděleno oprávnění Odeslat jako.

Následující kroky popisují postup explicitního udělení oprávnění Odeslat jako jiným účtům:
  1. Spusťte konzolu správy modulu snap-in Uživatelé a počítače služby Active Directory.
  2. Zkontrolujte, zda je v nabídce View (Zobrazit) vybrána možnost Advanced Features (Upřesňující funkce). Pokud tato možnost není vybrána, nebude stránka Security (Zabezpečení) viditelná pro objekty uživatelského účtu.
  3. Zobrazte vlastnosti uživatelského účtu vlastníka poštovní schránky.
  4. Klepněte na kartu Security (Zabezpečení).
  5. Pokud není účet uveden v seznamu skupin nebo uživatelských jmen, přidejte do seznamu účet uživatele, který by měl mít povoleno oprávnění Odeslat jako.
  6. V poli Permissions (Oprávnění) klepněte na tlačítko Allow for the "Send As" (Povolit oprávnění Odeslat jako) příslušného účtu.
  7. Klepněte na tlačítko OK.
  8. Restartujte službu Úložiště informací serveru Exchange na tomto serveru Exchange.
Poznámka: Pokud nerestartujete službu Úložiště informací serveru Microsoft Exchange, aktualizuje tato služba svoji mezipaměť oprávnění tak, aby se změny oprávnění projevily, podle hodnoty následujícího podklíče registru:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem


Název hodnoty: Mailbox Cache Age Limit
Typ hodnoty: REG_DWORD
Číselná soustava: Desítková
Údaj hodnoty: Limit stáří mezipaměti poštovní schránky v minutách.
Výchozí hodnota pro tuto položku registru je 120 minut (dvě hodiny). Pokud změníte hodnotu této položky registru, bude třeba službu Úložiště informací serveru Exchange restartovat.

Poznámka: Pokud změníte časový limit na příliš nízkou hodnotu, může to mít dopad na výkonnost serveru.

Nastavení oprávnění Odeslat jako pro více účtů

Na konci tohoto článku je uveden vzorový skript, který v doméně adresářové služby Active Directory vyhledá účty, které mají pro poštovní schránku uděleno oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce), ale nemají uděleno oprávnění Odeslat jako. Jedná se o charakteristické znaky účtu služby nebo prostředku, kterého se tato změna zabezpečení týká. Skript může vytvořit soubor exportu, který lze prohlížet, upravit a poté zpět importovat a udělit tak oprávnění Odeslat jako účtům, které toto oprávnění vyžadují.

Každému objektu domény služby Active Directory nebo objektu v kontejneru můžete udělit povolení Odeslat jako prostřednictvím dědičnosti. Tímto způsobem byste mohli oprávnění Odeslat jako udělit i nežádoucím objektům. Navíc můžete přijít o nastavení oprávnění objektů, které byly z kontejneru vyjmuty. Proto tuto metodu nedoporučujeme a před jejím nasazením byste měli důkladně zvážit všechna bezpečnostní rizika.

Následující kroky popisují nastavení oprávnění Odeslat jako pro jeden účet na všech uživatelských účtech domény služby Active Directory nebo kontejneru:
  1. Spusťte konzolu správy modulu snap-in Uživatelé a počítače služby Active Directory.
  2. Zkontrolujte, zda je v nabídce View (Zobrazit) vybrána možnost Advanced Features (Upřesňující funkce). Pokud tato možnost není vybrána, nebude stránka Security (Zabezpečení) viditelná pro objekty domény ani kontejneru.
  3. Zobrazte vlastnosti domény nebo kontejneru a potom klepněte na stránku Security (Zabezpečení).
  4. Klepněte na tlačítko Advanced (Upřesnit).
  5. Pokud není požadovaný účet uveden v seznamu, klepněte na tlačítko Add (Přidat) a potom vyberte účet. V opačném případě poklepejte na účet a upravte jej.
  6. V seznamu Applies Onto (Použít pro) klepněte na položku User Objects (Uživatelské objekty).
  7. Udělte účtu oprávnění Odeslat jako.
  8. Uložte všechny změny a ukončete dialogová okna klepnutím na tlačítko OK.
Poznámka: Skript, který je popsán na konci tohoto článku, pracuje s děděnými oprávněními. Udělíte-li tedy oprávnění Odeslat jako touto metodou, účty se zděděným oprávněním Odeslat jako se stanou pro tento skript neviditelnými. Abyste mohli tyto účty později zpracovávat pomocí uvedeného skriptu, musíte nejprve odstranit zděděná oprávnění Odeslat jako.

Zvláštní pravidla pro účty chráněné objektem adminSDHolder:

Pokud pomocí skriptu udělíte oprávnění Odeslat jako vlastníku poštovní schránky, který je zároveň správcem domény, oprávnění Odeslat jako nebude nastaveno. Nedoporučujeme povolovat poštovní schránky uživatelským účtům s právy správce domény nebo uživatelským účtům, které jsou chráněny objektem adminSDHolder.

Objekt adminSDHolder je šablonou účtů s rozšířenými právy pro správu služby Active Directory. Abyste zamezili nechtěnému zvýšení úrovně oprávnění, musí mít všechny účty chráněné objektem adminSDHolder nastavena pouze taková přístupová práva, která jsou uvedena v objektu adminSDHolder samotném.

Pokud změníte práva nebo oprávnění objektu adminSDHolder chráněného účtu, úloha spuštěná na pozadí tyto změny v průběhu několika minut vrátí zpět. Pokud například udělíte oprávnění Odeslat jako objektu správce domény pro účet služby aplikace, úloha na pozadí toto oprávnění automaticky odvolá.

Nemůžete tedy udělit oprávnění Odeslat jako účtu služby aplikace, který je chráněn objektem adminSDHolder, dokud nezměníte samotný objekt adminSDHolder. Pokud však změníte objekt adminSDHolder, dojde také ke změně přístupových oprávnění všech chráněných účtů. Změna objektu adminSDHolder by měla být prováděna na základě důkladné analýzy bezpečnostních rizik této změny.

Postup pro přiřazení poštovní schránky účtu, který je chráněn objektem adminSDHolder, je popsán v následujících krocích:
  1. Spusťte konzolu správy modulu snap-in Uživatelé a počítače služby Active Directory.
  2. Zkontrolujte, zda je v nabídce View (Zobrazit) vybrána možnost Advanced Features (Upřesňující funkce). Pokud tato možnost není vybrána, nebude stránka Security (Zabezpečení) viditelná pro objekty uživatelského účtu.
  3. Vytvořte běžný uživatelský účet, který bude vlastníkem poštovní schránky.
  4. Přiřaďte běžnému uživatelskému účtu poštovní schránku na serveru Exchange.
  5. Zobrazte vlastnosti účtu nového vlastníka poštovní schránky.
  6. Udělte oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) chráněnému účtu správce. Použijte pole Exchange Advanced (Exchange – Rozšířené).
  7. Na stránce Security (Zabezpečení) udělte chráněnému účtu správce oprávnění Odeslat jako.
  8. Klepnutím na tlačítko OK zavřete okno s vlastnostmi objektu vlastníka poštovní schránky.
  9. Zakažte všechna přihlášení k účtu. Pravým tlačítkem klepněte na objekt účtu vlastníka poštovní schránky a poté na příkaz Disable Account (Zakázat účet).
Další informace o účtech chráněných objektem adminSDHolder naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
907434 Oprávnění Odeslat jako je odebráno uživatelskému objektu po konfiguraci oprávnění Odeslat jako pomocí modulu snap-in Uživatelé a počítače služby Active Directory serveru Exchange Server (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
318180 Objekt adminSDHolder ovlivňuje tranzitivní členy distribučních skupin (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
817433 Delegovaná oprávnění nejsou k dispozici a dědění je automaticky zakázáno (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)
306398 Objekt adminSDHolder ovlivňuje delegování správy pro bývalé účty správce (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Speciální úlohy pro server BlackBerry Enterprise Server

Úloha 1: Přesvědčte se, zda server BlackBerry Enterprise Server je spuštěn jako samostatný jedinečný účet

Ujistěte se, že server BlackBerry Enterprise Server je spuštěn jako samostatný účet, který je přesně vytvořen pro úlohy správy. Ve výchozím nastavení má tento účet název BESAdmin.

Máte-li vytvořen samostatný účet pro správu serveru BlackBerry Enterprise Server, přejděte k úloze 2.

Nemáte-li vytvořen samostatný účet, vytvořte jej. Poté použijte tento účet k provádění úloh správy. Pokyny pro provádění těchto úloh naleznete na jednom z následujících webů společnosti BlackBerry podle používané verze serveru BlackBerry Enterprise Server.

Používáte-li server BlackBerry Enterprise Server 4.0 nebo BlackBerry Enterprise Server 4.1, navštivte následující web společnosti BlackBerry:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=9174704&sliceId=&dialogID=11024244&stateId=1 0 11020632
Pokud používáte server BlackBerry Enterprise Server 3.6, navštivte následující web společnosti BlackBerry:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=KB04334&sliceId=SAL_Public&dialogID=11016727&stateId=1 0 11020358

Úloha 2: Přesvědčte se, zda účet služby BlackBerry Enterprise Server má správná oprávnění

Zkontrolujte, zda účet služby BlackBerry Enterprise Server má správná oprávnění.

Poznámka: Je-li účet členem domény, ujistěte se, že je pouze členem skupiny Domain Users. Je třeba, aby v řadiči domény byl účet členem předdefinované skupiny Administrators.
  1. Na serveru BlackBerry Enterprise Server postupujte následujícím způsobem:
    1. Ujistěte se, že účet je členem skupiny místních správců.
    2. Přidělte účtu oprávnění pro místní přihlášení a oprávnění přihlásit se jako služba.
  2. Na úrovní skupiny pro správu přidělte oprávnění správce pouze ke čtení serveru Exchange. Postupujte takto:
    1. V nástroji Exchange System Manager klepněte pravým tlačítkem myši na název první skupiny pro správu serveru Exchange Server a poté klepněte na příkaz Delegovat řízení.
    2. Účet služby BlackBerry Enterprise Server je uveden jako vlastník role správce pouze ke čtení serveru Exchange.
  3. Udělte oprávnění na úrovni serveru Odeslat jako, Přijmout jako a Spravovat službu Information Store pro každý Exchange Server. Postupujte takto:
    1. V nástroji Exchange System Manager klepněte pravým tlačítkem myši na název první skupiny pro správu serveru Exchange Server a poté rozbalte skupinu serverů.
    2. Klepněte pravým tlačítkem myši na Exchange Server, klepněte na příkaz Vlastnosti a potom klepněte na příkaz Zabezpečení.
    3. V horním podokně vyberte účet služby BlackBerry Enterprise Server. Ujistěte se, že jsou oprávnění Odeslat jako, Přijmout jako a Spravovat službu Information Store v dolním podokně povolena.
    4. Zopakujte kroky 3b a 3c pro každý Exchange Server.
  4. Udělte oprávnění Odeslat jako, Přijmout jako a Spravovat službu Information Store pro úložiště poštovních schránek. Postupujte takto:
    1. V nástroji Exchange System Manager klepněte pravým tlačítkem myši na název první skupiny pro správu serveru Exchange a poté rozbalte skupinu serverů.
    2. Rozbalte každou skupinu úložiště poštovních schránek, klepněte pravým tlačítkem myši na každé úložiště, klepněte na příkaz Vlastnosti a potom klepněte na příkaz Zabezpečení.
    3. V horním podokně vyberte účet služby BlackBerry Enterprise Server. Ujistěte se, že jsou oprávnění Odeslat jako, Přijmout jako a Spravovat službu Information Store v dolním podokně povolena.
    4. Zopakujte kroky 4b a 4c pro každé úložiště poštovních schránek na každém serveru Exchange Server.
  5. V modulu snap-in Uživatelé a počítače služby Active Directory postupujte takto:
    1. Pravým tlačítkem myši klepněte na uživatele, kterému chcete přidat oprávnění, a klepněte na příkaz Vlastnosti.
    2. Na kartě Zabezpečení přidejte účet služby BlackBerry Enterprise Server a klepnutím zaškrtněte políčko Odeslat jako.
Nepoužíváte-li Exchange Server 2003, přejděte k úloze 3.

Úloha 3: Vymazání mezipaměti na serveru BlackBerry Enterprise Server

Chcete-li vymazat mezipaměť oprávnění úložiště informací, restartuje služby související se serverem Blackberry a restartuje službu Úložiště informací serveru Microsoft Exchange. Po restartování úložiště informací je třeba restartovat služby související se serverem RIM Blackberry, aby účet BESAdmin získal nově přidané oprávnění Odeslat jako pro službu Úložiště informací serveru Microsoft Exchange.

Další informace o konkrétních požadavcích serveru Blackberry naleznete na následujícím webu BlackBerry:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=KB04707&sliceId=SAL_Public&dialogID=3016166&stateId=0%200%202441763

Další informace

Oprávnění pro přístup k poštovní schránce serveru Exchange a oprávnění pro přístup ke složce jsou uložena odděleně v databázích služby Active Directory a Microsoft Exchange. Přestože se oba typy oprávnění nastavují v konzole správy uživatelů služby Active Directory, jsou tato různá oprávnění uložena ve dvou odlišných umístěních.

Obecně platí, že pokud je oprávnění objektu nastaveno na stránce Security (Zabezpečení), potom se jedná o oprávnění služby Active Directory. Pokud je nastaveno na stránce Exchange Advanced Mailbox Rights (Exchange – Rozšířená práva poštovní schránky), jedná se o oprávnění databáze serveru Exchange. Proto se v případě, že není uživatelská databáze k dispozici, zobrazí při pokusu o přístup ke stránce Mailbox Rights (Práva poštovní schránky) následující chybová zpráva:
The Microsoft Information Store service is unavailable. (Služba Microsoft Information Store není k dispozici.)
Oprávnění Associated External Account (Přidružený externí účet) je výjimkou pravidla, že oprávnění nastavená na stránce Exchange Advanced Mailbox Rights (Exchange – Rozšířená práva poštovní schránky) jsou uložena v databázi serveru Exchange. Oprávnění Associated External Account (Přidružený externí účet) není skutečným oprávněním, je spíše atributem msExchMasterAccountSID služby Active Directory. Přestože atribut msExchMasterAccountSID není oprávněním, řídí způsob práce jiných oprávnění. Další informace o atributu msExchMasterAccountSID naleznete v části Přidružené externí účty.

Poznámka: Atribut msExchMailboxSecurityDescriptor služby Active Directory je záložní kopií podmnožiny účinných práv poštovní schránky. Je určen pro vnitřní použití serverem Exchange. Pokud správci přidělují práva pomocí podporovaných rozhraní, je navíc atribut msExchMailboxSecurityDescriptor aktualizován, aby byl v souladu s aktuálními účinnými právy.

Je-li však atribut msExchMailboxSecurityDescriptor upravován správcem přímo, nebudou změny předány do úložiště serveru Exchange a nedojde k uplatnění změn. Není možné zaručit, že budou synchronizovány s platnými právy poštovní schránky. Ke čtení a zápisu práv poštovní schránky byste neměli používat atribut msExchMailboxSecurityDescriptor.

Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
310866 Nastavení práv poštovní schránky na serveru Exchange Server 2003 a Exchange 2000 Server, která se nachází v úložišti informací (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) je oprávněním úložiště databáze serveru Exchange. Oprávnění Odeslat jako je oprávněním služby Active Directory. Pokud měl odesílatel před vydáním nové verze souboru Store.exe serveru Exchange se změnami, které jsou popsány v tomto článku, nastaveno oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce), systém Exchange již nekontroloval oprávnění Odeslat jako.

Poznámka: Můžete udělit oprávnění Odeslat jako, aniž by bylo nutné udělit oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce). V takových případech server Exchange vždy kontroloval oprávnění Odeslat jako.

Nastavení oprávnění Odeslat jako spolu s oprávněním Full Mailbox Access (Úplný přístup k poštovní schránce) umožnilo správcům serveru Exchange přisvojit si efektivní oprávnění Odeslat jako pro libovolnou poštovní schránku na jimi spravovaném serveru. Tuto akci mohl správce provést, protože měl úplný přístup ke správě databáze serveru Exchange. Po oddělení oprávnění Odeslat jako od oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) mohou správci služby Active Directory tento proces blokovat, protože oprávnění Odeslat jako je oprávněním služby Active Directory, nikoli oprávněním úložiště serveru Exchange. Proces tedy nemusí být nezbytně řízen správci serveru Exchange.

Vlastníci poštovní schránky

Vlastník poštovní schránky je definován jako uživatelský účet služby Active Directory, jehož atribut msExchMailboxGUID obsahuje identifikátor GUID (Globally Unique numeric IDentifier) určité poštovní schránky. Identifikátor GUID určité poštovní schránky může obsahovat pouze jediný účet z celé struktury. Pokud se pokusíte použít stejný identifikátor GUID pro druhého vlastníka, služba Active Directory změnu odmítne a zobrazí chybovou zprávu.

Pokud pro účet povolíte poštovní schránku, anebo připojíte odpojenou poštovní schránku k účtu služby Active Directory, bude tomuto účtu automaticky nastaven identifikátor GUID. Není obvyklé a správcům není doporučeno přímo nastavovat identifikátory GUID poštovní schránky.

Přidružené externí účty

Instalace serveru Exchange ve struktuře prostředků je běžnou konfigurací serveru Exchange. Struktura prostředků je strukturou, která se nachází v jiné struktuře uživatelských účtů, které v systému budou mít poštovní schránky. Jedná se o problém, protože atribut msExchMailboxGUID je možné nastavit pouze objektům, které se nacházejí ve stejné struktuře jako server Exchange.

Řešení tohoto problému spočívá v povolení poštovní schránky účtu ve struktuře serveru Exchange. Následně tento účet propojíte k účtu v jiné struktuře nebo v doméně systému Microsoft Windows NT 4. To můžete provést udělením oprávnění Associated External Account (Přidružený externí účet). Oprávnění Associated External Account (Přidružený externí účet) je možné udělit pouze samostatnému účtu. Zvolený účet se musí nacházet v jiné struktuře.

Pokud nastavíte oprávnění Associated External Account (Přidružený externí účet), do atributu msExchMasterAccountSID vlastníka poštovní schránky se zapíše hodnota SID externího účtu. Nejedná se v žádném případě o oprávnění, ale o vhodný způsob řízení hodnoty atributu msExchMasterAccountSID. Po nastavení atributu msExchMasterAccountSID bude externímu účtu, který vlastní hodnotu SID, udělen přístup k serveru Exchange stejným způsobem, jako by se jednalo o účet opravdového vlastníka poštovní schránky.

Toto se týká pouze přístupů k serveru Exchange, nikoli všech přístupů k službě Active Directory. Po nastavení oprávnění Associated External Account (Přidružený externí účet) je navíc vhodné zakázat přihlašování k účtu vlastníka poštovní schránky. Všechna oprávnění se tak budou chovat podle očekávání.
300456 Oprávnění a delegování klientů nepřetrvají po přiřazení k serveru Exchange Server 2000 (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Scénáře delegování

Delegát je uživatel, kterému byl udělen částečný přístup k jiné poštovní schránce a právo zasílat e-maily za vlastníka této poštovní schránky. Obvyklým scénářem delegování je udělení delegovaného přístupu administrativnímu pracovníkovi ke kalendáři nadřízeného. Běžnou činností delegáta je čtení a aktualizace kalendáře. Delegát může navíc odpovídat na e-maily za svého nadřízeného.

Delegovaný přístup je udělen přidáním delegáta do vícehodnotového atributu publicDelegates vlastníka poštovní schránky. Všichni uživatelé, kteří jsou uvedeni v tomto atributu, mají uděleno oprávnění Send on Behalf Of (Posílat v zastoupení jiné osoby) vlastníka poštovní schránky. Pokud tento delegát odešle e-mail se jménem vlastníka v poli Od, zobrazí se v boxu Od e-mailu následující hodnota:
<Jméno delegáta> za uživatele <Vlastník poštovní schránky>
Zpráva je však odeslána delegátem, nikoli vlastníkem poštovní schránky ani prostřednictvím poštovní schránky vlastníka.

Následující dvě rozhraní můžete použít k udělení oprávnění Send on Behalf Of (Posílat v zastoupení jiné osoby) a oprávnění delegáta:
  • Oprávnění Posílat v zastoupení jiné osoby můžete udělit pomocí objektu vlastníka poštovní schránky v dialogovém okně Exchange – Obecné.
  • V aplikaci Microsoft Outlook použijte dialogové okno Delegáti.
Obě uvedené metody nastavují atribut publicDelegates. Pokud použijete aplikaci Microsoft Outlook, můžete navíc udělit delegátovi oprávnění zvláštní složky. Oprávnění můžete delegátovi udělit přímo z vlastností složky aplikace Microsoft Outlook.

V některých případech nebude v aplikaci Outlook možné nastavit atribut publicDelegates.
329622 V aplikaci Outlook není po delegování přístupu uživateli uděleno oprávnění Send On Behalf (Posílat v zastoupení jiné osoby) (Tento článek může obsahovat odkazy na anglický obsah (dosud nepřeložený).)

Pokud delegátovi udělíte přístup ke své schránce, bude delegát moci použít oprávnění Posílat v zastoupení jiné osoby i v případě, že jste mu neudělili přístup k žádné složce své poštovní schránky. Oprávnění Send On Behalf Of (Posílat v zastoupení jiné osoby) je základním oprávněním delegáta. Oprávnění pro přístup ke složkám vaší poštovní schránky jsou oddělená a musíte je udělit navíc k oprávněním delegování.

Delegáti většinou přistupují k jednotlivým složkám, ke kterým jim bylo uděleno oprávnění, pomocí aplikace Microsoft Outlook. Toto můžete provést následovně. V nabídce Soubor aplikace Microsoft Outlook klepněte na příkaz Otevřít a klepněte na položku Složka jiného uživatele.

Alternativně mohou delegáti vaší schránku otevřít, když schránku v profilech aplikace Outlook na kartě Upřesnit uvedou jako další poštovní schránku. Tato metoda způsobí uvedení vaší poštovní schránky ve stromu složek delegáta aplikace Outlook. Tato metoda navíc povoluje přístup ke všem složkám poštovní schránky, ke kterým má delegát udělena oprávnění.

Někdy může být vhodné udělit delegátovi oprávnění Send on Behalf of (Posílat v zastoupení jiné osoby), jindy zase oprávnění Odeslat jako. Následující kroky popisují konfiguraci delegáta s oběma oprávněními:
  • Udělte delegátovi oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce). Toto není možné provést pomocí aplikace Outlook. Musí to být provedeno správcem služby Active Directory na účtu vlastníka poštovní schránky. I v případě, že udělíte oprávnění Owner (Vlastník) každé složce ve své poštovní schránce, není to stejné, jako nastavení oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce).
  • Neudělujte delegátovi oprávnění Odeslat jako. Pokud delegátovi udělíte oprávnění Odeslat jako, všechny e-maily odeslané delegátem budou odeslány s využitím oprávnění Odeslat jako. Delegát již nebude moci použít oprávnění Posílat v zastoupení jiné osoby.
V tomto scénáři by se měli delegáti, kteří chtějí použít oprávnění Send on Behalf Of (Posílat v zastoupení jiné osoby), přihlásit ke svým vlastním poštovním schránkám. Pokud delegáti posílají odpověď nebo předávají dál e-mail, který se již nachází v některé z vašich složek, bude e-mail automaticky odeslán za vás. Pokud za vás delegát vytvoří nový e-mail, musí vaše jméno uvést v poli Od. Jinak za vás nebude e-mail odeslán.

Dokud je vlastní poštovní schránka delegátů nastavena jako primární poštovní schránka aktuálního profilu aplikace Outlook, budou všechny odeslané e-maily používat oprávnění Posílat v zastoupení jiné osoby nezávisle na tom, zda otevřeli své složky nebo nastavili celou poštovní schránku jako svou sekundární poštovní schránku.

Pokud chce delegát odeslat e-mail za vás, měl by se přihlásit k vaší poštovní schránce pomocí samostatného profilu aplikace Outlook, který otevře pouze vaší poštovní schránku. Pokud budou delegáti přihlášeni k takovému profilu, všechny odeslané e-maily budou automaticky odeslány za vás.

Vyhledání účtů s oprávněním Full Mailbox Access (Úplný přístup k poštovní schránce) a bez oprávnění Odeslat jako

Vzorový skript, který je v této části popisován, může najednou prohledat jednu doménu služby Active Directory a vyhledat uživatelské účty, které mají uděleno oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) a nemají uděleno oprávnění Odeslat jako.

Důležité: Před změnou oprávnění si prostudujte část Vlastníci poštovní schránky s delegáty.

Skript je možné použít v následujících třech režimech:
  • Export: Můžete vypsat seznam uživatelů, kteří mají oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce), ale nemají oprávnění Odeslat jako. Výsledný seznam můžete prohlížet v programu Poznámkový blok nebo v jiném editoru a odstranit účty, kterým nechcete udělit oprávnění Odeslat jako.
  • Import: Můžete provést import seznamu uživatelů, kteří mají oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) a kterým má být navíc uděleno oprávnění Odeslat jako. Tento skript není možné použít k udělení obou oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) a Odeslat jako. Aby mohlo být účtu uděleno oprávnění Odeslat jako, musí již mít oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce).
  • SetAll: Můžete udělit oprávnění Odeslat jako všem uživatelům v doméně, kteří již mají pro příslušnou poštovní schránku uděleno oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce). Bude vytvořen soubor protokolu ve stejném formátu, jako je formát souboru exportu. Tento režim odpovídá spuštění skriptu v režimu Export a následnému importu bez jakékoli úpravy souboru exportu.
Poznámka: Tento skript neobsahuje žádnou funkci, která by umožňovala vrátit zpět provedené změny.

Vyžadovaná oprávnění skriptu

Aby bylo možno skript spustit, musíte být přihlášeni k účtu správce ve stejné struktuře, ve které se nacházejí účty vlastníků poštovní schránky. Skript nemusí správně pracovat s účtem, který má oprávnění správce přesahující hranici struktury. Skript nemusí fungovat, pokud jej spustíte v pracovní stanici, která je připojena k jiné doménové struktuře než ke struktuře, ke které jsou připojeny účty vlastníků poštovní schránky.

Za těchto podmínek můžete skript spustit s více účty správce v jediné relaci. Použijte příkaz RunAs.exe. Tento postup je užitečný v případě, že jsou oprávnění služby Active Directory a serveru Exchange Server segmentována a nemáte k dispozici žádný účet, který dovoluje spravovat všechny servery Exchange nebo všechny domény služby Active Directory. Pomocí příkazového řádku můžete skript spustit s každým účtem správce. Příklad:
RunAs.exe /uživatel:doména\účet CMD.EXE
Poznámka: Nespouštějte najednou více kopií skriptu pro stejnou doménu.

Soubor exportu obsahuje následující pole. Jednotlivá pole jsou popisována v pořadí, ve kterém jsou uvedena v souboru exportu.
  • Pole Display Name (Zobrazovaný název) účtu vlastníka poštovní schránky

    Může obsahovat více řádků výstupu pro jednoho vlastníka poštovní schránky. Toto chování nastane v případě, že ke stejné poštovní schránce má několik různých účtu oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce).
  • Doména a přihlašovací jméno účtu, který má uděleno oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce), ale nemá uděleno oprávnění Odeslat jako

    Pokud má účet přístup k několika poštovním schránkám, může se v souboru exportu vyskytnout vícekrát. Bude se zřejmě jednat o účet služby aplikace nebo osoby, která spravuje více prostředků poštovních schránek.
  • Pole Display Name (Zobrazované jméno) účtu, který má uděleno oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce), ale nemá uděleno oprávnění Odeslat jako

    Toto pole spolu s polem Logon Name (Přihlašovací jméno) zjednodušuje identifikaci účtu.
  • Pole Delegate Status (Stav delegáta) vlastníka poštovní schránky

    Pokud má vlastník poštovního účtu delegáty, v poli bude uvedena hodnota Has Delegates (Má delegáty). Pokud vlastník poštovního účtu nemá žádné delegáty, v poli bude uvedena hodnota No Delegates (Žádní delegáti).
  • Stav Enabled (Povoleno) nebo Disabled (Zakázáno) účtu vlastníka poštovní schránky

    Pomocí tohoto pole můžete identifikovat účty prostředku nebo účty poštovní schránky, které přesahují rámec struktury. Takové účty bývají většinou zakázány.
  • Pole Full Distinguished Name (Úplný rozlišující název) účtu vlastníka poštovní schránky

    Toto pole je užitečné při identifikaci domény a kontejneru účtu vlastníka poštovní schránky.
  • Pole Full Distinguished Name (Úplný rozlišující název) databáze vlastníka poštovní schránky

    Pole obsahuje název databáze, skupinu úložiště, název serveru a skupinu správce této poštovní schránky.
V následujícím příkladu má uživatel s přihlašovacím jménem NoSendAs pro poštovní schránku Mailbox Owner uděleno oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce), ale nemá uděleno oprávnění Odeslat jako:
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [další pole byla vynechána]

Konfigurace pracovní stanice správce pro skript

Tento skript komunikuje se servery Exchange pomocí rozhraní správy Exchange. Proto musí být skript spuštěn na serveru Exchange nebo v pracovní stanici s nainstalovaným programem Exchange System Administrator.

Úprava souboru exportu

Soubor exportu je uložen ve formátu prostého textu s kódováním Unicode. Může tak obsahovat znakové sady více jazyků. Některé textové editory mohou mít potíže při správném zobrazení nebo úpravě souboru nebo mohou soubor ukládat jako text s kódováním ANSI nebo ASCII. Program Poznámkový blok systému Microsoft Windows XP, Microsoft Windows 2000 a Microsoft Windows 2003 pracuje s textovými soubory s kódováním Unicode správně. Aplikace Microsoft Excel také pracuje správně s textovými soubory s kódováním Unicode.

Výstupem je soubor oddělený tabulátory s třemi uvozovkami okolo jednotlivých hodnot každého pole. Tři uvozovky jsou použity z důvodu deterministického chování importu a exportu z aplikace Microsoft Excel. V aplikaci Microsoft Excel se tři uvozovky změní na jednoduché. Zpět na tři se změní při uložení souboru ve formátu textového souboru s kódováním Unicode. Následující instrukce popisují správný postup otevření a uložení souboru exportu v aplikaci Excel.

Soubor exportu můžete také filtrovat bez použití aplikace Excel, a to pomocí nástrojů Find.exe nebo Findstr.exe. Tyto nástroje jsou zahrnuty v systému Windows. Slouží k vyhledávání slov v souboru. Výstupem budou pouze řádky, které obsahují zadaná slova, nebo naopak řádky, které zadaná slova neobsahují. Chcete-li například vytvořit seznam všech vlastníků poštovní schránky, kteří mají delegáty, můžete použít kterýkoli z následujících příkazů. Výsledkem bude soubor obsahující pouze řádky s řetězcem Has Delegates:
Find.exe "Has Delegates" PůvodníSoubor.txt > MáDelegáty.txt

Findstr.exe /C:"Has Delegates" PůvodníSoubor.txt > MáDelegáty.txt
Další příklad uvádí, jak vyfiltrovat všechny vlastníky poštovní schránky, kteří mají delegáty. Přepínač /V slouží k vypsání řádků, které neobsahují zadaná slova. Kterýmkoli z následujících příkazů můžete vytvořit soubor, který z původního souboru vyřadí všechny řádky, které obsahují řetězec Has Delegates:
Find.exe "No Delegates" PůvodníSoubor.txt > ŽádníDelegáti.txt

Find.exe /V "Has Delegates" PůvodníSoubor.txt > ŽádníDelegáti.txt

Findstr.exe /C:"No Delegates" PůvodníSoubor.txt > ŽádníDelegáti.txt

Findstr.exe /V /C:"Has Delegates" PůvodníSoubor.txt > ŽádníDelegáti.txt
Pomocí následujících příkazů můžete vytvořit soubor se seznamem účtů, ve kterých má účet služby aplikace oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce), ale nemá oprávnění Odeslat jako. Přepínač /I vypne rozlišování malých a velkých písmen:
Find.exe /I "doména\ÚčetSlužby" PůvodníSoubor.txt > ÚčetSlužby.txt

Findstr.exe /I /C:"doména\ÚčetSlužby" PůvodníSoubor.txt > ÚčetSlužby.txt
Poznámka: Pokud vytváříte filtrovaný soubor pomocí nástroje Find.exe, musíte odstranit řádky záhlaví, které nástroj Find.exe přidá na začátek souboru.

V nástroji Find.exe nepoužívejte názvy souborů se zástupnými znaky (*.*). Pokud použijete zástupné znaky, každý řádek souboru bude uveden názvem souboru. Po každém filtrování pomocí nástroje Find.exe a Findstr.exe důkladně zkontrolujte výstupní soubor, zda byly zahrnuty nebo vyjmuty požadované účty.

V následujícím příkladu má uživatel s přihlašovacím jménem NoSendAs pro poštovní schránku Mailbox Owner uděleno oprávnění Full Mailbox Access(Úplný přístup k poštovní schránce), ale nemá uděleno oprávnění Odeslat jako.
"""Mailbox Owner""" """Doména\NoSendAs""" """No Send As User (Uživatel nemá oprávnění Odeslat jako)""" """Has Delegates (Má delegáty)""" """Enabled (Povoleno)""" [další pole byla vynechána] 

Vlastníci poštovní schránky s delegáty

Delegát s oprávněním Full Mailbox Access (Úplný přístup k poštovní schránce), též označovaný jako superdelegát, by neměl mít uděleno oprávnění Odeslat jako. Jakmile se superdelegát přímo přihlásí k poštovní schránce vlastníka poštovní schránky, může odesílat poštu za vlastníka (oprávnění Odeslat jako). Pokud delegát používá funkce delegování aplikace Outlook (funkce Otevřít další poštovní schránky nebo Otevřít složku jiného uživatele), zprávy jsou odesílány v zastoupení jiné osoby (oprávnění On Behalf Of).

Oprávnění Odeslat jako udělte delegátovi pouze v případě, že chcete, aby pokaždé odesílal zprávy za vlastníka poštovní schránky (Odeslat jako) a nikdy je neodesílal v zastoupení (On Behalf Of). Doporučujeme vyhledat v souboru exportu řetězec Has Delegates (Má delegáty) a určit, zda uvedení superdelegáti nejsou vlastně delegáty vlastníka poštovní schránky.

V souboru exportu jsou uvedeni pouze superdelegáti. Běžní delegáti nemají oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce). Pokud navíc normálnímu delegátovi udělíte oprávnění Odeslat jako, bude pokaždé odesílat zprávy jako vlastník poštovní schránky (oprávnění Odeslat jako). To nastane i v případě, že normální delegát nemá oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce). Pokud nechtěně udělíte oprávnění Odeslat jako nějakému delegátovi, můžete oprávnění později odebrat.

Postup otevření souboru exportu v aplikaci Excel

  1. Nejprve spusťte aplikaci Excel.
  2. Otevřete soubor v aplikaci Excel. Vyberte formát souboru Textové soubory. Spustí se Průvodce importem textu.
  3. V průvodci Průvodce importem textu změňte nebo potvrďte následující nastavení:
    • Typ zdrojových dat: Oddělovač
    • Začátek importu na řádku: 1
    • Typ souboru: Kódování Unicode (UTF-8)
    • Oddělovače: Pouze Tabulátor
    • Posloupnost oddělovačů jako jeden: nezaškrtnuto
    • Textový kvalifikátor: " (uvozovky)

Uložení souboru exportu po úpravě v aplikaci Excel

  1. V souboru exportu klepněte na příkaz Uložit jako.
  2. Přejmenujte soubor, abyste zachovali neupravenou kopii původního souboru.
  3. V nabídce Soubor klepněte na příkaz Uložit jako a zadejte název cílového souboru. Potom vyberte v rozevíracím seznamu Typ souboru položku Text v kódu Unicode.

Syntaxe skriptu

Jedná se o skript pro textový režim, který by měl být spuštěn v okně Příkazového řádku, nikoli z dialogového okna Spustit. Chcete-li spustit Příkazový řádek, v nabídce Start klepněte na příkaz Spustit a do pole Otevřít zadejte příkaz CMD a potom klepněte na tlačítko OK.

Soubory protokolu chyb a exportu budou uloženy do aktuálního adresáře v příkazovém řádku. Musíte mít oprávnění pro vytváření souborů v tomto adresáři.
Nápovědu na příkazovém řádku zobrazíte následujícím příkazem:
CSCRIPT AddSendAs.vbs
Export uživatelů, kteří mají v doméně oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce), ale nemají oprávnění Odeslat jako, provedete zadáním následujícího příkazu:
CSCRIPT AddSendAs.vbs [název řadiče domény] –Export Příklad: CSCRIPT AddSendAs.vbs CORP-DC-1 –Export
Soubor exportu bude vytvořen s názvem „Send_As_Export_H_MM_SS.txt“.
Import upraveného souboru exportu provedete zadáním následujícího příkazu:
CSCRIPT AddSendAs.vbs [název řadiče domény] –Import [název souboru]


Příklad:


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

Udělení oprávnění Odeslat jako poštovním schránkám domény všem uživatelům, kteří již mají pro nějakou poštovní schránku uděleno oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce)

Poznámka: V případě delegátů, kteří mají v podniku také uděleno oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce), není vhodné používat režim SetAll. Pokud v takové situaci použijete režim SetAll, bude delegátům uděleno oprávnění Odeslat jako. Tím by mohly být všechny e-maily odesílány s použitím oprávnění Odeslat jako místo toho, aby bylo použito oprávnění Posílat v zastoupení jiné osoby. Toto chování můžete napravit odebráním oprávnění Odeslat jako, které bylo nechtěně uděleno delegátovi.
CSCRIPT AddSendAs.vbs [název řadiče domény] –SetAll


Příklad:


CSCRIPT AddSendAs.vbs CORP-DC-1 –SetAll
V režimu SetAll bude soubor exportu vytvořen s názvem Send_As_Export_H_MM_SS.txt. Tento soubor je vhodné uchovat, protože obsahuje záznam všech účtů, které byly změněny. Při dalším spuštění skriptu nebude vytvořen stejný seznam účtů, protože účtům již bylo uděleno oprávnění Odeslat jako.

Chyby, které nastaly při spuštění skriptu, budou uloženy v souboru s názvem Send_As_Errors_H_MM_SS.txt. Časové razítko souboru (hodiny, minuty a sekundy) v názvu souboru s chybovými zprávami bude shodné s razítkem příslušného souboru exportu.

Úpravy skriptu

Ve vaší organizaci mohou existovat účty s oprávněními pro větší počet objektů, ale tato oprávnění nechcete měnit. Chcete-li zmenšit soubor exportu, lze tyto účty odfiltrovat úpravou proměnné FMA_EXCLUSIVE_LIST, která se nachází v úvodní části skriptu. V této proměnné je ve výchozím nastavení uvedeno několik účtů, které mají být ve výstupu ze skriptu potlačeny. Další účty lze přidat v následujícím formátu:
& "<Doména\Název>" & OUTPUT_DELIMITER
Například lze změnit hodnotu následující proměnné:
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
takže se zobrazí takto:
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER & "TatoDoména\Služba1" & OUTPUT DELIMITER
Po této změně bude v exportním souboru kromě účtů NT AUTHORITY\SELF a NT AUTHORITY\SYSTEM potlačeno také zobrazování účtu TatoDoména\Služba1. U hodnoty Doména\Název jsou rozlišována malá a velká písmena. Musí být tedy zapsána přesně.

Výchozí hodnotou další nastavitelné proměnné, FMA_EXCLUSIVE_EXSVC, je \Exchange Services & OUTPUT_DELIMITER. Exchange Services je název účtu, který má v rámci scénářů pro migraci a koexistenci serverů Exchange 5.5 a Exchange 2000 uděleno oprávnění pomocí konektoru ADC (Active Directory Connector). Tento účet je vytvořen ve více doménách, takže pokud není potlačen, může se v souboru exportu zobrazit opakovaně.

Hodnotou proměnné FMA_EXCLUSIVE_EXSVC může být pouze jeden účet. V názvu účtu nejsou rozlišována malá a velká písmena. Zadaný účet musí začínat zpětným lomítkem (\) a neměl by obsahovat název domény, do které náleží. Účet bude potlačen u všech domén, do kterých náleží.

Pokud jste použili nástroje pro migraci nebo metody synchronizace adresáře jiných výrobců, může existovat jiný účet, který bude mít ve více doménách udělena rozsáhlá oprávnění pro uživatelské poštovní schránky. V takovém případě lze tento název účtu nastavit místo názvu \Exchange Services.

Tipy a upozornění

  • Nezahazujte soubory protokolu a chybových zpráv, které byly vytvořeny skriptem. Mohou posloužit při řešení potíží nebo při pozdějším navrácení provedených změn. Mějte na paměti, že jakmile udělíte účtům oprávnění Odeslat jako, již nebudou zahrnuty v souboru exportu.
  • Pokud jsou server nebo databáze Exchange vypnuty, provádění skriptu bude zpomaleno. V takovém případě můžete soubor exportu setřídit podle databáze a přemístit řádky nefungující databáze do jiného souboru a import provést později.
  • Skript potlačí výstup účtů, jejichž přihlašovací jméno končí znakem "$" nebo je NT AUTHORITY\SYSTEM. Tyto systémové účty typicky nepotřebují oprávnění Odeslat jako a jejich odstraněním ze souboru exportu velikost tohoto souboru výrazně zmenšíte.
  • Soubor exportu musí být před importem ve formátu textu s kódováním Unicode. Došlo-li k nechtěnému uložení souboru ve formátu textu s kódováním ANSI, můžete soubor otevřít v programu Poznámkový blok a uložit jej jako text s kódováním Unicode.
  • Pokud se import nezdařil, pokuste se problém vyřešit s použitím testovacích účtů a jednořádkového souboru importu. Měli byste nakonfigurovat testovací účet, který má poštovní schránku na spuštěném serveru Exchange a potom udělit jinému testovacímu účtu oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce), ale nikoli oprávnění Odeslat jako.
  • Tento skript neobsahuje žádnou funkci, která by umožňovala vrátit zpět provedené změny. Pokud byste chtěli odvolat oprávnění Odeslat jako, která byla udělena tímto skriptem, musíte vytvořit nový skript, nebo oprávnění odvolat ručně. Funkce navrácení změn není poskytována, protože by skript mohl být použit k odvolání oprávnění Odeslat jako všem uživatelům podniku.
  • Skript zpracovává chybně účet, kterému bylo pro uživatelské objekty uděleno kromě oprávnění Full Mailbox Access (Úplný přístup k poštovní schránce) také oprávnění Full Control (Úplné řízení). Oprávnění Full Control (Úplné řízení) zahrnuje také oprávnění Odeslat jako, skript ale vyexportuje účet bez oprávnění Odeslat jako. Pokud je u takových účtů navíc uděleno oprávnění Odeslat jako, zvýší se sice velikost souboru exportu, při importu souboru ale žádné problémy nevzniknou.
  • Uživatelské účty služby Active Directory s rozlišitelnými názvy, které obsahují znak tabulátoru nebo nepárové uvozovky, nemohou být tímto skriptem zpracovány. Skript je schopen správně zpracovat název, který obsahuje párové uvozovky, například:
    "CN=Jméno "Přezdívka" Příjmení,DC=doména,DC=com"
  • Aplikace Excel může zpracovat soubor s maximálně 65 535 řádky. Pokud výstupní soubor obsahuje více řádků, je nutné jej před načtením v aplikaci Excel rozdělit na více částí.
  • Soubor Send_As_Errors bude obsahovat určité účty, u kterých došlo k selhání v důsledku oprávnění pro čtení nebo zápis. Pokud byly ostatní účty domény zpracovány bez problémů, mají tyto účty nejspíše nějakou společnou vlastnost, která brání skriptu v jejich zpracování. Mezi běžné problémy patří:
    • Nedostatečná oprávnění správce k zobrazení a nastavení vlastností účtů.
    • Není spuštěno úložiště poštovních schránek serveru Exchange.
    • Pracovní stanice není členem stejné domény.
    • Použitý účet správce není součástí stejné doménové struktury.
Postup spuštění skriptu: Zkopírujte všechny řádky, které se nacházejí mezi řetězci BEGIN SCRIPT a END SCRIPT, do editoru prostého textu. Použijte například program Poznámkový blok. Uložte skript s názvem AddSendAs.vbs. BEGIN SCRIPT
Option Explicit

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

'Definice seznamu výjimek, udělená oprávnění FMA uživatelů v seznamu jsou ignorována.  Pokud
'chcete tento seznam upravit, dodržujte stejný formát zápisu. Každý alias musí 
'být z obou stran ohraničen oddělovačem OUTPUT_DELIMITER
Dim FMA_EXCLUSIVE_LIST
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
Dim FMA_EXCLUSIVE_EXSVC
FMA_EXCLUSIVE_EXSVC = "\Exchange Services" & OUTPUT_DELIMITER

'Typ oprávnění: Allow (Povoleno) nebo Deny (Odmítnuto)
const ACCESS_ALLOWED_OBJECT_ACE_TYPE  = 5
const ADS_ACETYPE_ACCESS_ALLOWED = &h0
const ADS_ACETYPE_ACCESS_DENIED = &h1

'Příznaky: Určují dědičnost
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

'Deklarace konstant rozhraní 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

'název výstupního souboru
Const EXPORT_FILE = "Send_As_Export"
Const ERROR_FILE = "Send_As_Errors"

' režim skriptu
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"

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

' index sloupců v souboru importu nebo exportu
Const COLUMN_INDEX_USERDISPLAYNAME = 0
Const COLUMN_INDEX_FMAALIAS = 1
Const COLUMN_INDEX_FMADISPLAYNAME = 2
Const COLUMN_INDEX_IFPUBLICDELEGATE = 3
Const COLUMN_INDEX_MAILBOXSTATUS = 4
Const COLUMN_INDEX_USERADSPATH = 5
Const COLUMN_INDEX_HOMEMDB = 6

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

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

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

Dim objUser
Dim objSDMailBox
Dim objSDNTsecurity
Dim objDACLNTSD
Dim objNewACE

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

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

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

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

sDCServer = WScript.Arguments(ARG_INDEX_DC)

CreateOutputFiles

If ( cScriptMode = MODE_SETALL Or cScriptMode = MODE_EXPORT ) Then
	Dim sDomainContainer
	If (cScriptMode = MODE_SETALL) Then
		Dim strInput 
		WScript.StdOut.WriteLine("UPOZORNĚNÍ: Budete-li pokračovat, u všech účtů v doméně s uděleným oprávněním")
		WScript.StdOut.WriteLine("Full Mailbox Access (Úplný přístup k poštovní schránce) pro danou poštovní schránku")
		WScript.StdOut.WriteLine("bude vlastníku poštovní schránky uděleno oprávnění Odeslat jako.")
		WScript.StdOut.WriteLine()
		WScript.StdOut.WriteLine("Chcete-li před udělením oprávnění Odeslat jako zobrazit seznam poštovních schránek,")
		WScript.StdOut.WriteLine("zrušte tuto operaci a použijte tento skript v režimu -Export.")
		WScript.StdOut.WriteLine()
		WScript.StdOut.Write("Pokračujte stisknutím klávesy A, operaci zrušíte stisknutím libovolné jiné klávesy: ")
		strInput = WScript.StdIn.ReadLine()
		If (UCase(strInput) <> UCase("A")) Then
			WScript.Quit
		End If	
	End If
	
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("""!"" označuje chybu při zpracování objektu.")
	WScript.StdOut.WriteLine("     Zkontrolujte soubor " & sErrorsFilename)
	WScript.StdOut.WriteLine("Začátek...")
	WScript.StdOut.WriteLine()

	err.Clear	
	Set rootDSE = GetObject("LDAP://" & sDCServer & "/RootDSE")
	sDomainContainer = rootDSE.Get("defaultNamingContext")
	WScript.StdOut.WriteLine("Hledám řadič domény [ " & sDCServer & " ] pro doménu [ " & sDomainContainer & " ]")
	
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Doména ani řadič domény nenalezeny, chyba:" & err.Description)
		objfileError.WriteLine("Doména ani řadič domény nenalezeny, chyba:" & 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("Vytvoření vazby k serveru Active Directory se nezdařilo, chyba:" & err.Description)
		objfileError.WriteLine("Vytvoření vazby na server Active Directory se nezdařilo, chyba:" & err.Description)
		WScript.Quit
	End If

	Set objCommand.ActiveConnection = conn
	WScript.StdOut.WriteLine("Hledám uživatelské účty vlastníků poštovních schránek v doméně " & sDomainContainer)
	
	objCommand.CommandText  = "<LDAP://" & sDCServer & "/" & sDomainContainer & ">;(&(&(& (mailnickname=*) (| (&(objectCategory=person)(objectClass=user)(msExchHomeServerName=*)) ))));adspath;subtree"
	objCommand.Properties("searchscope") = ADS_SCOPE_SUBTREE
	objCommand.Properties("Page Size") = 100
	objCommand.Properties("Timeout") = 30 
	objCommand.Properties("Chase referrals") = (ADS_CHASE_REFERRALS_SUBORDINATE Or ADS_CHASE_REFERRALS_EXTERNAL)

	err.Clear	
	Set rsUsers = objCommand.Execute
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Hledání uživatelských účtů vlastníků poštovních schránek se nezdařilo, chyba:" & err.Description)
		objfileError.WriteLine("Hledání uživatelských účtů vlastníků poštovních schránek se nezdařilo, chyba:" & err.Description)
		WScript.Quit
	End If

	If (rsUsers.RecordCount = 0) Then
		WScript.StdOut.WriteLine("V doméně & sDomainContainer & nebyly nalezeny žádné uživatelské účty vlastníků poštovních schránek.")
		objfileError.WriteLine("V doméně & sDomainContainer & nebyly nalezeny žádné uživatelské účty vlastníků poštovních schránek.")
		fError = True		
	End If

	While Not rsUsers.EOF
		If (fOneError = True) Then
			WScript.StdOut.Write("!")
		Else
			WScript.StdOut.Write(".")
		End If
		fOneError = False
		
		'Vynechat všechny objekty poštovních schránek v kontejneru objektů Microsoft Exchange System
		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("Získání objektu uživatele se nezdařilo: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Chyba: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			Set objSDMailBox = objUser.MailboxRights
			If (err.number <> 0) Then
				objfileError.WriteLine("Získání práv poštovní schránky se nezdařilo: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Chyba: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			Set objSDNTsecurity = objUser.ntSecurityDescriptor
			If (err.number <> 0) Then
				objfileError.WriteLine("Získání NTSD se nezdařilo: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Chyba: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			
			Set objDACLNTSD = Nothing
			If (objUser.AccountDisabled) Then
				sMailboxStatus = "Disabled"
			Else
				sMailboxStatus = "Enabled"
			End If

			'Získání seznamu publicDelegates pro daného uživatele
			err.Clear
			msPublicDelegates = objUser.Get("publicDelegates")
			If (err.number <> 0) Then
				'Uživatel nemá nastaven seznam publicDelegates
				sIfPublicDelegate = STRNO
				err.Clear
			Else
				sIfPublicDelegate = STRYES
			End If
			
			err.Clear 			
			FindAllFMAUsers objSDMailBox
			
			If (TotalACE > dArraySize) Then
			'Poli je třeba přidělit více prostoru
				dArraySize = TotalACE + 1
				ReDim Preserve sTrusteeAlias(dArraySize)
				FindAllFMAUsers objSDMailBox
			End If
			If (err.number <> 0) Then
				objfileError.WriteLine("Zadání dotazu na práva poštovní schránky uživatele se nezdařilo: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Chyba: " & 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
					
					'Kontrola nastavení Send As ACE v popisovači zabezpečení NT
					'Pokud existuje s hodnotou allow nebo deny, není třeba přidávat oprávnění Odeslat jako 
					CheckSendAsACE objDACLNTSD, sTrusteeAlias(i)
					
					'Poznámka: hodnota deny má přednost před hodnotou allow. 
					'Pokud má ACE pro FMA hodnotu deny, vynechat, i když je pro FMA nalezeno ACE s hodnotou allow 
					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
			
						'Dotaz na uživatele s vysokým oprávněním (FMA) za účelem získání hodnoty displayName
						Dim rsTrustee
						Dim objTrustee
						Dim dPosition
						Dim sAlias
					
						dPosition = inStr(1, sTrusteeAlias(i), "\")
						sAlias = mid(sTrusteeAlias(i), dPosition + 1)
				
						Set objCmdDisplayName = CreateObject("ADODB.Command")			
						Set objCmdDisplayName.ActiveConnection = conn
						objCmdDisplayName.CommandText  = "<LDAP://" & sDomainContainer & ">;(&(&(& (mailnickname=" & sAlias & ") (| (&(objectCategory=person)(objectClass=user)(msExchHomeServerName=*)) ))));adspath;subtree"
						objCmdDisplayName.Properties("searchscope") = ADS_SCOPE_SUBTREE
						objCmdDisplayName.Properties("Page Size") = 100
						objCmdDisplayName.Properties("Timeout") = 30 
						objCmdDisplayName.Properties("Chase referrals") = (ADS_CHASE_REFERRALS_SUBORDINATE Or ADS_CHASE_REFERRALS_EXTERNAL)
						
						Set rsTrustee = objCmdDisplayName.Execute				
						Set objTrustee = GetObject(rsTrustee.Fields(0).Value)
						
						If (err.number <> 0) Then
							'Získání hodnoty displayName uživatele FMA se nezdařilo, použít jeho alias
							sFMAUserDisplayName = sAlias							
						Else
							sFMAUserDisplayName = objTrustee.displayName							
						End If
	
						'výstup do souboru exportu
						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("Uživatel " & rsUsers.Fields(0).Value & " nemohl být uložen do souboru exportu. Oprávnění pro tohoto uživatele musíte nastavit ručně.")
							objfileError.WriteLine("Chyba: " & 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("Aktualizace rozhraní ADSI uživatele se nezdařila: " & rsUsers.Fields(0).Value)
						objfileError.WriteLine("Chyba: " & 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("Budete-li pokračovat, u všech účtů uvedených v souboru " & sImportFilePath ",")
	WScript.StdOut.WriteLine("které mají pro tuto poštovní schránku uděleno oprávnění FMA,")
	WScript.StdOut.WriteLine("bude vlastníku poštovní schránky uděleno oprávnění Odeslat jako.")
	WScript.StdOut.WriteLine()
	WScript.StdOut.Write("Pokračujte stisknutím klávesy A, operaci zrušíte stisknutím libovolné jiné klávesy: ")
	strInput = WScript.StdIn.ReadLine()
	If (UCase(strInput) <> UCase("A")) Then
		WScript.Quit
	End If	
	WScript.StdOut.WriteLine("Začátek...")
	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("Nepodařilo se otevřít soubor importu " & sImportFilePath & ", chyba:" & err.Description)
		objfileError.WriteLine("Nepodařilo se otevřít soubor importu " & sImportFilePath & ", chyba:" & 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("Analýza jednoho řádku se nezdařila: " & sOneRow )
			objfileError.WriteLine("Chyba: " & err.Description)
			err.Clear
			fError = True
			fOneError = True
		End If
		
		If (UserPath <> sArraySplit(COLUMN_INDEX_USERADSPATH)) Then
			'Nový uživatel
			If (fNeedToAddSendAs = True ) Then
				'aktualizace stávajícího uživatele
				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("Aktualizace oprávnění uživatele se nezdařila: " & UserPath)
					objfileError.WriteLine("Chyba: " & 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("Získání objektu uživatele se nezdařilo: " & UserPath)
				objfileError.WriteLine("Chyba: " & err.Description)
				err.Clear
				fError = True
				fOneError = True
			End If
		End If
	
		'Přidání nového ACE. Je tato kontrola potřebná?
		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
		'aktualizovat posledního uživatele
		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("Aktualizace oprávnění uživatele se nezdařila: " & UserPath)
			objfileError.WriteLine("Chyba: " & 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("Během zpracování došlo k jedné nebo více chybám. Seznam chyb naleznete v souboru " & sErrorsFilename)
Else
	WScript.StdOut.WriteLine("Zpracování skončilo úspěšně. Nedošlo k žádným chybám.")
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
		' Otevřít data volitelných ACL (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
				'Zachovat seznam explicitně nastavených FMA na úrovni poštovní schránky
				sFMAExplicitAllow = sFMAExplicitAllow & objACE.Trustee & OUTPUT_DELIMITER			
			End If
		ElseIf (( (objACE.AccessMask And EX_FULLMailbox_AccessMask) <>0 ) And (objACE.AceType = ADS_ACETYPE_ACCESS_DENIED)) Then
			'Zachovat seznam s odepřeným FMA, jako oddělovač použit OUTPUT_DELIMITER, 
			'zahrnout zděděné i explicitně nastavené na úrovni poštovní schránky
			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("Pro tohoto uživatele nelze načíst oprávnění: " & sTAlias)
				objfileError.WriteLine("Chyba: " & err.Description)
				err.Clear
				fError = True
				fOneError = True
			End If			
		Next			
	End If	
End Function

Function IfFMAAllowed(sTrustee)
	'Nalezeno ACE s povolením FMA. Předpoklad je logická 1
	fFMAAllowed = True
	
	If ( (0 <> Instr(sFMADeniedList, sTrustee)) And (0 = Instr(sFMAExplicitAllow, sTrustee))	) Then
		'Nalezeno odepřené ACE, FMA není nastaveno explicitně 
		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("Nelze vytvořit soubor exportu nebo soubor chyb: " & err.Description)
		objfileError.WriteLine("Nelze vytvořit soubor exportu nebo soubor chyb: " & err.Description)
		fError = True
		fOneError = True
		WScript.Quit	
	End If

End Function

Function DisplaySyntax
	WScript.StdOut.WriteLine("Syntaxe:")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Export účtů s uděleným oprávněním Full Mailbox Access bez uděleného oprávnění Odeslat jako:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Export")
	WScript.StdOut.WriteLine("         POZNÁMKA: Tento seznam bude uložen do souboru Send_As_Export_HH_MM_SS.txt")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Udělit oprávnění Odeslat jako všem účtům uvedeným v souboru exportu:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Import ""filename.txt""")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Udělit oprávnění Odeslat jako všem účtům v doméně s oprávněním Full Mailbox Access:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -SetAll")
	WScript.StdOut.WriteLine("         POZNÁMKA: Účty budou uloženy do souboru Send_As_Export_HH_MM_SS.txt")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Ve všech režimech jsou chyby ukládány do souboru Send_As_Errors_HH_MM_SS.txt")

	WScript.Quit	
End Function
END SCRIPT

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci, bez žádné záruky výslovně uvedené nebo mlčky předpokládané, včetně, bez omezení, mlčky předpokládaných záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele.
Další informace o možnostech podpory, kterou nabízí společnost Microsoft, naleznete na následujícím webu společnosti Microsoft:
http://support.microsoft.com/contactus/?ws=support
Produkty jiných výrobců popisované v tomto článku vyrábějí společnosti, které jsou nezávislé na společnosti Microsoft. Společnost Microsoft neposkytuje žádnou záruku (implicitně předpokládanou ani jinou) týkající se výkonu a spolehlivosti těchto produktů.

Vlastnosti

ID článku: 912918 - Poslední aktualizace: 26. listopadu 2007 - Revize: 17.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange Server 2003 Enterprise Edition
Klíčová slova: 
kbtshoot kbpending kbbug kbprb KB912918

Dejte nám zpětnou vazbu

 

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