Brugere kan ikke sende e-mail fra en mobil enhed eller fra en delt postkasse i Exchange 2000 Server og i Exchange Server 2003

Oversættelser af artikler Oversættelser af artikler
Artikel-id: 912918 - Få vist de produkter, som denne artikel refererer til.
Udvid alle | Skjul alle

På denne side

Symptomer

Det er ikke muligt at sende en e-mail i Microsoft Exchange 2000 Server eller i Microsoft Exchange Server 2003. Desuden vises muligvis én af følgende fejlmeddelelser eller én af følgende meddelelser med besked om manglende modtagelse.

Fejlmeddelelser

  • Adgang nægtet
  • Du har ikke tilstrækkelig tilladelse til at udføre denne handling på objektet. Kontakt den ansvarlige for denne mappe eller systemadministratoren.
  • Fejl af typen Ikke-angivet meddelelse
  • MAPI_E_NO_ACCESS -2147024891
  • Postmeddelelsen til brugeren USERNAME (HRESULT:-2147024891) kunne ikke leveres. Afbryder brugeren USERNAME midlertidigt. (Sikkerhedsfejl ? Der kan ikke opnås adgang til brugerens postkasse).
  • Ressourcen blev ikke fundet
Bemærk! Du får vist fejlmeddelelsen "Adgang nægtet" eller "Ressourcen blev ikke fundet" fra Outlook Web Access, når du er logget på som en stedfortræderkonto.

Meddelelser med besked om manglende modtagelse

  • Du har ikke tilladelse til at sende til denne modtager. Kontakt systemadministratoren for at få hjælp.
  • Meddelelsen kunne ikke sendes ved hjælp af din postkasse. Du har ikke tilladelse til at sende meddelelsen på den angivne brugers vegne.
Dette problem er kendt for at påvirke følgende tredjepartsprodukter:
  • Research In Motion (RIM) BlackBerry Enterprise Server (BES)
  • Good Technology GoodLink Wireless Messaging
Det er dog blevet bekræftet, at følgende tredjepartsprodukter ikke er berørt af problemet.
  • Cisco Unity Unified Messaging
  • Quest Migration Suite for Exchange
  • Værktøjet Microsoft ExMerge til Exchange
Problemet kan også påvirke brugerdefinerede MAPI- eller CDO-baserede (Collaborative Data Objects) programmer, der kan bruges til at sende e-mail.

Andre tredjepartsprodukter, der bruger servicekonti til at sende e-mails, kan også være berørt. Hvis du kører et tredjepartsprodukt, der er berørt af dette problem, anbefaler vi, at du kontakter leverandøren for at få hjælp til at løse problemet. Yderligere oplysninger finder du i afsnittet "Yderligere oplysninger".

Vigtigt! Som en forholdsregel til gendannelse af funktionaliteten "Send som" til vigtige forretningsprogrammer kan du tildele "Send som" til en tjenestekonto via nedarvning på en Active Directory-objektbeholder eller endda et helt domæne. Det kan du gøre ved at se de vejledningerne i afsnittet . Selv om dette er en effektiv metode til at løse det aktuelle problem, er der sikkerheds- og administrationsmæssige konsekvenser, som du skal tage med i dine overvejelser. Denne tildeling kan anvende tilladelsen Send som til utilsigtede konti, og du skal overveje tilladelsen Send som, hvis du flytter brugerkonti til en anden objektbeholder.

Årsag

Dette problem kan opstå, hvis en af følgende betingelser gælder:
  • Du har ikke tilladelse til at sende e-mail som postkasseejer på den konto, du bruger til at sende e-mailen.
  • Du kører Microsoft Exchange 2000 Server Service Pack 3 (SP3) med en Store.exe-filversion, der svarer til eller er nyere end version 6619.4. Version 6619.4 blev først gjort tilgængelig i følgende artikel i Microsoft Knowledge Base:
    915358 Der findes et hotfix til ændring af funktionsmåden af tilladelsen "Full Mailbox Access" i Exchange 2000 Server
  • Du kører Microsoft Exchange Server 2003 Service Pack 1 (SP1) med en Store.exe-filversion, der svarer til eller er nyere end version 7233.51. Version 7233.51 blev først gjort tilgængelig i følgende artikel i Microsoft Knowledge Base:
    895949 Ændring af funktionsmåden for tilladelsen "Send som" i Exchange 2003
    Bemærk, at denne rettelse ikke er inkluderet i Microsoft Exchange 2003 Service Pack 2 (SP2). Hvis du har installeret Exchange Server 2003 SP1-versionen af dette hotfix, skal du installere Service Pack 2-versionen efter opgradering til Service Pack 2.
  • Du kører Exchange Server 2003 SP2 med en Store.exe-filversion, der svarer til eller er nyere end version 7650.23. Version 7650.23 blev først gjort tilgængelig i følgende artikel i Microsoft Knowledge Base:
    895949 Ændring af funktionsmåden for tilladelsen "Send som" i Exchange 2003
    Bemærk! Denne ændring var ikke inkluderet i Exchange 2000 Server SP3, Exchange Server 2003 SP1 eller Exchange 2003 SP2. Ændringen blev implementeret efter udgivelsen af disse service packs, men den understøttes i alle service packs. Ændringen bliver inkluderet i fremtidige service packs til disse produkter.

    Hvis du installerer Exchange Server 2003 SP2, skal du installere den ekstra opdatering for at bevare den nye funktionsmåde, selv hvis du allerede har installeret versionen af opdateringen til Exchange Server 2003 SP1.

Løsning

Før de filversioner af Store.exe, der er angivet i afsnittet "Årsag", implicit gav tilladelsen "Full Mailbox Access" adgang til at sende som ejer af postkassen. Det betød, at en anden konto med tilladelsen "Full Mailbox Access" kunne sende e-mails, der så ud, som om de var afsendt af ejeren af postkassen.

Flere Microsoft Exchange-kunder har anmodet om, at tilladelsen "Send som" adskilles fra tilladelsen "Full Mailbox Access" af følgende to årsager:
  • For at forhindre spoofing af e-mail.
  • Til sikring af, at e-mails, der sendes af en stedfortræder, altid kan skelnes klart fra e-mails, der er sendt af den faktiske ejer af postkassen.
Alle nye versioner af Exchange Information Store kræver nu udtrykkeligt tilladelsen "Send som", før e-mails kan afsendes som fra ejeren af postkassen. Her følger dog de tre undtagelser til dette krav:
  • Postkasseejerens konto kræver ikke udtrykkeligt tilladelsen "Send som" for sin egen postkasse.
  • Den associerede eksterne konto for en postkasse kræver ikke udtrykkeligt tilladelsen "Send som".
  • En stedfortræderkonto, der også har tilladelsen "Full Mailbox Access", kræver ikke udtrykkeligt "Send som"-tilladelse.
Yderligere oplysninger om disse undtagelser finder du i afsnittet "Yderligere oplysninger".

Alle andre konti, der gives delvis eller fuld adgang til en postkasse, skal nu udtrykkeligt gives tilladelsen "Send som" til postkasseejerens konto for at kunne sende post som ejer af postkassen. Dette omfatter programtjenestekonti, der udfører funktioner som afsendelse af e-mails til brugere af mobile enheder.

Tilladelsen "Send som" skal gives til servicekontoen på hvert brugerobjekt, der ejer en postkasse. Du kan ikke tildele en Exchange-server eller et databaseobjekt tilladelsen "Send som" og opnå samme virkning som at give alle postkasser i databasen tilladelsen "Send som".

Denne funktionsmåde opstår, fordi tilladelsen "Send som" er en Active Directory-tilladelse, der gælder for de Active Directory-objekter, som den er angivet for. Når tilladelsen "Send som" tildeles på et Exchange-databaseobjekt, giver det dig tilladelse til "Send som"-tilladelsen på selve databasen. Det giver dig dog ikke tilladelse til de brugere med "Send som"-tilladelse, som har postkasser i databasen.

Bemærk!Tildeling af tilladelsen "Modtag som" på en Exchange-database svarer rent funktionsmæssigt til at tildele alle postkasser i databasen tilladelsen "Full Mailbox Access". Dette afskiller sig fra funktionsmåden af tilladelsen "Send som".

I tilladelsen "Send som" gælder tilladelsen kun for selve databaseobjektet. Den gælder ikke for postkasser i databasen. I tilladelsen "Modtag som" overtages tilladelsen tilsyneladende af alle postkasser, der findes i databasen.

Det er lettere at forstå forskellen mellem de to tilladelser ved at se alle postkasser i en database, som var de mapper i en enkelt postkasse ("database"-postkassen). Hvis du har fuld adgang til databasen, har du tilladelse til at opnå adgang til alt indhold i databasen. Dette omfatter alle postkasser.

Tilladelsen "Send som" gælder for identiteten af et Active Directory-brugerobjekt og ikke for postkasseindhold, der er gemt i en database. Når e-mail sendes, sendes de ikke fra en bestemt postkasse eller database, men fra en bruger. Brugeren kan være ejer af postkassen eller af en anden konto med tilladelsen "Send som".

