Før versjonene av filen Store.exe som er angitt under Årsak, fikk brukere som fikk full postbokstilgang, implisitt tilgang til å sende meldinger i postbokseierens navn. Dette betydde at en annen konto med full postbokstilgang kunne sende e-postmeldinger som så ut som om de var sendt av postboksens eier.
Mange Microsoft Exchange-kunder har bedt om at Send som-tillatelsen ble skilt ut fra full postbokstilgang av følgende to årsaker:
- For å hindre e-postforfalskninger.
- For å sikre at e-postmeldinger som er sendt av en representant, alltid kan skilles klart fra e-postmeldinger som er sendt av den faktiske eieren av postboksen.
Alle nye versjoner av Exchange Information Store vil nå uttrykkelig kreve en Send som-tillatelse for å kunne sende e-post i postbokseierens navn. Imidlertid finnes følgende tre unntak til dette kravet:
- Eierkontoen for postboksen krever ikke uttrykkelig noen Send som-tillatelse for sin egen postkasse.
- Den tilknyttede eksterne kontoen for en postboks krever ikke noen uttrykkelig Send som-tillatelse.
- En representantkonto som også har full postbokstilgang, krever ikke noen uttrykkelig Send som-tillatelse.
Hvis du vil ha mer informasjon om disse unntakene, kan du se under Mer informasjon.
Alle andre kontoer som har fått delvis eller full tilgang til en postboks, må nå uttrykkelig gis Send som-tillatelsen for postboksens eierkonto for å kunne sende e-post i postbokseierens navn. Dette gjelder også programtjenestekontoer som utfører funksjoner som å sende e-postmeldinger for brukere av mobile enheter.
Send som-tillatelsen må gis tjenestekontoen på hvert brukerobjekt som eier en postboks. Du kan ikke gi Send som-tillatelsen for en Exchange-server eller et databaseobjekt og oppnå at Send som-tillatelsen blir gitt for alle postbokser i databasen.
Dette skjer fordi Send som-tillatelsen er en Active Directory-tillatelse som gjelder de Active Directory-objektene den er angitt for. Ved å gi Send som-tillatelse til et databaseobjekt får du bare Send som-tillatelse for selve databasen. Du får imidlertid ikke tillatelse til de brukerne med Send som-tillatelser som har postbokser i databasen.
Obs! Når du gir tillatelsen Motta som for en Exchange-database, har det samme virkning som å gi full postbokstilgang til alle postboksene i databasen. Dette gjelder ikke for Send som-tillatelsen.
Med Send som-tillatelsen gjelder tillatelsen bare selve databaseobjektet. Det gjelder ikke postboksene i databasen. Motta som-tillatelsen arves automatisk av alle postbokser i databasen.
Det er enklest å forstå forskjellen mellom de to tillatelsene hvis du tenker på alle postboksene i databasen som mapper i én enkelt postboks (postboksen "database"). Hvis du har full tilgang til databasen, har du tilgangstillatelse til alt innholdet i databasen. Dette gjelder også alle postboksene.
Send som-tillatelsen gjelder identiteten for et Active Directory-brukerobjekt, ikke postboksinnhold som er lagret i en database. Når e-postmeldinger sendes, sendes de ikke fra en bestemt postboks eller database, men fra en bruker. Brukeren kan være eieren av postboksen eller en annen konto som har Send som-tillatelse.
Følg disse trinnene for å gi en annen konto tillatelse til å sende i postbokseierens navn:
- Start administrasjonskonsollen for Active Directory-brukere og -datamaskiner.
- Gå til Vis-menyen, og kontroller at alternativet Avanserte funksjoner er valgt. Hvis dette alternativet ikke er valgt, vil ikke Sikkerhet-siden være synlig for brukerkontoobjekter.
- Åpne egenskapene for brukerkontoen som eier postboksen.
- Klikk kategorien Sikkerhet.
- Hvis kontoen som skal ha Send som-tillatelse for denne brukeren, ikke allerede vises på listen med gruppe- eller brukernavn, legger du den til.
- Klikk Tillat for Send som-tillatelsen for den aktuelle kontoen, i boksen Tillatelser.
- Klikk OK.
- Start tjenesten Microsoft Exchange Information Store på nytt på den påvirkede Exchange-serveren.
Obs! Hvis du ikke starter tjenesten Microsoft Exchange Information Store på nytt, vil tjenesten oppdatere tillatelsesbufferen slik at den nye tillatelsen trer i kraft i henhold til verdien som er angitt i følgende registerundernøkkel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem
Verdinavn: Aldersgrense for postboksbuffer
Verditype: REG_DWORD
Radix: Desimal
Verdidata:
Aldersgrensen for postboksbufferen i minutter.
Standardverdien for denne registeroppføringen er 120 minutter (to timer). Hvis du endrer denne registeroppføringen, må du starte tjenesten Microsoft Exchange Information Store på nytt.
Obs! Hvis du angir tidsavbruddsverdiene til en svært lav verdi, kan det påvirke ytelsen til serveren.
Gi Send som-tillatelse for flere kontoer
Det er lagt ved et eksempelskript på slutten av denne artikkelen som søker gjennom et katalogtjenestedomene for Active Directory etter kontoer med full postbokstilgang men uten Send som-tillatelse for en postboks. Dette er egenskapene for en tjeneste- eller ressurskonto som vil bli påvirket av denne sikkerhetsendringen. Skriptet kan generere en eksportfil som du kan lese gjennom, redigere og deretter importere igjen for å gi Send som-tillatelse til kontoer som trenger denne tillatelsen.
Du kan også gi Send som-tillatelse som arv til alle brukerobjekter i et Active Directory-domene eller i en beholder. Hvis du gir Send som-tillatelsen på denne måten, kan du gi tillatelsen til objekter som du ikke hadde tenkt skulle få den. I tillegg kan du miste tillatelsen for objekter som er flyttet fra beholderen. Derfor er denne metoden ikke å foretrekke, og den kan medføre sikkerhetsbrudd som du bør tenke nøye over, før du implementerer den.
Følg disse trinnene for å gi én enkelt konto Send som-tillatelse for alle brukerkontoer i et Active Directory-domene eller en beholder:
- Start administrasjonskonsollen for Active Directory-brukere og -datamaskiner.
- Gå til Vis-menyen, og kontroller at alternativet Avanserte funksjoner er valgt. Hvis dette alternativet ikke er valgt, vil ikke Sikkerhet-siden være synlig for domene- og beholderobjekter.
- Åpne egenskapene for domenet eller beholderen, og klikk deretter Sikkerhet-siden.
- Klikk Avansert.
- Hvis kontoen som trenger tillatelsen, ikke allerede vises på listen, klikker du Legg til og merker kontoen. Ellers dobbeltklikker du kontoen for redigering.
- Klikk Brukerobjekter i listen Gjelder på.
- Gi kontoen Send som-tillatelsen.
- Klikk OK til du er ute av alle dialogboksene og har lagret alle endringene.
Obs! Skriptet som beskrives mot slutten av denne artikkelen, vurderer også nedarvede tillatelser. Hvis du tilordner Send som-tillatelsen ved hjelp av denne metoden, vil derfor kontoer med nedarvede Send som-tillatelser, bli usynlige for skriptet. For å kunne behandle disse kontoene sammen med skriptet senere, må du først fjerne den arvede Send som-tillatelsen.
Spesielle regler for adminSDHolder-beskyttede kontoer
Hvis du bruker skriptet til å gi Send som-tillatelsen til en postbokseier som også er domeneadministrator, vil Send som-tillatelsen ikke fungere. Vi anbefaler på det sterkeste at du ikke postboksaktiverer brukerkontoer med domeneadministratorrettigheter eller som er adminSDHolder-beskyttet.
Objektet
adminSDHolder er en mal for kontoer som har store administrative Active Directory-rettigheter. Alle kontoer som er beskyttet av objektet
adminSDHolder, må ha tilgangsrettigheter som tilsvarer dem som vises i selve
adminSDHolder-objektet, slik at uønsket heving av tilgangsnivå ikke kan forekomme.
Hvis du endrer rettighetene eller tillatelsene i
adminSDHolder-objektet for en beskyttet konto, vil en bakgrunnsoppgave reversere endringen i løpet av noen få minutter. Hvis du for eksempel gir Send som-tillatelse til et domeneadministratorobjekt for en programtjenestekonto, vil bakgrunnsoppgaven automatisk trekke tillatelsen tilbake.
Derfor kan du ikke gi Send som-tillatelse til en programtjenestekonto for en konto som er beskyttet av
adminSDHolder-objektet, med mindre du endrer selve
adminSDHolder-objektet. Hvis du gjør endringer i
adminSDHolder-objektet, vil dette endre tilgangstillatelsene for alle beskyttede kontoer. Du bør bare endre
adminSDHolder-objektet etter en fullstendig gjennomgang av hvilken innvirkning endringene kan ha på sikkerheten.
Følg disse trinnene for å knytte en postboks til en konto som er beskyttet av
adminSDHolder-objektet:
- Start administrasjonskonsollen for Active Directory-brukere og -datamaskiner.
- Gå til Vis-menyen, og kontroller at alternativet Avanserte funksjoner er valgt. Hvis dette alternativet ikke er valgt, vil ikke Sikkerhet-siden være synlig for brukerkontoobjekter.
- Opprett en vanlig brukerkonto som skal fungere som postbokseier.
- Tilordne den vanlige brukerkontoen en postboks på en Exchange-server.
- Åpne egenskapene for den nye postbokseierkontoen.
- Gi tillatelsen Exchange Advanced til den beskyttede administratorkontoen i boksen for avanserte Exchange-innstillinger.
- Gå til siden Sikkerhet, og gi Send som-tillatelse til den beskyttede administratorkontoen.
- Klikk OK for å gå ut av egenskapene for postbokseierobjektet.
- Høyreklikk postbokseierobjektet, og klikk deretter Deaktiver konto for å deaktivere kontoen for all pålogging.
Hvis du vil ha mer informasjon om adminSDHolder-beskyttede kontoer, kan du klikke følgende artikkelnumre for å vise artiklene i Microsoft Knowledge Base:
907434
(http://support.microsoft.com/kb/907434/
)
Send som-rettigheten fjernes fra et brukerobjekt etter at du konfigurerer Send som-rettigheten i snapin-modulen Active Directory-brukere og -datamaskiner i Exchange Server (denne artikkelen kan være på engelsk)
318180
(http://support.microsoft.com/kb/318180/
)
AdminSDHolder-tråden virker inn på transitive medlemmer av distribusjonsgrupper (denne artikkelen kan være på engelsk)
817433
(http://support.microsoft.com/kb/817433/
)
Delegerte tillatelser er ikke tilgjengelige, og nedarving er automatisk deaktivert (denne artikkelen kan være på engelsk)
306398
(http://support.microsoft.com/kb/306398/
)
AdminSDHolder-objekter virker inn på delegering av kontroll over tidligere administratorkontoer (denne artikkelen kan være på engelsk)
Spesialoppgaver for BlackBerry Enterprise Server
Oppgave 1: Kontroller at BlackBerry Enterprise Server kjører som en egen unik konto
Kontroller at BlackBerry Enterprise Server kjører som en egen unik konto som er spesielt opprettet for administrative oppgaver. Denne kontoen heter "BESAdmin" som standard.
Hvis du har en egen konto for administrering av BlackBerry Enterprise Server, går du til oppgave 2.
Hvis du ikke har en egen konto, oppretter du en egen konto. Deretter bruker du denne kontoen til å utføre administrative oppgaver. Hvis du vil ha informasjon om hvordan du gjør dette, kan du gå til ett av følgende BlackBerry-webområder som gjelder den versjonen av BlackBerry Enterprise Server du kjører.
Hvis du kjører BlackBerry Enterprise Server 4.0 eller BlackBerry Enterprise Server 4.1, går du til følgende BlackBerry-webområde:
Hvis du kjører BlackBerry Enterprise Server 3.6, kan du gå til følgende BlackBerry-webområde:
Oppgave 2: Pass på at BlackBerry Enterprise Server-tjenestekontoen har de riktige tilgangsrettighetene
Kontroller at BlackBerry Enterprise Server-tjenestekontoen har de riktige tilgangsrettighetene.
Obs! Hvis kontoen er innenfor et domene, må du kontrollere at kontoen er medlem av domenebrukergruppen. I en domenekontroller skal kontoen være medlem av gruppen innebygde administratorer.
- Følg disse trinnene på BlackBerry Enterprise Server:
- Kontroller at kontoen er medlem av den lokale administratorgruppen.
- Tilordne tilgangsrettighetene "Tillat å logge på lokalt" og "Logg på som en tjeneste" til kontoen.
- Gi tilgangene Exchange View-Only Administrator på administratorgruppenivå. Dette gjør du slik:
- I Exchange System Manager høyreklikker du det første Exchange Server-administrasjonsgruppenavnet og deretter klikker du Delegate Control.
- Legg merke til at BlackBerry Enterprise Server-tjenestekontoen er oppført med rollen Exchange View-Only Administrator.
- Gi tillatelsene "Send som," "Motta som," og "Administer Information Store" på servernivå for hver Exchange Server-server. Dette gjør du slik:
- I Exchange System Manager høyreklikker du det første Exchange Server-administrasjonsgruppenavnet og deretter utvider du gruppen Servere.
- Høyreklikk en Exchange Server-server, klikk Egenskaper, og klikk deretter Sikkerhet.
- I den øverset ruten velger du BlackBerry Enterprise Server-tjenestekontoen. I den nederste ruten må du kontrollere at tillatelsene "Send som", "Motta som" og "Administer Information Store" er angitt til Tillat.
- Gjenta trinn 3b og 3c for hver Exchange Server-server.
- Gi tillatelsene "Send som", "Motta som" og "Administer Information Store" til postbokslageret. Dette gjør du slik:
- I Exchange System Manager høyreklikker du det første Exchange-administrasjonsgruppenavnet og deretter utvider du gruppenServere.
- Utvid den første postbokslagergruppen, høyreklikk hvert postbokslager, klikk Egenskaper, og klikke deretter Sikkerhet.
- I den øverset ruten velger du BlackBerry Enterprise Server-tjenestekontoen. I den nederste ruten må du kontrollere at tillatelsene "Send som", "Motta som" og "Administer Information Store" er angitt til Tillat.
- Gjenta trinn 4b og 4c for hvert postbokslager på hver Exchange Server-server.
- I snapin-modulen Active Directory-brukere og -datamaskiner følger du disse trinnene:
- Høyreklikk den brukeren du vil legge til tillatelser for, og klikk deretter Egenskaper.
- I kategorien Sikkerhet legger du til tjenestekontoen for BlackBerry Enterprise Server, og deretter merker du av for Send som .
Hvis du ikke kjører Exchange Server 2003, kan du gå til oppgave 3.
Oppgave 3: Slett hurtigbufferen på BlackBerry Enterprise Server
Hvis du vil slette tillatelsesbufferen på informasjonslageret, starter du de Blackberry-relaterte tjenestene på nytt, og deretter starter du Microsoft Exchange-informasjonslageret på nytt. Når du har startet informasjonslageret på nytt, må du starte de RIM Blackberry-relaterte tjenestene på nytt for å gi "BESAdmin"-kontoen den nylig tillagte Send som-tillatelsen på Exchange-informasjonslageret.
Hvis du vil ha mer informasjon om bestemte Blackberry-serverkrav, kan du gå til følgende BlackBerry-webområde:
Tilgangstillatelser for Exchange-postbokser og -mapper er delt mellom Active Directory- og Microsoft Exchange-databaser. Begge typene tillatelser angis imidlertid i administrasjonskonsollen for Active Directory-brukere, men ulike tillatelser lagres på to ulike steder.
Hvis en tillatelse blir angitt på Sikkerhet-siden for et objekt, er den som oftest en Active Directory-tillatelse. Hvis den angis på siden for avanserte postboksrettigheter for Exchange, er den en Exchange-databasetillatelse. Du vil derfor motta følgende feilmelding hvis du prøver å få tilgang til postboksrettighetssiden når en brukers database ikke er tilgjengelig:
Microsoft Information Store-tjenesten er ikke tilgjengelig.
Tillatelsen for tilknyttet ekstern konto er et unntak til regelen om at tillatelser som angis gjennom de avanserte postboksrettighetene i Exchange, lagres i Exchange-databasen. Tillatelsen for tilknyttet ekstern konto er ikke en ekte tillatelse; den er en metode du kan velge Active Directory-attributtet
msExchMasterAccountSID. Selv om attributtet
msExchMasterAccountSID ikke er en tillatelse, kontrollerer den hvordan andre tillatelser fungerer. Hvis du vil ha mer informasjon om
msExchMasterAccountSID-attributtet, kan du gå til delen "Tilknyttede eksterne kontoer".
Obs! Active Directory-attributtet
msExchMailboxSecurityDescriptor er en sikkerhetskopi av et delsett av de postboksrettighetene som er i funksjon. Det brukes internt i Exchange til en rekke formål. I tillegg oppdateres attributtet
msExchMailboxSecurityDescriptor slik at det stemmer med rettighetene som er i funksjon, hvis administratorer bruker støttede grensesnitt til å tilordne rettigheter.
Hvis attributtet
msExchMailboxSecurityDescriptor endres direkte av en administrator, vil imidlertid endringene ikke bli lagt inn i Exchange-lageret, og endringene vil ikke tre i kraft. Det er ingen garanti for at attributtet synkroniseres med de faktiske postboksrettighetene. Du bør ikke bruke attributtet
msExchMailboxSecurityDescriptor til å lese eller skrive postboksrettigheter.
Hvis du vil ha mer informasjon, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
310866
(http://support.microsoft.com/kb/310866/
)
Stille inn Exchange Server 2003- og Exchange 2000 Server-postboksrettigheter på en postboks som ligger i informasjonslageret (denne artikkelen kan være på engelsk)
Tilgangstillatelsen for full postbokstilgang er en tillatelse for Exchange-databaselageret. Send som-tillatelsen er en Active Directory-tillatelse. Før endringene i Exchange-filen Store.exe som er beskrevet i denne artikkelen, undersøkte ikke Exchange-systemet innstillingen for Send som-tillatelsen hvis avsenderen allerede hadde full postbokstilgang.
Obs! Du kan gi Send som-tillatelse uten å gi full postbokstilgang. I slike situasjoner har Exchange alltid undersøkt Send som-tillatelsen.
Det at tillatelsen for full postbokstilgang omfatter Send som-tillatelsen, har gjort det mulig for Exchange-serveradministratorer å gi seg selv fungerende Send som-tillatelser for en hvilken som helst postboks på serveren de administrerer. Administratorer kan gjøre dette fordi de har full faktisk kontroll over en Exchange-database. Ved å skille Send som-tillatelsen fra tillatelsen for full postbokstilgang, kan Active Directory-administratorer nå blokkere denne prosessen, siden Send som-tillatelsen er en Active Directory-tillatelse, ikke en tillatelse fra Exchange-lageret. Derfor styres denne prosessen ikke nødvendigvis av Exchange-administratorer.
Postbokseiere
En postbokseier defineres som den Active Directory-brukerkontoen med et
msExchMailboxGUID-attributt som inneholder den globalt unike numeriske identifikasjonen (GUID) for en bestemt postboks. Bare én konto i en hel skog har rett til å bære GUIDen for en bestemt postboks. Hvis du prøver å angi en annen eier med samme GUID, vil Active Directory avvise endringen med en feilmelding.
Når du postboksaktiverer en konto eller kobler en frakoblet postboks til en Active Directory-konto, angis postboks-GUIDen automatisk for kontoen. Det er sjelden nødvendig eller anbefalt at en administrator stiller inn postboks-GUIDene direkte.
Tilknyttede eksterne kontoer
En vanlig Exchange-konfigurasjon er å installere Exchange i en ressursskog. En ressursskog er en skog som er i en annen skog av brukerkontoene som skal ha postbokser i systemet. Dette utgjør et problem fordi
msExchMailboxGUID-attributtet bare kan angis på objekter i samme skog som Exchange-serveren.
Løsningen på problemet er å postboksaktivere kontoen i Exchange-serverskogen. Deretter kobler du denne postboksaktiverte kontoen til en konto i en annen skog eller i et Microsoft Windows NT 4-domene. Du kan gjøre dette ved å gi den tilknyttede eksterne kontoen tillatelse. Bare én enkelt konto kan få tillatelsen for tilknyttede eksterne kontoer. Kontoen du velger, må være fra en annen skog.
Når du angir tillatelsen for tilknyttet ekstern konto, skriver du SID-verdien for den eksterne kontoen til
msExchMasterAccountSID-attributtet for postbokseieren. Derfor er ikke dette egentlig en tillatelse, men en praktisk måte å styre verdien av
msExchMasterAccountSID-attributtet på. Når
msExchMasterAccountSID-attributtet er angitt, vil den eksterne kontoen som eier SIDen, få Exchange-tilgang som om den var den faktiske postbokseierkontoen.
Vær oppmerksom på at dette bare gjelder Exchange-tilgang, ikke full Active Directory-tilgang. I tillegg bør du merke postbokseierkontoen som deaktivert for pålogging etter å ha angitt tillatelsen for tilknyttet ekstern konto, slik at alle tillatelser fungerer som forventet.
300456
(http://support.microsoft.com/kb/300456/
)
Klienttillatelser og representanttilordninger blir ikke værende etter tilordning i Exchange 2000. (denne artikkelen kan være på engelsk)
Representantscenarier
En representant er en bruker som har fått delvis tilgang til en annen postboks og rett til å sende meldinger på vegne av postboksens eier. Et vanlig scenario er å gi en leders assistent eller sekretær representanttilgang til lederens kalender. Representanten kan vanligvis lese og oppdatere kalenderen. I tillegg kan representanten svare på e-post på vegne av lederen.
Representanttilgang gis ved å legge til representanten i flerverdiattributtet
publicDelegates for postbokseieren. Alle brukere som er angitt i dette attributtet, har Send på vegne av-tillatelse for postbokseieren. Når slike representanter sender en e-postmelding med eierens navn i
Fra-boksen, viser
Fra-boksen i e-postmeldingen følgende verdi:
<Representantens navn> på vegne av <Postbokseieren>
E-postmeldingen sendes imidlertid fra representanten, og ikke fra eller som postbokseieren.
Nedenfor følger en oversikt over to grensesnitt som du kan bruke til å gi representanttillatelser og Send på vegne av-tillatelser:
- Gi Send på vegne av-tillatelsen i Exchange-dialogboksen Exchange General for postbokseierobjektet.
- Bruk dialogboksen Representanter i Microsoft Outlook.
Begge disse metodene stiller inn
publicDelegates-attributtet. Med Outlook-metoden kan du imidlertid også gi bestemte mappetillatelser til representanten. Du kan også gi en representant tillatelser direkte fra egenskapene for en enkeltmappe i Outlook.
I enkelte tilfeller kan det være umulig å stille inn
publicDelegates-attributtet i Outlook.
329622
(http://support.microsoft.com/kb/329622/
)
"Send på vegne av"-tillatelse tilordnes ikke bruker etter at du gir representanttilgang i Outlook (denne artikkelen kan være på engelsk)
Hvis du gir representanttilgang til postboksen din, kan representanten bruke Send på vegne av-tillatelsen selv om du ikke gir representanten tilgang til noen av postboksmappene dine. Den grunnleggende tillatelsen en representant får, er Send på vegne av-tillatelsen. Tilgangstillatelse til postboksmappene er atskilt og må gis i tillegg til representanttillatelsen.
Vanligvis vil representanter bruke Microsoft Outlook til å arbeide med enkeltmapper som de har fått tilgang til. Dette kan du gjøre ved å klikke
Åpne på
Fil-menyen i Outlook og deretter klikke
Annen brukers mappe.
Representanten kan også åpne postboksen din ved å legge den til som tilleggspostboks i kategorien
Avansert i Outlook-profilen sin. Med denne metoden vil postboksen din vises i representantens mappetre i Outlook. I tillegg gir denne metoden representanten tilgang til alle mappene i postboksen din som han/hun er blitt gitt tilgang til.
Av og til vil du kanskje at representanten skal ha Send på vegne av-tillatelse, mens det andre ganger er bedre med en Send som-tillatelse. Du kan konfigurere en representant med disse to tillatelsene ved å følge disse trinnene:
- Gi representanten full postbokstilgang. Dette kan ikke gjøres i Outlook. I stedet må en Active Directory-administrator gjøre dette for postbokseierkontoen. Selv om du gir eiertillatelser for alle mappene i postboksen, er ikke det den samme tillatelsen som full postbokstilgang.
- Ikke gi representanten Send som-tillatelsen. Hvis du gir representanten Send som-tillatelse, vil alle e-postmeldinger som sendes av representanten, bli sendt med Send som-tillatelsen. Representanten vil ikke lenger kunne bruke Send på vegne av-tillatelsen.
I dette scenariet må en representant som vil bruke Send på vegne av-tillatelsen, logge seg på sin egen postboks. Hvis representantene svarer på eller videresender en e-postmelding som allerede ligger i en av dine mapper, vil du stå som avsender av e-postmeldingen. Hvis representantene oppretter en ny e-postmelding på dine vegne, må de skrive inn navnet ditt i
Fra-boksen i e-postmeldingen som skal sendes på dine vegne.
Uansett om representantene har åpnet dine mapper eller hele postboksen som en sekundær postboks, vil alle e-postmeldinger de sender fra deg, bli sendt med Send på vegne av-tillatelsen så lenge representantens egen postboks er den primære postboksen for gjeldende Outlook-profil.
Når representanten ønsker å sende en e-postmelding som deg, må vedkommende logge seg på din postboks med en egen Outlook-profil som bare åpner din postboks. E-postmeldinger som representanter sender mens de er logget på denne profilen, vil automatisk bli sendt fra deg.
Finne kontoer som har full postbokstilgang, men ikke Send som-tillatelse
Eksempelskriptet som er beskrevet her, kan søke gjennom ett Active Directory-domene om gangen etter brukerkontoer som har fått full postbokstilgang til en annen postboks, men som ikke har Send som-tillatelse.
Viktig! Før du kan endre tillatelser må du lese delen
Om postbokseiere med representanter.Skriptet har følgende tre moduser:
- Export: Du kan generere en liste over brukere som har full postbokstilgang uten Send som-tillatelse. Du kan deretter lese gjennom listen i Notisblokk eller et annet tekstredigeringsprogram og fjerne eventuelle kontoer som du ikke vil gi Send som-tillatelse.
- Import: Du kan importere en liste over brukere som har full postbokstilgang, og som også bør ha Send som-tillatelse. Legg merke til at du ikke kan bruke dette skriptet til å gi både full postbokstilgang og Send som-tillatelse. Hver konto må allerede ha full postbokstilgang for å kunne få Send som-tillatelse.
- SetAll: Du kan gi Send som-tillatelse til alle brukerne i domenet som allerede har full postbokstilgang til en bestemt postboks. Det vil bli generert en loggfil i samme format som eksportfilen. Dette er det samme som å kjøre Export og Import uten å redigere eksportfilen.
Obs! Det finnes ingen angrefunksjon i dette skriptet.
Tillatelser som er nødvendige for skriptet
Du må kjøre skriptet mens du er logget på med en administratorkonto fra samme skog som postbokseierkontoene. Skriptet fungerer kanskje ikke sammen med en konto som har administrative tillatelser på tvers av flere skoger. Skriptet fungerer kanskje heller ikke når du kjører det fra en arbeidsstasjon som er koblet til en annen skog enn den skogen som kontoen til postbokseier er tilkoblet.
Under slike forhold kan du kjøre skriptet med flere administrative kontoer i én enkelt påloggingsøkt ved hjelp av kommandoen RunAs.exe. Denne prosedyren kan være nyttig hvis du har segmentert tillatelsene for Active Directory og Exchange Server og ikke har noen enkelt konto som kan administrere alle Exchange-servere eller alle Active Directory-domener. Du kan åpne en ledetekst for å kjøre skriptet som hver administrative konto. La oss se på følgende eksempel:
RunAs.exe /user:domain\account CMD.EXE
Obs! Du bør ikke kjøre flere eksemplarer av skriptet samtidig mot samme domene.
I eksportfilen finner du følgende felt: Feltene er beskrevet i den rekkefølgen de vises i eksportfilen.
- Visningsnavnet på eieren av postboksen
Utdatafilen kan inneholde flere linjer for samme postbokseier. Dette skjer hvis flere andre kontoer har full postbokstilgang til samme postboks. - Domenenavnet og påloggingsnavnet til en konto som har tillatelsen for full postbokstilgang, men ikke Send som-tillatelsen
Den samme kontoen kan dukke opp flere ganger i eksportfilen når kontoen har tilgang til flere postbokser. Dette er sannsynlig for en programtjenestekonto eller en person som administrerer flere ressurspostbokser. - Visningsnavn til en konto som har tillatelsen for full postbokstilgang, men ikke Send som-tillatelsen
Dette feltet og feltet for påloggingsnavn skal gjøre det lettere for deg å identifisere kontoen. - Representantstatus for eieren av postboksen
Hvis postbokseieren har representanter, får feltet verdien Has Delegates. Hvis postbokseieren ikke har representanter, får feltet verdien No Delegates. - Aktivert og deaktivert status på kontoen til postbokseeier
Dette feltet er praktisk når du ønsker å identifisere ressurskontoer eller postbokskontoer på tvers av flere skoger. Disse kontoene er vanligvis deaktivert. - Fullstendig unikt navn på postbokseierens konto
Dette feltet er praktisk når du vil identifisere domenet og beholderen til postbokseierens konto. - Fullstendig unikt navn på databasen til eieren av postboksen
Dette feltet inneholder postboksens database, lagringsgruppe, server og administrativ gruppe.
I følgende eksempel har brukeren med påloggingsnavnet "NoSendAs" tillatelsen full tilgang til postboks, men ikke tillatelsen Send som for postboksen "Mailbox Owner":
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [ytterligere felt er fjernet]
Konfigurasjon for administrativ arbeidsstasjon for skriptet
Dette skriptet bruker grensesnittet for Exchange-administrasjon til å kommunisere med Exchange-serverne. Skriptet må derfor kjøres fra en Exchange-server eller fra en arbeidsstasjon hvor Exchange System Administrator er installert.
Redigere eksportfilen
Eksportfilen er formatert som ren Unicode-tekst, slik at tegnsett fra flere språk kan fungere. Det kan hende at enkelte tekstredigeringsprogrammer ikke kan brukes til å vise eller redigere filen, eller de kan komme til å lagre den som ANSI- eller ASCII-tekst. Notisblokk-programmet som følger med Microsoft Windows XP, Microsoft Windows 2000 og Microsoft Windows 2003, kan håndtere Unicode-filer riktig. I tillegg håndterer Microsoft Excel Unicode-tekstfiler riktig.
Utdatafilen er i tabulatordelt format med tredoble anførselstegn rundt verdiene for hvert felt. De tredoble anførselstegnene brukes til å gjøre import til og eksport fra Excel klarere. I Excel vil de tredoble anførselstegnene bli enkle, og de vil bli tredoble igjen når filen lagres som Unicode-tekst etter behandlingen. Se instruksjonene nedenfor om hvordan du åpner og lagrer eksportfilen i Excel på riktig måte.
Du kan også filtrere en eksportfil uten å bruke Excel, ved hjelp av verktøyene Find.exe eller Findstr.exe. Disse verktøyene følger med i Windows. De gjør det mulig å søke etter ord i en fil og hente ut bare de linjene som inneholder disse ordene eller de linjene som ikke inneholder disse ordene. Hvis du for eksempel vil lage en liste over alle postbokseiere i filen som har representanter, kan du bruke en av disse kommandoene til å opprette en fil som bare inneholder linjer med strengen "Has Delegates":
Find.exe ?Has Delegates? OriginalFile.txt > HasDelegates.txt
Findstr.exe /C:?Has Delegates? OriginalFile.txt > HasDelegates.txt
Som et annet eksempel kan vi tenke oss at du vil filtrere ut alle postbokseiere med representanter. Når du bruker
/V-bryteren, blir alle linjene som ikke samsvarer med søkeordene, filtrert ut. Du kan bruke alle disse kommandoene til å generere en fil som utelukker alle linjer med "Has Delegates":
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å bruke følgende kommandoer til å generere en fil som inneholder alle kontoene hvor en programtjenestekonto har full postbokstilgang, men ikke Send som-tillatelse:
/I-bryteren gjør at kommandoen ikke skiller mellom store og små bokstaver:
Find.exe /I ?domain\ServiceAccount? OriginalFile.txt > ServiceAccount.txt
Findstr.exe /I /C:?domain\ServiceAccount? OriginalFile.txt > ServiceAccount.txt
Obs! Hvis du bruker Find.exe til å generere en filtrert fil, må du fjerne topptekstlinjene som opprettes av Find.exe øverst i filen.
Ikke bruk jokertegn (*.*) med Findstr.exe. Hvis du bruker jokertegn, vil hver linje i utdatafilen begynne med filnavnet. Du bør se nøye gjennom utdatafilen som du filtrerte med Find.exe eller Findstr.exe, for å kontrollere at filteret valgte eller fjernet ønskede kontoer.
I eksemplet nedenfor har brukeren med påloggingsnavnet "NoSendAs" full postbokstilgang men ikke Send som-tillatelse til postboksen "Mailbox Owner".
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [ytterligere felt er fjernet]
Om postbokseiere med representanter
En representant som har full postbokstilgang (en såkalt "superrepresentant"), skal vanligvis ikke få Send som-tillatelse. Når superrepresentanten logger seg direkte på postbokseierens postboks, kan representanten bruke Send som. Når representanten bruker Outlooks funksjoner for representanter (ekstra postbokser å åpne eller åpne annen brukers mappe), sendes meldingene på vegne av.
Bare gi Send som-tillatelse til en superrepresentant hvis du vil at representanten alltid skal sende som postbokseieren og aldri sende på vegne av postbokseieren. Vi anbefaler at du søker etter teksten "Has Delegates" i eksportfilen og deretter finner ut om noen av superrepresentantene som vises, er representanter for postbokseieren.
Bare superrepresentanter vises i eksportfilen. Vanlige representanter har ikke full postbokstilgang. Når du gir Send som-tillatelse til en vanlig representant, vil representanten alltid sende som postbokseieren. Dette gjelder selv om den vanlige representanten ikke har full postbokstilgang. Hvis du kommer i skade for å gi feil representant en Send som-tillatelse, er det lett å trekke tilbake tillatelsen senere.
Åpne en eksportfil i Excel
- Start Excel før du åpner eksportfilen.
- Åpne filen i Excel som tekstfil. Tekstimportveiviseren starter automatisk.
- Endre eller godta følgende innstillinger i tekstimportveiviseren:
- Opprinnelig datatype: Data med skilletegn
- Start import ved rad: 1
- Filopprinnelse: Unicode (UTF-8)
- Skilletegn: Bare Tabulator
- Behandle påfølgende skilletegn som ett: ikke merket
- Tekstkvalifikator: " (doble anførselstegn)
Lagre en eksportfil etter redigering i Excel
- Klikk Lagre som i eksportfilen.
- Gi filen et annet navn, slik at du beholder en uredigert kopi av originalfilen.
- Klikk Fil og Lagre som, angi et filnavn du vil lagre utdataene med, og velg deretter Unicode-tekst i listen Filtype.
Skriptsyntaks
Dette er et tekstmodusskript som bør kjøres i et kommandoledetekstvindu, ikke fra
Kjør-dialogboksen. Du åpner et kommandoledetekstvindu ved å klikke
Start og
Kjør, skrive inn
CMD i boksen
Åpne og deretter klikke
OK.
Feil- og eksportfiler lagres i gjeldende katalog for kommandoledetekst. Du må ha tillatelse til å opprette filer i denne katalogen.
Hvis du trenger hjelp med kommandolinjen, kan du bruke denne kommandoen:
Hvis du vil eksportere brukere som har full postbokstilgang, men ikke Send som-tillatelse, kan du bruke denne kommandoen:
CSCRIPT AddSendAs.vbs [domenekontrollernavn] ?Eksporteksempel: CSCRIPT AddSendAs.vbs CORP-DC-1 ?Export
Eksportfilen vil bli generert som "Send_As_Export_H_MM_SS.txt".
Hvis du vil importere en redigert eksportfil, kan du bruke denne kommandoen:
CSCRIPT AddSendAs.vbs [domenekontrollernavn] ?Import [filnavn]
for eksempel:
CSCRIPT AddSendAs.vbs CORP-DC-1 ?Import "Send_As_Export_T_MM_SS.txt"
Gi Send som-tillatelse til hver postboks i domenet for alle brukere som allerede har full postbokstilgang til en postboks
Obs! Hvis du har representanter som også har full postbokstilgang i organisasjonen, bør du ikke bruke SetAll-modus. Hvis du bruker SetAll-modus i denne situasjonen, vil alle representanter få Send som-tilgang. Dette kan føre til at alle e-postmeldinger de sender, bruker Send som-tillatelse i stedet for Send på vegne av-tillatelse. Du kan korrigere dette ved å fjerne Send som-tillatelser som representantene fikk ved en feiltakelse.
CSCRIPT AddSendAs.vbs [domenekontrollernavn] ?SetAll
for eksempel:
CSCRIPT AddSendAs.vbs CORP-DC-1 ?SetAll
Hvis du bruker SetAll-modus, vil det bli generert en eksportfil som Send_As_Export_H_MM_SS.txt. Du bør lagre denne filen, fordi den utgjør en oversikt over hvilke kontoer som ble endret. Hvis du kjører skriptet på nytt, vil du ikke få den samme listen med kontoer, fordi kontoene allerede vil ha fått Send som-tillatelsen.
Feil som oppstår under kjøringen av dette skriptet, vil bli lagret i filen Send_As_Errors_T_MM_SS.txt. I navnet på feilfilen vil timer_minutter_sekunder samsvare med tidsangivelsen i den tilknyttede eksportfilen hvis en slik finnes.
Endringer av skriptet
Det finnes kanskje kontoer i organisasjonen som har tillatelser for mange objekter, men du ønsker ikke å endre disse tillatelsene. Hvis du vil redusere størrelsen på eksportfilen, kan du endre variabelen FMA_EXCLUSIVE_LIST som ligger nesten øverst i skriptet. Denne variabelen inneholder noen kontoer som skal undertrykkes som standard i utdataene for skriptet. Du kan legge til flere kontoer ved å bruke dette formatet:
& "<Domain\Name>" & OUTPUT_DELIMITER
Du kan for eksempel endre verdien på følgende variabel:
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
slik at den vises på følgende måte:
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER & "Mydomain\Service1" & OUTPUT DELIMITER
Denne endringen undertrykker oppføring av kontoen "Mydomain\Service1" i eksportfilen, sammen med "NT AUTHORITY\SELF" og "NT AUTHORITY\SYSTEM". Merk at det skilles mellom store og små bokstaver for verdien Domain\Name, så navnet må stå akkurat slik som i eksportfilen.
En annen redigerbar variabel, FMA_EXCLUSIVE_EXSVC, har også standardverdien "\Exchange Services" & OUTPUT_DELIMITER. "Exchange Services" er navnet på en konto som har fått tillatelser via Active Directory Connector i scenarier for overføring og sameksistens mellom Exchange 5.5 og Exchange 2000. Denne kontoen er opprettet i flere domener og kan forekomme gjentatte ganger i eksportfilen hvis den ikke undertrykkes.
FMA_EXCLUSIVE_EXSVC-variabelen kan bare ha én konto som verdi. Det skilles ikke mellom små og store bokstaver for kontonavnet. Kontoen som er oppført, må være oppført med en omvendt skråstrek (\) aller først, og navnet kan ikke inkludere domenet som kontoen tilhører. Kontoen vil undertrykkes for alle domener den finnes i.
Hvis du har brukt overføringsverktøy fra tredjeparter eller synkroniseringsmetoder for kataloger, finnes det kanskje en annen konto i flere domener som har gitt tillatelser til et stort antall postbokser. I dette tilfellet kan du bytte ut kontonavnet med "\Exchange Services".
Tips og advarsler
Kjør dette skriptet ved å kopiere og lime inn alle linjene mellom BEGIN SCRIPT og END SCRIPT i et rent tekstredigeringsprogram som for eksempel Notisblokk. Lagre skriptet som AddSendAs.vbs. BEGIN SCRIPT
Option Explicit
Dim OUTPUT_DELIMITER
OUTPUT_DELIMITER = """""""" & vbTab & """"""""
'Definer ekslusivliste, hvis FMA er gitt til en bruker i denne listen, blir den ignorert. Hvis du
'vil endre denne listen, nå du passe på å bruke samme formatet. Hvert alias må
'ha en OUTPUT_DELIMITER før og etter seg
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
'Tillatelsessype: Gi eller nekte
const ACCESS_ALLOWED_OBJECT_ACE_TYPE = 5
const ADS_ACETYPE_ACCESS_ALLOWED = &h0
const ADS_ACETYPE_ACCESS_DENIED = &h1
Flagg: Angir tillatelser
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
'Deklarere ADSI-konstanter
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
'navn på utdatafil
Const EXPORT_FILE = "Send_As_Export"
Const ERROR_FILE = "Send_As_Errors"
' skriptmodus
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"
' argumentindeks
Const ARG_INDEX_MODE = 1
Const ARG_INDEX_DC = 0
Const ARG_INDEX_FILENAME = 2
' kolonneindeks i import-/eksportfil
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 = "Ingen representanter"
Const STRYES = "Har representanter"
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("ADVARSEL: Hvis du fortsetter, vil hver konto i det domenet som har")
WScript.StdOut.WriteLine("tillatelsen Full tilgang til postboks for en bestemt postboks, også bli gitt")
WScript.StdOut.WriteLine("tillatelsen Send som postbokseier.")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("For å forhåndsvise listen med postbokser før du gir tillatelsen Send As,")
WScript.StdOut.WriteLine("avbryter du denne operasjonen og bruker -Export-modus for skriptet.")
WScript.StdOut.WriteLine()
WScript.StdOut.Write("Trykk Y for å fortsette eller en annen tast for å avbryte: ")
strInput = WScript.StdIn.ReadLine()
If (UCase(strInput) <> UCase("Y")) Then
WScript.Quit
End If
End If
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("""!"" angir en feil ved behandlingen av et objekt.")
WScript.StdOut.WriteLine(" Kontroller " & sErrorsFilename)
WScript.StdOut.WriteLine("Starter...")
WScript.StdOut.WriteLine()
err.Clear
Set rootDSE = GetObject("LDAP://" & sDCServer & "/RootDSE")
sDomainContainer = rootDSE.Get("defaultNamingContext")
WScript.StdOut.WriteLine("Finner domenekontroller [ " & sDCServer & " ] for domenet [ " & sDomainContainer & " ]")
If (err.number <> 0) Then
WScript.StdOut.WriteLine("Fant ikke domenet eller domenekontroller, feil:" & err.Description)
objfileError.WriteLine("Fant ikke domenet eller domenekontroller, feil:" & 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("Kunne ikke binde til Active Directory-server, feil:" & err.Description)
objfileError.WriteLine("Kunne ikke binde til Active Directory-server, feil:" & err.Description)
WScript.Quit
End If
Set objCommand.ActiveConnection = conn
WScript.StdOut.WriteLine("Søker etter brukerkontoer til postbokseier i " & 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("Søk etter postbokseier var mislykket, feil:" & err.Description)
objfileError.WriteLine("Søk etter postbokseier var mislykket, feil:" & err.Description)
WScript.Quit
End If
If (rsUsers.RecordCount = 0) Then
WScript.StdOut.WriteLine("Det ble ikke funnet brukerkonto til postbokseier i " & sDomainContainer & ".")
objfileError.WriteLine("Ingen brukerkonto til postbokseier ble funnet i " & sDomainContainer & ".")
fError = True
End If
While Not rsUsers.EOF
If (fOneError = True) Then
WScript.StdOut.Write("!")
Else
WScript.StdOut.Write(".")
End If
fOneError = False
'Hopp over postboksobjekt i Microsoft Exchange System Objects-mappen
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("Kan ikke hente brukerobjekt: " & 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("Kan ikke hente postboksrettigheter: " & 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("Kan ikke hente 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
'Send spørring etter denne brukerens publicDelegates-liste
err.Clear
msPublicDelegates = objUser.Get("publicDelegates")
If (err.number <> 0) Then
'Denne brukeren har ikke angitt noen publicDelegates-liste
sIfPublicDelegate = STRNO
err.Clear
Else
sIfPublicDelegate = STRYES
End If
err.Clear
FindAllFMAUsers objSDMailBox
If (TotalACE > dArraySize) Then
'Må allokere en større størrelsesmatrise
dArraySize = TotalACE + 1
ReDim Preserve sTrusteeAlias(dArraySize)
FindAllFMAUsers objSDMailBox
End If
If (err.number <> 0) Then
objfileError.WriteLine("Feil ved spørring av postboksrettigheter for bruker: " & 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
'Kontroller om vi allerede har en Send As ACE i NT-sikkerhetsbeskrivelsen
'Hvis den finnes, bruk enten tillate eller nekte, vi trenger ikke tilføye Send as
CheckSendAsACE objDACLNTSD, sTrusteeAlias(i)
'Obs: nektelser går foran tillatelser.
'Hvis det finnes FMA, nekt ACE, hopp over selv om vi finner FMA som tillater 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
'Send spørring til trustee(FMA-bruker) for å hente 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
'Feil ved spørring av FMA-brukers visningsnavn, bruk alias
sFMAUserDisplayName = sAlias
Else
sFMAUserDisplayName = objTrustee.displayName
End If
'utdata til eksportfil
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("Bruker " & rsUsers.Fields(0).Value & " kunne ikke legges til eksportfilen. Du må angi tillatelser manuelt for denne brukeren.")
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("Kan ikke oppdatere ADSI for brukeren: " & 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("Hvis du fortsetter, blir hver konto som er oppført i " & sImportFilePath)
WScript.StdOut.WriteLine("og som har Full tilgang til postboks for en bestemt postboks, også bli gitt")
WScript.StdOut.WriteLine("tillatelsen Send som postbokseier.")
WScript.StdOut.WriteLine()
WScript.StdOut.Write("Trykk Y for å fortsette eller en annen tast for å avbryte: ")
strInput = WScript.StdIn.ReadLine()
If (UCase(strInput) <> UCase("Y")) Then
WScript.Quit
End If
WScript.StdOut.WriteLine("Starter...")
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("Kan ikke åpne importfilen " & sImportFilePath & ", feil:" & err.Description)
objfileError.WriteLine("Kan ikke åpne importfilen " & sImportFilePath & ", feil:" & 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("Feil ved analysering av en rad: " & sOneRow )
objfileError.WriteLine("Error: " & err.Description)
err.Clear
fError = True
fOneError = True
End If
If (UserPath <> sArraySplit(COLUMN_INDEX_USERADSPATH)) Then
'En ny bruker
If (fNeedToAddSendAs = True ) Then
'oppdatere eksisterende bruker
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("Kan ikke oppdatere tillatelser for brukeren: " & 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("Kan ikke hente brukerobjekt: " & UserPath)
objfileError.WriteLine("Error: " & err.Description)
err.Clear
fError = True
fOneError = True
End If
End If
'Legg til newACE Trenger vi denne kontrollen?
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
'oppdater forrige bruker
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("Kan ikke oppdatere tillatelser for brukeren: " & 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("Fullført med en eller flere feil. Se " & sErrorsFilename)
Else
WScript.StdOut.WriteLine("Riktig fullført. Det oppstod ingen feil.")
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
'Behold en liste som eksplisitt angir FMA på postboksnivå
sFMAExplicitAllow = sFMAExplicitAllow & objACE.Trustee & OUTPUT_DELIMITER
End If
ElseIf (( (objACE.AccessMask And EX_FULLMailbox_AccessMask) <>0 ) And (objACE.AceType = ADS_ACETYPE_ACCESS_DENIED)) Then
'Behold en liste som nektet FMA, bruk OUTPUT_DELIMITER som skilletegn,
'inkluder både arvet og eksplisitt angitt på postboksnivå
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("Kan ikke lese tillatelser for denne brukeren: " & sTAlias)
objfileError.WriteLine("Error: " & err.Description)
err.Clear
fError = True
fOneError = True
End If
Next
End If
End Function
Function IfFMAAllowed(sTrustee)
'FMA tillat ACE ble funnet. Anta at det er sant
fFMAAllowed = True
If ( (0 <> Instr(sFMADeniedList, sTrustee)) And (0 = Instr(sFMAExplicitAllow, sTrustee)) ) Then
'Hvis nektet ACE blir funnet, og ingen eksplisitt tillatelse av 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("Kan ikke opprette eksportfiler eller feilfiler: " & err.Description)
objfileError.WriteLine("Kan ikke opprette eksportfiler eller feilfiler: " & err.Description)
fError = True
fOneError = True
WScript.Quit
End If
End Function
Function DisplaySyntax
WScript.StdOut.WriteLine("Syntax:")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Eksporter kontoer med full tilgang til postboks som ikke har tillatelsen Send As:")
WScript.StdOut.WriteLine(" CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Export")
WScript.StdOut.WriteLine(" OBS!: Listen blir lagret til Send_As_Export_HH_MM_SS.txt")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Gi Send As til alle kontoer som er oppført i en eksportfil:")
WScript.StdOut.WriteLine(" CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Import ""filename.txt""")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("Gi Send As til alle kontoer i domenet med full tilgang til postboks:")
WScript.StdOut.WriteLine(" CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -SetAll")
WScript.StdOut.WriteLine(" OBS!: Kontoene blir oppført i Send_As_Export_HH_MM_SS.txt")
WScript.StdOut.WriteLine()
WScript.StdOut.WriteLine("For all modier blir feilene lagret i Send_As_Errors_HH_MM_SS.txt")
WScript.Quit
End FunctionEND SCRIPT
Programmeringseksemplene som Microsoft bruker, er kun eksempler. Microsoft gir ingen garantier, direkte eller indirekte. Dette inkluderer, men er ikke begrenset til, eventuelle stilltiende garantier om salgbarhet eller anvendelighet for særskilte formål. Denne artikkelen er basert på at du er kjent med programmeringsspråket som brukes, og med verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsofts kundestøtteteknikere kan være behjelpelige med å forklare funksjonaliteten til en bestemt prosedyre, men de endrer ikke disse eksemplene for å gi forbedret funksjonalitet, og oppretter ikke prosedyrer spesielt for å dekke dine bestemte behov.
Hvis du vil ha mer informasjon om hvilke brukerstøttetilbud Microsoft har, kan du gå til dette Microsoft-webområdet:
Tredjepartsproduktene som er omtalt i denne artikkelen, produseres av selskaper som er uavhengige av Microsoft. Microsoft gir ingen garantier, stilltiende eller andre typer garantier, med hensyn til disse produktenes ytelse eller pålitelighet.