Følg disse trin for at give en anden konto udtrykkelig adgang til at sende som ejer af postkassen:
  1. Start administrationskonsollen Active Directory-brugere og -computere.
  2. Kontroller, at indstillingen Avancerede funktioner i menuen Vis er markeret. Hvis indstillingen ikke er markeret, vil sikkerhedsiden ikke være synlig for brugerkontoobjekter.
  3. Åbn egenskaberne for den brugerkonto, der ejer postkassen.
  4. Klik på fanen Sikkerhed.
  5. Hvis kontoen ikke allerede findes på listen over gruppe- eller brugernavne, skal du tilføje den konto, der skal have tilladelsen "Send som" for denne bruger.
  6. I boksen Tilladelser skal du klikke på Tillad for tilladelsen "Send som" for den relevante konto.
  7. Klik på OK.
  8. Genstart tjenesten Microsoft Exchange Information Store på den berørte Exchange-server.
Bemærk! Hvis du ikke genstarter tjenesten Microsoft Exchange Information Store, opdaterer tjenesten Microsoft Exchange Information Store cachelageret med tilladelser, for at de nye tilladelser kan være gældende i overensstemmelse med den værdi, der er angivet i følgende undernøgle i registreringsdatabasen:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem


Værdinavn: Mailbox Cache Age Limit
Værditype: REG_DWORD
Radix: Decimal
Værdidata: Aldersbegrænsning for postkassens cachelager med oplysninger i minutter.
Standardværdien for denne post i registreringsdatabasen er 120 minutter (to timer). Hvis du ændrer denne post i registreringsdatabasen, skal du genstarte tjenesten Microsoft Exchange Information Store.

Bemærk! Hvis du angiver timeoutværdierne til en meget lav værdi, kan det påvirke serverens ydeevne.

Sådan tildeles tilladelsen "Send som" til flere konti

Der findes et eksempelscript sidst i denne artikel, der kan bruges til at søge på et domæne for Active Directory-katalogtjenester efter konti, der har tilladelsen "Full Mailbox Access", men ikke tilladelsen "Send som" til en postkasse. Dette er de egenskaber for en tjeneste- eller ressourcekonto, som påvirkes af denne sikkerhedsændring. Scriptet kan bruges til at generere en eksportfil, som du kan gennemse, redigere og derefter genimportere for at give konti, der kræver denne tilladelse, tilladelsen "Send som".

Du kan også tildele tilladelsen "Send som" via nedarving på hvert brugerobjekt i et Active Directory-domæne eller i en beholder. Hvis du tildeler tilladelsen "Send som" med denne metode, giver du muligvis tilladelse til objekter, du ikke ville give det. Desuden kan du miste tilladelse til objekter, der flyttes fra beholderen. Derfor anbefales denne metode ikke. Den kan desuden have sikkerhedskonsekvenser, der skal overvejes omhyggeligt, før den implementeres.

Hvis du vil tildele "Send som" for en enkelt konto på alle brugerkonti på et Active Directory-domæne eller i en Active Directory-beholder, skal du følge disse trin:
  1. Start administrationskonsollen Active Directory-brugere og -computere.
  2. Kontroller, at indstillingen Avancerede funktioner i menuen Vis er markeret. Hvis indstillingen ikke er markeret, er sikkerhedssiden ikke synlig for domæne- og beholderobjekter.
  3. Åbn egenskaberne for domænet eller beholderen, og klik derefter på fanen Sikkerhed.
  4. Klik på knappen Avanceret.
  5. Hvis kontoen, der kræver tilladelse, ikke allerede findes på listen, skal du klikke på Tilføj og vælge kontoen. I modsat fald skal du dobbeltklikke på kontoen for at redigere den.
  6. Klik på Brugerobjekter på listen Anvend på.
  7. Tildel kontoen tilladelsen "Send som".
  8. Klik på OK, indtil du har afsluttet og gemt alle ændringer.
Bemærk! Scriptet, der beskrives sidst i denne artikel, overvejer nedarvede tilladelser. Hvis du derfor tildeler tilladelsen "Send som" ved at bruge denne metode, bliver de konti, der har nedarvet tilladelsen "Send som", usynlige for scriptet. Hvis du senere vil behandle disse konti med scriptet, skal du først fjerne den nedarvede tilladelse "Send som".

Specielle regler for adminSDHolder-beskyttede konti

Hvis du tildeler tilladelsen "Send som" til en postkasseejer, som også er domæneadministrator, ved hjælp af scriptet, træder tilladelsen ikke i kraft. Vi anbefaler ikke, at du bruger postkasseaktiverede brugerkonti, der har domæneadministratorrettigheder, eller som er beskyttede af adminSDHolder.

Objektet adminSDHolder er en skabelon for konti med omfattende administrative Active Directory-rettigheder. Med henblik på at forhindre utilsigtet udvidelse af rettigheder skal alle konti, der er beskyttet af objektet adminSDHolder, have adgangsrettigheder, der svarer til dem, der er angivet for selve adminSDHolder-objektet.

Hvis du ændrer rettighederne eller tilladelserne for objektet adminSDHolder for en beskyttet konto, tilbageføres ændringen inden for få minutter af et baggrundsjob. Hvis du f.eks. tildeler et domæneadministratorobjekt for en programtjenestekonto tilladelsen "Send som", tilbagekaldes tilladelsen automatisk af baggrundsopgaven.

Derfor kan du ikke tildele tilladelsen "Send som" til en programtjenestekonto, der er beskyttet af objektet adminSDHolder, medmindre du ændrer selve adminSDHolder-objektet. Hvis du rent faktisk ændrer objektet adminSDHolder, ændrer det adgangstilladelserne for alle beskyttede konti. Du bør udelukkende ændre objektet adminSDHolder efter en komplet gennemgang af de sikkerhedskonsekvenser, som ændringen kan have.

Følg disse trin for at associere en postkasse med en konto, der er beskyttet af objektet adminSDHolder:
  1. Start administrationskonsollen Active Directory-brugere og -computere.
  2. Kontroller, at indstillingen Avancerede funktioner i menuen Vis er markeret. Hvis indstillingen ikke er markeret, vil siden Sikkerhed ikke være synlig for brugerkontoobjekter.
  3. Opret en almindelig brugerkonto, der kan fungere som ejer af postkassen.
  4. Tildel den almindelige brugerkonto en postkasse på en Exchange-server.
  5. Åbn egenskaberne for den nye postkasseejerkonto.
  6. I boksen Exchange Advanced skal du tildele den beskyttede administratorkonto tilladelsen "Full Mailbox Access".
  7. På fanen Sikkerhed skal du tildele den beskyttede administratorkonto tilladelsen "Send som".
  8. Klik på OK for at lukke egenskaberne for postkasseejerobjektet.
  9. Højreklik på postkasseejerkontoobjektet, og klik derefter på Deaktiver konto for at deaktivere logon på kontoen.
Yderligere oplysninger om adminSDHolder-beskyttede konti finder du ved at klikke på nedenstående artikelnumre for at få vist artiklerne i Microsoft Knowledge Base:
907434 Rettigheden "Send som" fjernes fra et brugerobjekt, når du har konfigureret "Send som" korrekt i snap-in-programmet Active Directory-brugere og -computere under Exchange Server. Artiklen er evt. på engelsk.
318180 AdminSDHolder-tråd påvirker midlertidige medlemmer af distributionsgrupper. Artiklen er evt. på engelsk.
817433 Delegerede tilladelser er ikke tilgængelige, og nedarvning deaktiveres automatisk. Artiklen er evt. på engelsk.
306398 AdminSDHolder-objekt påvirker delegering af kontrol over tidligere administratorkonti. Artiklen er evt. på engelsk.

Særlige opgaver i forbindelse med BlackBerry Enterprise Server

Opgave 1: Kontroller, at BlackBerry Enterprise Server kører som en separat, entydig konto

Kontroller, at BlackBerry Enterprise Server kører som en separat konto, der specifikt er oprettet med henblik på administrative opgaver. Denne konto kaldes som standard "BESAdmin."

Hvis du har en separat konto til administration af BlackBerry Enterprise Server, skal du gå videre til opgave 2.

Hvis du ikke har en separat konto, skal du oprette en separat konto. Brug derefter denne konto, når du udfører administrative opgaver. Du kan finde anvisninger for, hvordan du opretter en separat konto, på et af nedenstående BlackBerry-websteder. Klik ind på den side, som indeholder oplysninger om den version af BlackBerry Enterprise Server, du kører.

Hvis du kører BlackBerry Enterprise Server 4.0 eller BlackBerry Enterprise Server 4.1, skal du klikke ind på følgende BlackBerry-websted:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=9174704&sliceId=&dialogID=11024244&stateId=1 0 11020632
Hvis du kører BlackBerry Enterprise Server 3.6, kan du besøge følgende BlackBerry-websted:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=KB04334&sliceId=SAL_Public&dialogID=11016727&stateId=1 0 11020358

Opgave 2: Kontroller, at kontoen for BlackBerry Enterprise Server-tjenesten har de relevante tilladelser

Kontroller, at kontoen for BlackBerry Enterprise Server-tjenesten har de relevante tilladelser.

Bemærk! Hvis kontoen er på et domæne, skal du kontrollere, at kontoen kun er medlem af domænebrugergruppen. På en domænecontroller skal kontoen være medlem af den indbyggede administratorgruppe.
  1. Benyt denne fremgangsmåde på BlackBerry Enterprise Server:
    1. Kontroller, at kontoen er medlem af den lokale administratorgruppe.
    2. Tildel kontoen tilladelserne "Log on Locally" og "Log on as a Service".
  2. Tildel Exchange View-Only Administrator-tilladelser på det administrative gruppeniveau. Det kan du gøre ved at benytte følgende fremgangsmåde:
    1. Højreklik på det første administrative Exchange Server-gruppenavn i Exchange System Manager, og klik derefter på Delegate Control.
    2. Bemærk, at kontoen for BlackBerry Enterprise Server-tjenesten er angivet til at have rollen Exchange View-Only Administrator.
  3. Tildel tilladelserne "Send As", "Receive As" og "Administer Information Store" på serverniveau for hver Exchange Server-server. Det kan du gøre ved at benytte følgende fremgangsmåde:
    1. Højreklik på det første administrative Exchange Server-gruppenavn i Exchange System Manager, og udvid derefter gruppen Servers.
    2. Højreklik på en Exchange Server-server, og klik på Properties og derefter på Security.
    3. Vælg kontoen for BlackBerry Enterprise Server-tjenesten i den øverste rude. Kontroller, at tilladelserne "Send As", "Receive As" og "Administer Information Store" i den nederste rude er angivet til Allow.
    4. Gentag trin 3b og 3c for hver Exchange Server-server.
  4. Tildel rettighederne "Send As", "Receive As" og "Administer Information Store" til postkasselageret. Det kan du gøre ved at benytte følgende fremgangsmåde:
    1. Højreklik på det første administrative Exchange-gruppenavn i Exchange System Manager, og udvid derefter gruppen Servers.
    2. Udvid gruppen med postkasselageret, højreklik på hvert enkelt postkasselager, klik på Properties, og klik derefter på Security.
    3. Vælg kontoen for BlackBerry Enterprise Server-tjenesten i den øverste rude. Kontroller, at tilladelserne "Send As", "Receive As" og "Administer Information Store" i den nederste rude er angivet til Allow.
    4. Gentag trin 4b og 4c for hvert postkasselager på de enkelte Exchange Server-servere.
  5. Benyt denne fremgangsmåde i snap in-programmet Active Directory-brugere og -computere.
    1. Højreklik på den bruger, du vil føje rettigheder til, og klik derefter på Properties.
    2. Tilføj tjenestekontoen BlackBerry Enterprise Server under fanen Security, og marker derefter feltet Send As.
Hvis du kører Exchange Server 2003, skal du gå videre til opgave 3.

Opgave 3: Rydde cachelageret på BlackBerry Enterprise Server

Hvis du vil rydde tilladelsescachelageret i informationslageret, skal du genstarte de tjenester, der vedrører Blackberry, og genstarte Microsoft Exchange Information Store. Når du har genstartet informationslageret, skal du genstarte de tjenester, der vedrører RIM Blackberry, for at tildele kontoen BESAdmin tilladelsen Send As, der er tilføjet for nylig, til Exchange Information Store.

Du kan finde flere oplysninger om specifikke krav til Blackberry-serveren på følgende BlackBerry-websted:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=KB04707&sliceId=SAL_Public&dialogID=3016166&stateId=0%200%202441763

Yderligere Information

Adgangstilladelser til Exchange-postkasse og -mapper er opdelt mellem Active Directory- og Microsoft Exchange-databaser. Dog angives begge typer tilladelser i Active Directory-brugeradministrationskonsollen, men de forskellige tilladelser gemmes på to forskellige steder.

Hvis der er angivet en tilladelse på et objekts sikkerhedsside, er det typisk en Active Directory-rettighed. Hvis tilladelsen er angivet på siden Exchange Advanced Mailbox Rights, er det en tilladelse for en Exchange-database. Hvis du forsøger at opnå adgang til siden Mailbox Rights, når en brugers database er utilgængelig, modtager du følgende fejlmeddelelse:
Tjenesten Microsoft Information Store er ikke tilgængelig.
Tilladelsen "Associated External Account" er undtagelsen fra reglen om, at tilladelser angivet i "Exchange Advanced Mailbox Rights" gemmes i Exchange-databasen. Tilladelsen "Associated External Account" er endda ikke en ægte tilladelse, men en metode til angivelse af Active Directory-attributten msExchMasterAccountSID. Attributten msExchMasterAccountSID er ikke en tilladelse, men styrer, hvordan andre tilladelser fungerer. Du finder flere oplysninger om attributten msExchMasterAccountSID i afsnittet "Associerede eksterne konti".

Bemærk! Active Directory-attributten msExchMailboxSecurityDescriptor er en sikkerhedskopi af et undersæt af aktive postkasserettigheder. Den bruges internt af Exchange til en række forskellige formål. Desuden opdateres attributten msExchMailboxSecurityDescriptor, så den svarer til de aktuelle gældende rettigheder, hvis administratorer bruger understøttede grænseflader til tildelingen af rettigheder.

Hvis en administrator dog ændrer attributten msExchMailboxSecurityDescriptor direkte, overføres ændringerne ikke til Exchange-lageret og træder ikke i kraft. Det er ikke sikkert, at attributten synkroniseres med de faktiske postkasserettigheder. Du bør ikke bruge attributten msExchMailboxSecurityDescriptor til at læse eller skrive postkasserettigheder.

Yderligere oplysninger finder du ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
310866 Sådan angives rettigheder til Exchange Server 2003- og Exchange 2000 Server-postkasser for en postkasse, der findes i informationslageret. Artiklen er evt. på engelsk.

Tilladelsen "Full Mailbox Access" er en tilladelse i Exchange-databasen. Tilladelsen "Send som" er en Active Directory-tilladelse. Før de ændringer af Exchange-filen Store.exe, der beskrives i denne artikel, konsulterede Exchange-systemet ikke indstillingen for tilladelsen "Send som", hvis afsenderen allerede havde tilladelsen "Full Mailbox Access".

Bemærk! Du kan tildele tilladelsen "Send som" uden samtidigt at tildele tilladelsen "Full Mailbox Access". I sådanne situationer har Exchange altid konsulteret tilladelsen "Send som".

Medtagelse af tilladelsen "Send som" i tilladelsen "Full Mailbox Access" har gjort det muligt for Exchange-serveradministratorer at tildele sig selv aktive "Send som"-tilladelser til alle postkasser på den server, de administrerer. Administratorer kan udføre denne handling, fordi de har fuld kontrol over en Exchange-database. Ved at adskille tilladelsen "Send som" fra tilladelsen "Full Mailbox Access" kan Active Directory-administratorer nu blokere denne proces, fordi tilladelsen "Send som" er en Active Directory-tilladelse og ikke en tilladelse til Exchange-informationslageret. Derfor er processen ikke nødvendigvis under Exchange-administratorernes kontrol.

Postkasseejere

En postkasseejer defineres som Active Directory-brugerkontoen, hvis msExchMailboxGUID-attribut omfatter GUID'et (Globally Unique numeric Identifier) for en bestemt postkasse. Kun én konto i hele skoven må omfatte GUID'et for en bestemt postkasse. Hvis du forsøger at angive yderligere en ejer med samme GUID, afvises ændringen af Active Directory, og der vises en fejlmeddelelse.

Når du aktiverer en postkasse for en konto, eller når du forbinder en frakoblet postkasse med en Active Directory-konto, indstilles postkassens GUID automatisk for den pågældende konto. Det er sjældent nødvendigt eller anbefalet for administratorer at angive postkasse-GUID'er direkte.

Associerede eksterne konti

En almindelig Exchange-konfiguration er at installere Exchange i et ressourceområde. En ressourceskov er en skov, der findes i en anden skov end de brugerkonti, der skal have postkasser på systemet. Dette udgør et problem, fordi attributten msExchMailboxGUID kun kan indstilles for objekter i samme skov som Exchange-serveren.

Løsningen på dette problem er at aktivere en postkasse for en konto i Exchange-serverskoven. Derefter linker du denne postkasseaktiverede konto til en konto i en anden skov eller i et Microsoft Windows NT 4-domæne. Du kan gøre dette ved at tildele tilladelsen "Associated External Account". Tilladelsen "Associated External Account" kan kun tildeles én enkelt konto. Den valgte konto skal være fra en anden skov.

Når du angiver tilladelsen "Associated External Account", skrives SID-værdien for den eksterne konto til attributten msExchMasterAccountSID for postkasseejeren. Derfor er det slet ikke en tilladelse men en praktisk måde at kontrollere værdien af attributten msExchMasterAccountSID på. Når attributten msExchMasterAccountSID er angivet, gives den eksterne konto, der ejer SID'en, adgang til Exchange, som hvis det var en faktisk postkasseejerkonto.

Bemærk, at dette kun gælder for adgang til Exchange og ikke for adgang til Active Directory. Desuden bør du markere postkasseejerkontoen som en konto med deaktiveret logon, når du har angivet tilladelsen "Associated External Account", så alle tilladelser fungerer som forventet.
300456 Klienttilladelser og -delegeringer bevares ikke efter tildeling i Exchange 2000. Artiklen er evt. på engelsk.

Delegeringsscenarier

En stedfortræder er en bruger, der er blevet tildelt delvis adgang til en anden postkasse og rettighed til at sende e-mail på vegne af ejeren af den pågældende postkasse. Et almindeligt delegeringsscenario er at give en administrativ assistent stedfortræderadgang til en overordnets kalender. Stedfortræderen kan normalt læse og opdatere kalenderen. Desuden kan stedfortræderen svare på alle e-mail på vegne af den overordnede.

Stedfortræderadgang gives ved at føje stedfortræderen til attributten publicDelegates for ejeren af postkassen. Denne attribut har flere værdier. Alle brugere, der er anført i attributten, er givet tilladelsen "Send på vegne af" for postkasseejeren. Når sådanne stedfortrædere sender en e-mail-meddelelse, der har ejerens navn i feltet Fra, indeholder feltet Fra følgende:
<Stedfortræderens navn> på vegne af <Postkassens ejer>
E-mail-meddelelsen sendes dog fra stedfortræderen og ikke fra eller som postkassens ejer.

Her følger en liste over de to grænseflader, du kan bruge til at tildele tilladelsen "Send på vegne af" og stedfortrædertilladelser:
  • I postkasseejerobjektet skal du tildele tilladelsen "Send på vegne af" i dialogboksen Exchange General.
  • I Microsoft Outlook skal du bruge dialogboksen Stedfortrædere.
Begge af disse metoder angiver attributten publicDelegates. Dog giver Outlook-metoden også mulighed for at tildele stedfortræderen specifikke mappetilladelser. Du kan også tildele en stedfortræder tilladelser direkte via egenskaberne for en individuel mappe i Outlook.

I nogle tilfælde kan du muligvis ikke angive attributten publicDelegates i Outlook.
329622 Tilladelsen "Send på vegne af" er ikke tildelt en bruger efter delegering af adgang i Outlook. Artiklen er evt. på engelsk.

Hvis du giver stedfortrædere adgang til din postkasse, kan stedfortræderen bruge tilladelsen "Send på vegne af", selvom du ikke giver adgang til nogen af mapperne i din postkasse. Den grundlæggende tilladelse, som en stedfortræder har, er tilladelsen "Send på vegne af". Tilladelser til at få adgang til dine postkassemapper er separate og skal tildeles udover stedfortrædertilladelserne.

Normalt bruger stedfortrædere Microsoft Outlook til at opnå adgang til individuelle mapper, som du har givet dem tilladelse til. Du kan gøre dette ved at klikke på Åbn i menuen Filer i Outlook og derefter klikke på Anden brugers mappe.

Alternativt kan stedfortrædere åbne din postkasse ved at anføre den som en ekstra postkasse under fanen Avanceret i deres Outlook-profiler. Med denne metode vises din postkasse i stedfortræderens Outlook-mappetræ. Desuden giver denne metode mulighed for at opnå adgang til alle mapper i postkassen, som en stedfortræder er givet tilladelse til.

Du vil måske have, at stedfortræderen nogen gange har tilladelsen "Send på vegne af" og på andre tidspunkter tilladelsen "Send som". Følg disse trin for at indstille en stedfortræder med disse to tilladelser:
  • Tildel stedfortræderen tilladelsen "Full Mailbox Access". Dette kan ikke gøres gennem Outlook. Det skal i stedet gøres af en Active Directory-administrator på postkasseejerkontoen. Selvom du giver ejertilladelser til alle mapper i postkassen, er det ikke samme tilladelse som "Full Mailbox Access".
  • Du skal ikke tildele stedfortræderen tilladelsen "Send som". Hvis du tildeler stedfortræderen tilladelsen "Send som", sendes alle de e-mail, stedfortræderen sender, med tilladelsen "Send som". Stedfortræderen vil ikke længere kunne bruge tilladelsen "Send på vegne af".
I dette scenario skal stedfortrædere, der vil bruge tilladelsen "Send på vegne af", logge på deres egne postkasser. Hvis stedfortræderne svarer på eller videresender en e-mail, der allerede findes i én af dine mapper, sendes e-mailen automatisk på vegne af dig. Hvis stedfortræderne opretter en ny e-mail på dine vegne, skal de indtaste dit navn i boksen Fra, for at e-mailen sendes på dine vegne.

Uanset om stedfortræderen har åbnet dine mapper eller hele din postkasse som en sekundær postkasse, anvendes tilladelsen "Send på vegne af" på alle de e-mails, som stedfortræderen sender fra din postkasse, så længe stedfortræderens egen postkasse er den primære postkasse for den anvendte Outlook-profil.

Når stedfortrædere vil sende en e-mail på dine vegne, skal de logge på din postkasse med en separat Outlook-profil, der kun åbner din postkasse. E-mails, som stedfortræderne sender, mens de er logget på denne profil, sendes automatisk fra dig.

Søgning efter konti med tilladelsen "Full Mailbox Access" og uden tilladelsen "Send som"

Eksempelscriptet, der er beskrevet i dette afsnit, kan bruges til at søge på ét Active Directory-domæne ad gangen efter brugerkonti, hvor tilladelsen "Full Mailbox Access" er tildelt en postkasse uden tilladelsen "Send som".

Vigtigt! Inden du redigerer tilladelser, skal du se afsnittet Om postkasseejere med stedfortrædere.

Scriptet omfatter følgende tre tilstande:
  • Eksport: Du kan få vist en liste over brugere, der har tilladelsen "Full Mailbox Access", og som ikke har tilladelsen "Send som". Derefter kan du gennemse denne liste i Notesblok eller et andet tekstprogram for at fjerne alle konti, du ikke ønsker skal have tilladelsen "Send som".
  • Import: Du kan importere en liste over brugere, der har tilladelsen "Full Mailbox Access", og som også skal have tildelt tilladelsen "Send som". Bemærk, at du ikke kan bruge dette script til at tildele både tilladelsen "Full Mailbox Access" og "Send som". Hver enkelt konto skal allerede have tilladelsen "Full Mailbox Access", før de kan tildeles tilladelsen "Send som".
  • SetAll: Du kan tildele alle brugere i domænet, som allerede har tilladelsen "Full Mailbox Access" til en bestemt postkasse, tilladelsen "Send som". Der genereres en logfil med samme format som eksportfilen. Dette svarer til at køre i tilstanden Eksport eller Import uden at redigere eksportfilen.
Bemærk! Dette script omfatter ingen fortrydelsesfunktion.

Tilladelser, der kræves til scriptet

Du skal køre scriptet, mens du er logget på en administratorkonto i den skov, hvorfra postkasseejerens konti stammer. Scriptet virker muligvis ikke med en konto, der har administratorrettigheder på tværs af skoven. Scriptet fungerer muligvis heller ikke, hvis du kører det fra en arbejdsstation, der er knyttet til en anden skov end den skov, som postkasseejerens konti er tilknyttet.

I dette tilfælde kan du køre scriptet med flere adminstratorkonti i en enkelt logonsession ved at køre kommandoen RunAs.exe. Denne procedure kan være nyttig, hvis du har adskilt Active Directory- og Exchange Server-tilladelserne, og du ikke har en enkelt konto til administration af alle Exchange-servere eller alle Active Directory-domæner. Du kan åbne en kommandoprompt, der kører scriptet som hver administratorkonto. Overvej følgende eksempel:
RunAs.exe /user:domain\account CMD.EXE
Bemærk! Undgå at køre flere kopier af scriptet samtidig på det samme domæne.

Følgende felter er omfattet af eksportfilen. Felterne beskrives i den rækkefølge, de forekommer i i eksportfilen.
  • Display name of the mailbox owner account

    Der kan være mere end én linje på listen i outputfilen, som angiver samme postkasseejer. Denne funktionsmåde forekommer, hvis flere andre konti har tilladelsen "Full Mailbox Access" til samme postkasse.
  • Domain and logon name of an account that has the Full Mailbox Access permissions but not the Send As permission

    Den samme konto kan forekomme flere gange i eksportfilen, hvis kontoen har adgang til flere postkasser. Dette vil sandsynligvis gøre sig gældende for en programtjenestekonto eller for en person, der administrerer flere ressourcepostkasser.
  • Display Name of an account that has the Full Mailbox Access permission but not the Send As permission

    Dette felt findes ud over feltet "Logon Name" for at gøre det lettere for dig at identificere kontoen.
  • Delegate Status of the mailbox owner

    Hvis postkasseejeren har stedfortrædere, er værdien i dette felt "Has Delegates". Hvis postkasseejeren ikke har stedfortrædere, er værdien i dette felt "No Delegates".
  • Enabled or disabled status of the mailbox owner account

    Dette felt er nyttigt til identificering af ressourcepostkassekonti eller postkassekonti på tværs af skoven. Disse konti er typisk deaktiverede.
  • Full Distinguished Name of the mailbox owner account

    Dette felt er nyttigt til identificering af domænet og beholderen for postkasseejerkontoen.
  • Full Distinguished Name of the mailbox owner?s mailbox database

    Dette felt omfatter databasen, lagringsgruppen, serveren og den administrative gruppe for postkassen.
I det følgende eksempel har brugeren med logonnavnet "NoSendAs" tilladelsen "Full Mailbox Access", men ikke tilladelsen "Send som" for postkassen "Mailbox Owner":
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [yderligere felter er udeladt]

Administratorkonfiguration for scriptet

Dette script anvender Exchange-administrationsgrænseflader til kommunikation med Exchange-servere. Scriptet skal derfor køres fra en Exchange-server eller fra en arbejdsstation, som Exchange System Administrator er installeret på.

Redigering af eksportfilen

Eksportfilen er formateret som almindelig Unicode-tekst, så der kan anvendes tegnsæt fra flere forskellige sprogudgaver. Muligvis kan filen ikke vises korrekt eller redigeres i nogle tekstredigeringsprogrammer, eller disse programmer gemmer filen som ANSI- eller ASCII-baseret tekst. Unicode-baserede tekstfiler kan håndteres korrekt i programmet Notesblok i Microsoft Windows XP, Microsoft Windows 2000 og Microsoft Windows 2003. Desuden kan Unicode-baserede tekstfiler håndteres korrekt i Microsoft Excel.

Outputfilen er i tabulatorsepareret format med tredobbelte anførselstegn omkring værdierne for hvert enkelt felt. De tredobbelte anførselstegn anvendes for at gøre import og eksport fra Excel mere deterministisk. I Excel bliver de tredobbelte anførselstegn til enkelte anførselstegn og igen til tredobbelte anførselstegn, når filen igen gemmes som Unicode-baseret tekst. Se følgende anvisninger for at åbne og gemme en eksportfil korrekt i Excel.

Du kan også filtrere en eksportfil uden at bruge Excel med værktøjerne Find.exe eller Findstr.exe. Disse værktøjer følger med Windows. De gør det muligt at søge efter ord i en fil og kun vise de resultater, der indeholder de pågældende ord, eller kun vise de resultater, der ikke indeholder ordene. Hvis du f.eks. vil oprette en liste med alle postkasseejere i filen, som har stedfortrædere, skal du bruge en af følgende kommandoer til at oprette en fil, der kun indeholder linjer med strengen "Has Delegates":
Find.exe ?Has Delegates? OriginalFile.txt > HasDelegates.txt

Findstr.exe /C:?Has Delegates? OriginalFile.txt > HasDelegates.txt
Alternativt kan du anvende et filter til at udelukke alle postkasseejere, som har stedfortrædere. Parameteren /V outputter alle linjer, der ikke indeholder søgeordene. Ved hjælp af en af disse kommandoer kan du generere en fil, som udelukker alle "Has Delegates"-linjer:
Find.exe ?No Delegates? OriginalFile.txt > NoDelegates.txt

Find.exe /V ?Has Delegates? OriginalFile.txt > NoDelegates.txt

Findstr.exe /C:?No Delegates? OriginalFile.txt > NoDelegates.txt

Findstr.exe /V /C:?Has Delegates? OriginalFile.txt > NoDelegates.txt
Du kan også anvende disse kommandoer til at generere en fil, der indeholder en liste over alle de konti, som en programtjenestekonto har "Full Mailbox Access"-tilladelse, men ikke "Send som"-tilladelse til: Parameteren /I gør, at der ikke er forskel mellem store og små bogstaver i kommandoen:
Find.exe /I ?domain\ServiceAccount? OriginalFile.txt > ServiceAccount.txt

Findstr.exe /I /C:?domain\ServiceAccount? OriginalFile.txt > ServiceAccount.txt
Bemærk! Hvis du genererer en filtreret fil ved hjælp af Find.exe, skal du fjerne de overskrifter, som Find.exe opretter øverst i filen.

Undlad at bruge filnavne, som indeholder jokertegn (*.*), sammen med Findstr.exe. Hvis du bruger jokertegn, vil hver linje i outputfilen starte med filnavnet. Hvis du filtrerer med Find.exe eller Findstr.exe, skal du kontrollere outputfilen omhyggeligt for at sikre, at filteret har medtaget eller udelukket de ønskede konti.

I det følgende eksempel har brugeren med logonnavnet "NoSendAs" tilladelsen "Full Mailbox Access" men ikke tilladelsen "Send som" for postkassen "Mailbox Owner".
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [yderligere felter er udeladt]  

Om postkasseejere med stedfortrædere

En stedfortræder, som har tilladelsen "Full Mailbox Access" (også kaldet en "superstedfortræder"), bør normalt ikke tildeles tilladelsen "Send som". Når superstedfortræderen logger på postkasseejerens postkasse direkte, kan stedfortræderen anvende "Send som". Når stedfortræderen anvender delegeringsfunktionerne i Outlook (Åbn yderligere postkasser eller Åbn en anden brugers mappe), anvendes tilladelsen "Send på vegne af".

Tildel kun tilladelsen "Send som" til en superstedfortræder, hvis du vil have, at stedfortræderen altid skal sende beskeder som postkasseejeren og aldrig på vegne af postkasseejeren. Det anbefales, at du søger efter teksten "Has Delegates" i eksportfilen og derefter fastslår, om nogen af de angivne superstedfortrædere rent faktisk er stedfortrædere for postkasseejeren.

Kun superstedfortrædere er nævnt i eksportfilen. Almindelige stedfortrædere har ikke tilladelsen "Full Mailbox Access". Derudover vil en almindelig stedfortræder altid sende beskeder som postkasseejeren, hvis du tildeler tilladelsen "Send som" til en sådan stedfortræder. Dette gælder også, når den almindelige stedfortræder ikke har tilladelsen "Full Mailbox Access". Hvis du ved et uheld tildeler tilladelsen "Send som" til en stedfortræder, kan du nemt tilbagekalde tilladelsen senere.

Sådan åbnes en eksportfil i Excel

  1. Start Excel, før du åbner eksportfilen.
  2. Åbn filen som en tekstfil i Excel. Dette starter guiden Tekstimport.
  3. I guiden Tekstimport skal du redigere eller acceptere følgende indstillinger:
    • Oprindelig datatype: afgrænset
    • Begynd import ved række: 1
    • Filoprindelse: Unicode (UTF-8)
    • Afgrænsere: kun tabulering
    • Opfat efterfølgende afgrænsere som én: ikke markeret
    • Tekstkvalifikator: " (dobbelte anførselstegn)

Sådan gemmes en eksportfil efter redigering i Excel

  1. Klik på Gem som i eksportfilen.
  2. Giv filen et andet navn, så du bevarer en ikke-redigeret kopi af den oprindelige fil.
  3. Klik på Filer, klik på Gem som, skriv et filnavn til lagring af outputtet, og marker derefter Unicode-tekst på rullelisten Filtype.

Scriptsyntaks

Dette er et tekstbaseret script, der bør køres i et vindue med en kommandoprompt og ikke fra dialogboksen Kør. Du åbner et vindue med en kommandoprompt ved at klikke på Start, klikke på Kør, skrive CMD i boksen Åbn og derefter klikke på OK.

Fejllogfiler og eksportfiler gemmes i den aktuelle kommandopromptmappe. Du skal have tilladelser til at oprette filer i denne mappe.
Skriv følgende kommando for at få hjælp til kommandolinjer:
CSCRIPT AddSendAs.vbs
Skriv følgende kommando for at eksportere brugere, som har tilladelsen Full Mailbox Access, men ikke tilladelsen Send As for et domæne:
CSCRIPT AddSendAs.vbs [navn på domænecontroller] ?Export Example: CSCRIPT AddSendAs.vbs CORP-DC-1 ?Export
Eksportfilen genereres som Send_As_Export_H_MM_SS.txt.
Skriv følgende kommando for at importere en redigeret eksportfil:
CSCRIPT AddSendAs.vbs [navn på domænecontroller] ?Import [filnavn]Eksempel:


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

Sådan tildeles tilladelsen "Send som" for hver postkasse på domænet for alle brugere, der allerede har tilladelsen "Full Mailbox Access" til en postkasse

Bemærk! Hvis der i virksomheden findes stedfortrædere, der også har tilladelsen "Full Mailbox Access", bør du ikke bruge tilstanden SetAll. Hvis du alligevel bruger tilstanden SetAll i denne situation, tildeles stedfortræderne tilladelsen "Send som". Denne funktionsmåde kan medføre, at alle e-mails, som stedfortrædere sender, bruger tilladelsen "Send som" i stedet for tilladelsen "Send på vegne af". Du kan udbedre denne funktionsmåde ved at fjerne tilladelsen "Send som", der utilsigtet blev tildelt stedfortræderen.
CSCRIPT AddSendAs.vbs [domain controller name] ?SetAll


Eksempel:


CSCRIPT AddSendAs.vbs CORP-DC-1 ?SetAll
Hvis du bruger tilstanden SetAll, genereres eksportfilen som "Send_As_Export_H_MM_SS.txt". Du bør gemme denne fil, fordi den indeholder en oversigt over alle de konti, der blev ændret. Hvis du kørte scriptet igen, ville outputtet ikke indeholde samme liste over konti, fordi disse konti allerede har fået tildelt tilladelsen "Send som".

Fejl, som forekommer, mens du kører scriptet, gemmes i filen "Send_As_Errors_H_MM_SS.txt". Navnet på fejlfilen svarer til tidsstemplet hours_minutes_seconds på alle associerede eksportfiler.

Ændringer af script

Der kan være konti i virksomheden, der har tilladelser til mange objekter, men disse tilladelser skal ikke ændres. Hvis du vil reducere størrelsen af eksportfilen, kan du filtrere disse konti ved at ændre variablen FMA_EXCLUSIVE_LIST, som du finder næsten øverst i scriptet. Denne variabel viser som standard en række konti, der skal undertrykkes i scriptets output. Du kan tilføje flere konti med følgende format:
& "<Domain\Name>" & OUTPUT_DELIMITER
Du kan f.eks. ændre den følgende variabels værdi fra:
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
så den vises som følger:
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER & "Mydomain\Service1" & OUTPUT DELIMITER
Denne ændring undertrykker visning af kontoen "Mydomain\Service1" i eksportfilen sammen med "NT AUTHORITY\SELF" og "NT AUTHORITY\SYSTEM". Bemærk, at der skelnes mellem store og små bogstaver i værdien Domain\Name, og den skal stå præcist som den gør eller kommer til at gøre det i eksportfilen.

Der findes en anden redigerbar variabel, FMA_EXCLUSIVE_EXSVC, som har standardværdien "\Exchange Services" & OUTPUT_DELIMITER. "Exchange Services" er navnet på en konto, som får tilladelser via Active Directory Connector i scenarierne overflytning og sameksistens i Exchange 5.5 og Exchange 2000. Denne konto er oprettet på flere domæner, og den kan forekomme adskillige gange i eksportfilen, hvis den ikke undertrykkes.

Variablen FMA_EXCLUSIVE_EXSVC har kun plads til en konto og dens værdi. Der skelnes ikke mellem store og små bogstaver i kontonavnet. Den viste konto skal starte med en omvendt skråstreg (\) og må ikke indeholde det domæne, som kontoen tilhører. Kontoen undertrykkes for alle domæner, som den eksisterer på.

Hvis du har brugt tredjepartsværktøjer til overførsel eller metoder til synkronisering af mapper, kan der eksistere en anden konto på flere domæner, der har vidt udbredte tilladelser til brugerpostkasser. I dette scenarie kan du udskifte kontoens navn med "\Exchange Services."

Tip og advarsler

  • Undlad at kassere log- og fejlfiler, der genereres af scriptet. Disse kan være værdifulde til fejlfinding eller senere tilbageføring af ændringer. Husk, at så snart du har tildelt en konto tilladelsen "Send som", logføres den ikke længere i eksportfilen.
  • Hvis en Exchange-server eller -database er nede, forsinker det behandlingen af scriptet. I så fald kan du sortere eksportfilen efter database og flytte linjer, der er associeret med en standset database, til en anden fil til senere import.
  • Scriptet undertrykker output af konti, hvor logonnavnet ender på "$" eller på NT AUTHORITY\SYSTEM. Disse systemkonti kræver normalt ikke tilladelsen "Send som", og størrelsen af eksportfilen reduceres stærkt, hvis de fjernes fra den.
  • Eksportfilen skal være i Unicode-format, før den kan importeres. Hvis du utilsigtet gemte filen som ANSI-tekst, kan du løse problemet ved at åbne filen i Notesblok og gemme den som Unicode-tekst.
  • Hvis import ikke fungerer, kan du udføre fejlfinding med testkonti og en enkelt linje i importfilen. Du bør konfigurere en testkonto, så den har en postkasse på en kørende Exchange-server og derefter tildele endnu en testkonto tilladelsen "Full Mailbox Access" men ikke tilladelsen "Send som".
  • Dette script omfatter ingen fortrydelsesfunktion. Hvis du vil fjerne de "Send som"-tilladelser, du har tildelt med dette script, skal du generere et andet script eller fjerne dem manuelt. En fortrydelsestilstand er udeladt for at undgå, at dette script bruges til at fjerne "Send som"-tilladelser for alle brugere i en virksomhed.
  • Scriptet håndterer ikke en konto, der har fået tildelt fuld kontrol over et brugerobjekt samt "Full Mailbox Access", korrekt. "Fuld kontrol" omfatter tilladelsen "Send som", men scriptet eksporterer kontoen, som om den ikke havde tilladelsen "Send som". Dette kan øge størrelsen på eksportfilen, men det er ikke skadeligt at importere filen og give tilladelsen "Send som" bredt til sådanne konti.
  • Active Directory-brugerkonti med entydige navne, som indeholder faner eller ugyldige sæt af dobbelte anførselstegn, kan ikke behandles med dette script. Scriptet kan behandle et navn korrekt, der indeholder gyldige sæt dobbelte anførselstegn ? f.eks.
    "CN=First "Nickname" Last,DC=domain,DC=com"
  • Excel kan håndtere filer med op til 65.535 linjer. Hvis din outputfil er større end det, skal du opdele den i sektioner, før du indlæser den i Excel.
  • Filen Send_As_Errors viser konti, hvor tilladelser ikke kunne læses eller skrives. Hvis andre konti på domænet blev behandlet korrekt, har disse konti muligvis noget til fælles, som gør, at scriptet ikke fungerer sammen med dem. Almindelige problemer omfatter følgende:
    • Manglende administratortilladelser til at få vist eller angive kontienes egenskaber.
    • Exchange-postkasselageret kører ikke.
    • Arbejdsstationen er ikke del af det samme domæne.
    • Administratorkontoen, der anvendes, er ikke fra samme område.
Scriptet køres ved at kopiere og indsætte alle linjer mellem BEGIN SCRIPT og END SCRIPT i et almindeligt tekstredigeringsprogram, f.eks. Notesblok. Gem scriptet som AddSendAs.vbs. BEGIN SCRIPT
Option Explicit

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

'Define exclusive list, if FMA is given to any user in this list, it's ignored.  If you 
'want to modify this list, please be sure to follow the same format. Every alias has to 
'have a OUTPUT_DELIMITER before and after it
Dim FMA_EXCLUSIVE_LIST
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
Dim FMA_EXCLUSIVE_EXSVC
FMA_EXCLUSIVE_EXSVC = "\Exchange Services" & OUTPUT_DELIMITER

'Permission Type: Allow or Deny
const ACCESS_ALLOWED_OBJECT_ACE_TYPE  = 5
const ADS_ACETYPE_ACCESS_ALLOWED = &h0
const ADS_ACETYPE_ACCESS_ALLOWED = &h0

'Flags: Specifies Inheritance
const ADS_ACEFLAG_INHERIT_ACE = &h2
const ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE = &h4
const ADS_ACEFLAG_INHERIT_ONLY_ACE = &h8
const ADS_ACEFLAG_INHERITED_ACE = &h10
const ADS_ACEFLAG_VALID_INHERIT_FLAGS = &h1f
const ADS_ACEFLAG_SUCCESSFUL_ACCESS = &h40
const ADS_ACEFLAG_FAILED_ACCESS = &h80

'Declare ADSI constants
Const ADS_OPTION_SECURITY_MASK = 3
Const ADS_OPTION_REFERRALS	= 1
Const ADS_SECURITY_INFO_DACL = 4
Const ADS_CHASE_REFERRALS_NEVER = &h00 
Const ADS_CHASE_REFERRALS_SUBORDINATE = &h20 
Const ADS_CHASE_REFERRALS_EXTERNAL = &h40

'output file name
Const EXPORT_FILE = "Send_As_Export"
Const ERROR_FILE = "Send_As_Errors"

' script mode
const MODE_INVALID = -1 
const MODE_SETALL = 0
const MODE_EXPORT = 1
const MODE_IMPORT = 2
const SETALL = "-SETALL"
const EXPORT = "-EXPORT"
const IMPORT = "-IMPORT"

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

' column index in import/export file
Const COLUMN_INDEX_USERDISPLAYNAME = 0
Const COLUMN_INDEX_FMAALIAS = 1
Const COLUMN_INDEX_FMADISPLAYNAME = 2
Const COLUMN_INDEX_IFPUBLICDELEGATE = 3
Const COLUMN_INDEX_MAILBOXSTATUS = 4
Const COLUMN_INDEX_USERADSPATH = 5
Const COLUMN_INDEX_HOMEMDB = 6

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

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

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

Dim objUser
Dim objSDMailBox
Dim objSDNTsecurity
Dim objDACLNTSD
Dim objNewACE

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

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

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

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

sDCServer = WScript.Arguments(ARG_INDEX_DC)

CreateOutputFiles

If ( cScriptMode = MODE_SETALL Or cScriptMode = MODE_EXPORT ) Then
	Dim sDomainContainer
	If (cScriptMode = MODE_SETALL) Then
		Dim strInput 
		WScript.StdOut.WriteLine("WARNING: If you continue, each account in the domain that has")
		WScript.StdOut.WriteLine("Full Mailbox Access permission for a given mailbox will also be")
		WScript.StdOut.WriteLine("granted permission to Send As the mailbox owner.")
		WScript.StdOut.WriteLine()
		WScript.StdOut.WriteLine("To preview the list of mailboxes before granting Send As,")
		WScript.StdOut.WriteLine("cancel this operation and use the -Export mode of this script.")
		WScript.StdOut.WriteLine()
		WScript.StdOut.Write("Press Y to continue or any other key to cancel: ")
		strInput = WScript.StdIn.ReadLine()
		If (UCase(strInput) <> UCase("Y")) Then
			WScript.Quit
		End If	
	End If
	
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("""!"" indicates an error processing an object.")
	WScript.StdOut.WriteLine("     Check " & sErrorsFilename)
	WScript.StdOut.WriteLine("Starting...")
	WScript.StdOut.WriteLine()

	err.Clear	
	Set rootDSE = GetObject("LDAP://" & sDCServer & "/RootDSE")
	sDomainContainer = rootDSE.Get("defaultNamingContext")
	WScript.StdOut.WriteLine("Finding domain controller [ " & sDCServer & " ] for domain [ " & sDomainContainer & " ]")
	
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Failed to find the domain or domain controller, error:" & err.Description)
		objfileError.WriteLine("Failed to find the domain or domain controller, error:" & err.Description)
		WScript.Quit
	End If
			
	err.Clear	
	Set conn = CreateObject("ADODB.Connection")
	Set objCommand = CreateObject("ADODB.Command")
	conn.Provider = "ADSDSOObject"
	conn.Open "ADs Provider"
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Failed to bind to Active Directory server, error:" & err.Description)
		objfileError.WriteLine("Failed to bind to Active Directory server, error:" & err.Description)
		WScript.Quit
	End If

	Set objCommand.ActiveConnection = conn
	WScript.StdOut.WriteLine("Searching for mailbox owner user accounts in " & sDomainContainer)
	
	objCommand.CommandText  = "<LDAP://" & sDCServer & "/" & sDomainContainer & ">;(&(&(& (mailnickname=*) (| (&(objectCategory=person)(objectClass=user)(msExchHomeServerName=*)) ))));adspath;subtree"
	objCommand.Properties("searchscope") = ADS_SCOPE_SUBTREE
	objCommand.Properties("Page Size") = 100
	objCommand.Properties("Timeout") = 30 
	objCommand.Properties("Chase referrals") = (ADS_CHASE_REFERRALS_SUBORDINATE Or ADS_CHASE_REFERRALS_EXTERNAL)

	err.Clear	
	Set rsUsers = objCommand.Execute
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Search for mailbox owners failed, error:" & err.Description)
		objfileError.WriteLine("Search for mailbox owners failed, error:" & err.Description)
		WScript.Quit
	End If

	If (rsUsers.RecordCount = 0) Then
		WScript.StdOut.WriteLine("No mailbox owner user accounts could be seen in " & sDomainContainer & ".")
		objfileError.WriteLine("No mailbox owner user accounts found in " & sDomainContainer & ".")
		fError = True		
	End If

	While Not rsUsers.EOF
		If (fOneError = True) Then
			WScript.StdOut.Write("!")
		Else
			WScript.StdOut.Write(".")
		End If
		fOneError = False
		
		'Skip any mailbox object in Microsoft Exchange System Objects container
		If (0 = Instr(rsUsers.Fields(0).Value, MESO)) Then
			err.Clear
			Set objUser = GetObject(rsUsers.Fields(0).Value)
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to get user object: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Error: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			Set objSDMailBox = objUser.MailboxRights
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to get mailbox rights: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Error: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			Set objSDNTsecurity = objUser.ntSecurityDescriptor
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to get NTSD: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Error: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			
			Set objDACLNTSD = Nothing
			If (objUser.AccountDisabled) Then
				sMailboxStatus = "Disabled"
			Else
				sMailboxStatus = "Enabled"
			End If

			'Query this user's publicDelegates list
			err.Clear
			msPublicDelegates = objUser.Get("publicDelegates")
			If (err.number <> 0) Then
				'This user doesn't have publicDelegates list set
				sIfPublicDelegate = STRNO
				err.Clear
			Else
				sIfPublicDelegate = STRYES
			End If
			
			err.Clear 			
			FindAllFMAUsers objSDMailBox
			
			If (TotalACE > dArraySize) Then
			'Needs to allocate bigger size array
				dArraySize = TotalACE + 1
				ReDim Preserve sTrusteeAlias(dArraySize)
				FindAllFMAUsers objSDMailBox
			End If
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to query mailbox rights of user: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Error: " & err.Description)
				err.Clear
				fError = True
				fOneError = True
			End If
			
			If TotalACE > 0 Then
				Set objDACLNTSD = objSDNTsecurity.DiscretionaryAcl

				For i = 0 to TotalACE - 1 Step 1
					
					'Check if we already have Send As ACE in NT security descriptor
					'If it exists, either allow or deny, we don't need to add send as to it 
					CheckSendAsACE objDACLNTSD, sTrusteeAlias(i)
					
					'Note: deny entries take precedence over allow entries. 
					'If there is FMA deny ACE, skip it even if we find FMA allow ACE 
					IfFMAAllowed(sTrusteeAlias(i) & OUTPUT_DELIMITER)
					If ((fFMAAllowed = True) And (fACESendasFound = 0)) Then
						If cScriptMode = MODE_SETALL Then
							Set objNewACE = CreateObject ("AccessControlEntry")
							objNewACE.AceFlags = 0 
							objNewACE.AceType = ACCESS_ALLOWED_OBJECT_ACE_TYPE
							objNewACE.AccessMask = EX_MB_SEND_AS_ACCESSMASK 
							objNewACE.Flags = 1
							objNewACE.ObjectType = EX_MB_SEND_AS_GUID
							objNewACE.Trustee = sTrusteeAlias(i)

							objDACLNTSD.AddAce objNewAce
						End If
			
						'Query trustee(FMA user) to get its displayName
						Dim rsTrustee
						Dim objTrustee
						Dim dPosition
						Dim sAlias
					
						dPosition = inStr(1, sTrusteeAlias(i), "\")
						sAlias = mid(sTrusteeAlias(i), dPosition + 1)
				
						Set objCmdDisplayName = CreateObject("ADODB.Command")			
						Set objCmdDisplayName.ActiveConnection = conn
						objCmdDisplayName.CommandText  = "<LDAP://" & sDomainContainer & ">;(&(&(& (mailnickname=" & sAlias & ") (| (&(objectCategory=person)(objectClass=user)(msExchHomeServerName=*)) ))));adspath;subtree"
						objCmdDisplayName.Properties("searchscope") = ADS_SCOPE_SUBTREE
						objCmdDisplayName.Properties("Page Size") = 100
						objCmdDisplayName.Properties("Timeout") = 30 
						objCmdDisplayName.Properties("Chase referrals") = (ADS_CHASE_REFERRALS_SUBORDINATE Or ADS_CHASE_REFERRALS_EXTERNAL)
						
						Set rsTrustee = objCmdDisplayName.Execute				
						Set objTrustee = GetObject(rsTrustee.Fields(0).Value)
						
						If (err.number <> 0) Then
							'Failed to query FMA user's display name, use its alias
							sFMAUserDisplayName = sAlias							
						Else
							sFMAUserDisplayName = objTrustee.displayName							
						End If
	
						'output to export file
						err.Clear
						objfileExport.WriteLine ("""""""" & objUser.displayName & OUTPUT_DELIMITER & sTrusteeAlias(i) & OUTPUT_DELIMITER & sFMAUserDisplayName & OUTPUT_DELIMITER & sIfPublicDelegate & OUTPUT_DELIMITER & sMailboxStatus & OUTPUT_DELIMITER & rsUsers.Fields(0).Value & OUTPUT_DELIMITER & objUser.homeMDB & """""""")
						If (err.number <> 0) Then
							objfileError.WriteLine("User " & rsUsers.Fields(0).Value & " could not be added to the export file. You should set permissions manually for this user.")
							objfileError.WriteLine("Error: " & err.Description)
							err.Clear
							fError = True
							fOneError = True
						End If
						Set objCmdDisplayName = Nothing
						Set rsTrustee = Nothing
						Set objTrustee = Nothing
					End If
				Next
					
				If cScriptMode = MODE_SETALL Then
					err.Clear
					objSDNTsecurity.DiscretionaryAcl = objDACLNTSD
					objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
					objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
					objUser.SetInfo
					If (err.number <> 0) Then
						objfileError.WriteLine("Failed to update ADSI for user: " & rsUsers.Fields(0).Value)
						objfileError.WriteLine("Error: " & err.Description)
						err.Clear
						fError = True
						fOneError = True
					End If
				End If

				TotalACE = 0
				Set objSDMailbox = Nothing
				Set objSDNTsecurity = Nothing
				Set objUser = Nothing
				Set objDACLNTSD = Nothing
			End If
		
		End If	
		rsUsers.MoveNext
	Wend
End If

If (cScriptMode = MODE_IMPORT) Then
	Dim sOneRow
	Dim sArraySplit
	Dim objUserItem
	Dim UserPath
	Dim objUserSD
	Dim objUserDACL
	Dim fNeedToAddSendAs
	
	sImportFilePath = WScript.Arguments(ARG_INDEX_FILENAME)

	WScript.StdOut.WriteLine("If you continue, each account listed in " & sImportFilePath)
	WScript.StdOut.WriteLine("that has Full Mailbox Access permission for a given mailbox")
	WScript.StdOut.WriteLine("will also be granted permission to Send As the mailbox owner.")
	WScript.StdOut.WriteLine()
	WScript.StdOut.Write("Press Y to continue or any other key to cancel: ")
	strInput = WScript.StdIn.ReadLine()
	If (UCase(strInput) <> UCase("Y")) Then
		WScript.Quit
	End If	
	WScript.StdOut.WriteLine("Starting...")
	WScript.StdOut.WriteLine()

	UserPath = EMPTYSTRING	
	err.Clear	
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set objfileImport = objFSO.OpenTextFile(sImportFilePath, ForReading, False, TristateTrue)
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Failed to open import file " & sImportFilePath & ", error:" & err.Description)
		objfileError.WriteLine("Failed to open import file " & sImportFilePath & ", error:" & err.Description)
		WScript.Quit
	End If	

	fNeedToAddSendAs = False
	Do While objfileImport.AtEndOfStream <> True
		If (fOneError = True) Then
			WScript.StdOut.Write("!")
		Else
			WScript.StdOut.Write(".")
		End If
		fOneError = False

		err.Clear
		sOneRow = objfileImport.ReadLine
		sArraySplit = Split(sOneRow , OUTPUT_DELIMITER)
		If (err.number <> 0) Then
			objfileError.WriteLine("Failed to parse one row: " & sOneRow )
			objfileError.WriteLine("Error: " & err.Description)
			err.Clear
			fError = True
			fOneError = True
		End If
		
		If (UserPath <> sArraySplit(COLUMN_INDEX_USERADSPATH)) Then
			'A new user
			If (fNeedToAddSendAs = True ) Then
				'update existing user
				err.Clear
				objSDNTsecurity.DiscretionaryAcl = objDACLNTSD
				objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
				objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
				objUser.SetInfo
				If (err.number <> 0) Then
					objfileError.WriteLine("Failed to update permissions for user: " & UserPath)
					objfileError.WriteLine("Error: " & err.Description)
					fError = True
					fOneError = True
				End If
			End If
						
			fNeedToAddSendAs = False
			Set objUser = Nothing
			Set objSDNTsecurity = Nothing
			Set objDACLNTSD = Nothing

			UserPath = sArraySplit(COLUMN_INDEX_USERADSPATH)
			err.Clear
			Set objUser = GetObject(UserPath)
			Set objSDNTsecurity = objUser.ntSecurityDescriptor
			Set objDACLNTSD = objSDNTsecurity.DiscretionaryACL			
			If (err.number <> 0) Then
				objfileError.WriteLine("Failed to get user object: " & UserPath)
				objfileError.WriteLine("Error: " & err.Description)
				err.Clear
				fError = True
				fOneError = True
			End If
		End If
	
		'Add newACE   Do we need this check?
		CheckSendAsACE objDACLNTSD, sArraySplit(COLUMN_INDEX_FMAALIAS)
		If (fACESendasFound = 0) Then
			Set objNewACE = CreateObject ("AccessControlEntry")
			objNewACE.AceFlags = 0 
			objNewACE.AceType = ACCESS_ALLOWED_OBJECT_ACE_TYPE
			objNewACE.AccessMask = EX_MB_SEND_AS_ACCESSMASK 
			objNewACE.Flags = 1
			objNewACE.ObjectType = EX_MB_SEND_AS_GUID
			objNewACE.Trustee = sArraySplit(COLUMN_INDEX_FMAALIAS)

			objDACLNTSD.AddAce objNewACE
			fNeedToAddSendAs = True			
		End If
	Loop
	
	If (fNeedToAddSendAs = True ) Then
		'update the last user
		err.Clear
		objSDNTsecurity.DiscretionaryAcl = objDACLNTSD
		objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity )
		objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL
		objUser.SetInfo
		If (err.number <> 0) Then
			objfileError.WriteLine("Failed to update permissions for user: " & UserPath)
			objfileError.WriteLine("Error: " & err.Description)
			fError = True
		End If
	End If

End If

objFSO.Close
objfileImport.Close
objfileExport.Close
objfileError.Close

Set objFSO = Nothing
Set objfileImport = Nothing
Set objfileExport = Nothing
Set objfileError = Nothing
Set objCommand = Nothing
Set conn = Nothing

WScript.StdOut.WriteLine()
If (fError = True) Then
	WScript.StdOut.WriteLine("Finished with one or more errors. See " & sErrorsFilename)
Else
	WScript.StdOut.WriteLine("Finished successfully. No errors were encountered.")
End If

Function FindAllFMAUsers (objSD)
Dim objACL
Dim objACE
Dim intACECount
Dim strIndent
Dim dAccessMaskBit
Dim dPosition
Dim sUserAlreadyFound

	On Error Resume Next
	err.Clear
	TotalACE = 0
	sFMADeniedList = EMPTYSTRING
	sFMAExplicitAllow = EMPTYSTRING
	sUserAlreadyFound = OUTPUT_DELIMITER
	intACECount = 0
	Set objACL = objSD.DiscretionaryAcl
	intACECount = objACL.AceCount

	If intACECount Then
		' Open discretionary ACL (DACL) data.
		For Each objACE In objACL		
			
		dPosition = inStr(1, objACE.Trustee, "$")
		If ((0 = Instr(UCase(objACE.Trustee & OUTPUT_DELIMITER), UCase(FMA_EXCLUSIVE_EXSVC))) And (0 = Instr(sUserAlreadyFound, OUTPUT_DELIMITER & objACE.Trustee & OUTPUT_DELIMITER)) And (0 = Instr(FMA_EXCLUSIVE_LIST, OUTPUT_DELIMITER & objACE.Trustee & OUTPUT_DELIMITER)) And (dPosition <> Len(objACE.Trustee)) And ((objACE.AccessMask And EX_FULLMailbox_AccessMask) <>0) And ((objACE.AceType = ADS_ACETYPE_ACCESS_ALLOWED) Or (objACE.AceType = ACCESS_ALLOWED_OBJECT_ACE_TYPE) )) Then
			If (TotalACE < dArraySize) Then
				sTrusteeAlias(TotalACE) = objACE.Trustee
				sUserAlreadyFound = sUserAlreadyFound & objACE.Trustee & OUTPUT_DELIMITER
			End If
			TotalACE = TotalACE + 1	
			If ((objACE.AceFlags And ADS_ACEFLAG_INHERITED_ACE) = 0) Then
				'Keep a list who explictly set FMA at mailbox level
				sFMAExplicitAllow = sFMAExplicitAllow & objACE.Trustee & OUTPUT_DELIMITER			
			End If
		ElseIf (( (objACE.AccessMask And EX_FULLMailbox_AccessMask) <>0 ) And (objACE.AceType = ADS_ACETYPE_ACCESS_DENIED)) Then
			'Keep a list who denied FMA, use OUTPUT_DELIMITER as demiliter, 
			'include both inherited and explicit set at mailbox level
			sFMADeniedList = sFMADeniedList & objACE.Trustee & OUTPUT_DELIMITER			
		End If
		Next
	End If

	Set objACL = Nothing
End Function

Function CheckSendAsACE (objDiscretionaryACL, sTAlias)
Dim objACE
Dim intACECount

	err.Clear
	fACESendasFound = 0
	intACECount = objDiscretionaryACL.AceCount

	If intACECount Then
		For Each objACE In objDiscretionaryACL	
			err.Clear
			If ( (objACE.Trustee = sTAlias) And (objACE.ObjectType = EX_MB_SEND_AS_GUID) ) Then
				fACESendasFound = 1
			End If
			If (err.number <> 0) Then
				objfileError.WriteLine("Could not read permissions for this user: " & sTAlias)
				objfileError.WriteLine("Error: " & err.Description)
				err.Clear
				fError = True
				fOneError = True
			End If			
		Next			
	End If	
End Function

Function IfFMAAllowed(sTrustee)
	'FMA allow ACE has been found. Assume it's true
	fFMAAllowed = True
	
	If ( (0 <> Instr(sFMADeniedList, sTrustee)) And (0 = Instr(sFMAExplicitAllow, sTrustee))	) Then
		'If Denied ACE is found, and no explicit allow FMA 
		fFMAAllowed = False
	End If
End Function

Function CreateOutputFiles
	Dim sTimeArray
	Dim sTimeShort
	Dim sTime
	
	err.Clear
	sTime = Time
	sTimeShort = Split(sTime, " ")
	sTimeArray = Split(sTimeShort(0), ":")

	Set objFSO = CreateObject("Scripting.FileSystemObject")
	sErrorsFileName = ERROR_FILE & "_" & sTimeArray(0) & "_" & sTimeArray(1) & "_" & sTimeArray(2) & ".txt"
	Set objfileError = objFSO.OpenTextFile(sErrorsFileName, ForWriting, True, TristateTrue)

	If (cScriptMode = MODE_SETALL Or cScriptMode = MODE_EXPORT)	Then
		sExportFileName = EXPORT_FILE & "_" & sTimeArray(0) & "_" & sTimeArray(1) & "_" & sTimeArray(2) & ".txt"
		Set objfileExport = objFSO.OpenTextFile(sExportFileName, ForWriting, True, TristateTrue)	
	End If
	
	If err.number <> 0 Then
		WScript.StdOut.WriteLine("Unable to create export or error files: " & err.Description)
		objfileError.WriteLine("Unable to create export or error files: " & err.Description)
		fError = True
		fOneError = True
		WScript.Quit	
	End If

End Function

Function DisplaySyntax
	WScript.StdOut.WriteLine("Syntax:")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Export accounts with Full Mailbox Access that do not have Send As permission:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Export")
	WScript.StdOut.WriteLine("         NOTE: The list will be saved to Send_As_Export_HH_MM_SS.txt")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Grant Send As to all accounts listed in an export file:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Import ""filename.txt""")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Grant Send As to all accounts in the domain with Full Mailbox Access:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -SetAll")
	WScript.StdOut.WriteLine("         NOTE: Accounts will be listed in Send_As_Export_HH_MM_SS.txt")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("For all modes, errors are saved to Send_As_Errors_HH_MM_SS.txt")

	WScript.Quit	
End Function
END SCRIPT

Microsoft leverer kun programmeringseksempler som illustration ? uden nogen form for garanti, det være sig udtrykkelig eller underforstået. Dette omfatter, men er ikke begrænset til, det stiltiende ansvar for salgbarhed eller egnethed til bestemte formål. Det forudsættes i denne artikel, at du kender ovennævnte programmeringssprog samt de værktøjer, der anvendes til at oprette og foretage fejlfinding i procedurer. Microsofts supportmedarbejdere kan hjælpe med at forklare funktionaliteten i en bestemt procedure, men vil ikke ændre eksemplerne, så de giver yderligere funktionalitet, eller oprette procedurer, der passer specielt til dine behov.
Yderligere oplysninger om de supportmuligheder, der er tilgængelige hos Microsoft, finder du ved at besøge følgende websted til Microsoft:
http://support.microsoft.com/contactus/?ws=support
De tredjepartsprodukter, der omtales i denne artikel, er produceret af firmaer, som er uafhængige af Microsoft. Microsoft giver ingen garanti, hverken underforstået eller på anden måde, hvad angår disse produkters ydeevne eller pålidelighed.

Egenskaber

Artikel-id: 912918 - Seneste redigering: 26. november 2007 - Redigering: 17.2
Oplysningerne i denne artikel gælder:
  • Microsoft Exchange 2000 Server Standard
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange Server 2003 Enterprise Edition
Nøgleord: 
kbtshoot kbpending kbbug kbprb KB912918

Send feedback

 

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