Gebruikers kunnen geen e-mailberichten verzenden vanaf een mobiel apparaat of vanuit een gedeelde postbus in Exchange 2000 Server en in Exchange Server 2003

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 912918 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Symptomen

De e-mailberichten die u probeert te verzenden met Microsoft Exchange 2000 Server of Microsoft Exchange Server 2003, worden niet verzonden. Bovendien kunt u een van de volgende foutberichten of NDR-rapporten (Non Delivery Reports) ontvangen.

Foutberichten

  • Toegang geweigerd
  • U hebt niet de vereiste machtiging om deze bewerking op dit object uit te voeren. Neem contact op met de mapcontactpersoon of de systeembeheerder.
  • Onbekend bericht
  • MAPI_E_NO_ACCESS -2147024891
  • Kan e-mailbericht voor USERNAME (HRESULT:-2147024891) niet verzenden. Bewerking voor USERNAME wordt onderbroken. (Beveiligingsfout: Geen toegang tot postbus van gebruiker.)
  • Bron niet gevonden
Opmerking Outlook Web Access geeft het foutbericht 'Toegang geweigerd' of 'Bron niet gevonden' weer wanneer u bent aangemeld als een gemachtigde account.

NDR's

  • U bent niet gemachtigd om berichten naar deze ontvanger te verzenden. Neem contact op met de systeembeheerder.
  • Kan het bericht niet verzenden vanuit uw postbus. U bent niet gemachtigd om het bericht namens de opgegeven gebruiker te verzenden..
Dit probleem kan optreden bij de volgende niet-Microsoft-producten:
  • Research In Motion (RIM) BlackBerry Enterprise Server (BES)
  • GoodLink Wireless Messaging van Good Technology
Voor de volgende niet-Microsoft-producten geldt dit probleem echter niet:
  • Cisco Unity Unified Messaging
  • Quest Migration Suite voor Exchange
  • Het hulpprogramma ExMerge voor Exchange van Microsoft
Mogelijk doet het probleem zich ook voor bij aangepaste MAPI- of CDO-programma's (Collaborative Data Objects) waarmee berichten worden verzonden.

Verder kan het probleem optreden bij andere niet-Microsoft-producten die e-mail verzenden op basis van serviceaccounts. Als u een product van een andere leverancier gebruikt en met dit probleem te maken hebt, moet u contact opnemen met de betreffende leverancier om het probleem op te lossen. Zie ook de sectie 'Meer informatie'.

Belangrijk Als het voor essentiële bedrijfstoepassingen noodzakelijk is de functionaliteit van Verzenden als te herstellen, kunt u de machtiging Verzenden als verlenen aan een serviceaccount door overname in een Active Directory-container of zelfs in een volledig domein. Raadpleeg de gedetailleerde instructies in de sectie voor informatie. Hoewel dit een efficiënte manier is om het probleem te omzeilen, moet u wel rekening houden met de gevolgen voor beveiliging en beheer. Deze toewijzing kan als gevolg hebben dat de machtiging Verzenden als onbedoeld aan andere accounts wordt toegekend. Bovendien moet u rekening houden met de machtiging Verzenden als wanneer u gebruikersaccounts naar een andere container verplaatst.

Oorzaak

Mogelijke oorzaken van dit probleem zijn:
  • Uw e-mailaccount beschikt niet over een machtiging om berichten te verzenden als eigenaar van de postbus.
  • U gebruikt Microsoft Exchange 2000 Server Service Pack 3 (SP3) met een bestandsversie van Store.exe die gelijk is aan of hoger is dan versie 6619.4. Versie 6619.4 is voor het eerst beschikbaar gesteld in het volgende Microsoft Knowledge Base-artikel:
    915358Er is een hotfix beschikbaar om de werking van de machtiging Volledige toegang voor een postbus te wijzigen in Exchange 2000 Server
  • U gebruikt Microsoft Exchange Server 2000 Service Pack 1 (SP1) met een bestandsversie van Store.exe die gelijk is aan of hoger is dan versie 7233.51. Versie 7233.51 is voor het eerst beschikbaar gesteld in het volgende Microsoft Knowledge Base-artikel:
    895949De werking van de machtiging 'Verzenden als' is gewijzigd in Exchange 2003
    Deze correctie maakt echter geen deel uit van Microsoft Exchange 2003 Service Pack 2 (SP2). Als u de Exchange Server 2003 SP1-versie van deze hotfix hebt geïnstalleerd, moet u de Service Pack 2-versie installeren na afloop van de upgrade naar Service Pack 2.
  • U gebruikt Exchange Server 2003 SP2 met een bestandsversie van Store.exe die gelijk is aan of hoger is dan versie 7650.23. Versie 7650.23 is voor het eerst beschikbaar gesteld in het volgende Microsoft Knowledge Base-artikel:
    895949De werking van de machtiging 'Verzenden als' is gewijzigd in Exchange 2003
    Opmerking Deze wijziging is niet opgenomen in Exchange 2000 Server SP3, Exchange Server 2003 SP1 of Exchange 2003 SP2. De wijziging is geïmplementeerd na de uitgave van al deze servicepacks, maar wordt in deze servicepacks wel ondersteund. De wijziging zal worden opgenomen in toekomstige servicepacks voor deze producten.

    Als u Exchange Server 2003 SP2 installeert, moet u ook de aanvullende update installeren om de gewenste werking te behouden, zelfs als u al de versie van de update voor Exchange Server 2003 SP1 hebt geïnstalleerd.

Oplossing

Voorheen werd bij het verlenen van volledige toegang tot een postbus onder een van de vermelde Store.exe-versies in de sectie "Oorzaak", de gebruiker impliciet machtiging verleend om berichten te verzenden als eigenaar van de postbus. Hierdoor leken berichten die werden verzonden via een andere account met volledige postbustoegang, ogenschijnlijk verzonden door de eigenaar van de postbus.

De machtiging Verzenden als is nu op verzoek van een groot aantal Microsoft Exchange-klanten losgekoppeld van de machtiging Volledige postbustoegang. Ten grondslag hieraan lag de behoefte om:
  • Vervalste e-mailberichten te voorkomen.
  • Een duidelijk onderscheid te maken tussen e-mailberichten die worden verzonden door een gemachtigde en door de feitelijke eigenaar van de postbus.
In alle volgende versies van het Exchange-informatiearchief moet de machtiging Verzenden als nu verplicht expliciet worden ingesteld om iemand berichten in de hoedanigheid van eigenaar van de postbus te kunnen laten verzenden. Er zijn echter drie uitzonderingen op deze regel:
  • De machtiging Verzenden als is niet expliciet vereist voor de eigen postbus in de account van de postbuseigenaar.
  • De machtiging Verzenden als is niet expliciet vereist voor de bijbehorende externe account van een postbus.
  • De machtiging Verzenden als is niet expliciet vereist voor de account van een gemachtigde die al volledige toegang tot de postbus heeft.
Zie de sectie 'Meer informatie' voor meer informatie over deze uitzonderingen.

Alle overige accounts met gedeeltelijke of volledige toegang tot een postbus moeten nu expliciet de machtiging Verzenden als hebben voor de account van de postbuseigenaar om e-mail als eigenaar van de postbus te kunnen verzenden. Dit geldt ook voor serviceaccounts voor toepassingen waarmee mobiele gebruikers e-mailberichten kunnen verzenden of andere soortgelijke taken kunnen uitvoeren.

De machtiging Verzenden als moet worden verleend aan de serviceaccount van elk gebruikersobject dat eigenaar is van een postbus. Het is niet mogelijk om de machtiging Verzenden als alleen te verlenen aan een Exchange-server of een databaseobject alsof de machtiging impliciet zou gelden voor alle postbussen in de database.

Dit komt omdat de machtiging Verzenden als een Active Directory-machtiging is die specifiek wordt ingesteld voor de betrokken Active Directory-objecten. Als u de machtiging Verzenden als instelt voor een Exchange-databaseobject, wordt die machtiging dus verleend voor de database zelf. Die machtiging geldt dan echter niet voor gebruikers die zelf een machtiging Verzenden als hebben voor een postbus in de database.

Opmerking Het verlenen van de machtiging Ontvangen als voor een Exchange-database heeft functioneel gezien hetzelfde effect als het verlenen van volledige toegang tot alle postbussen in die database. Bij de machtiging Verzenden als werkt dit niet zo.

Hier geldt de machtiging alleen voor het databaseobject zelf. De machtiging Verzenden als geldt niet voor de postbussen in de database. De machtiging Ontvangen als wordt daarentegen overgenomen door alle postbussen in de database.

Het verschil tussen deze twee machtigingen wordt wellicht duidelijker wanneer u de postbussen in een database beschouwt als mappen in een afzonderlijke postbus (de 'databasepostbus'). Als u volledige toegang hebt tot de database, hebt u automatisch toegang tot de volledige inhoud van de database, dus ook tot alle postbussen.

De machtiging Verzenden als is gekoppeld aan de identiteit van een Active Directory-gebruikersobject, en niet aan de postbusgegevens die zijn opgeslagen in een database. De verzending van e-mailberichten is daarbij niet gebonden aan een bepaalde postbus of database, maar aan een specifieke gebruiker. Dit kan een gebruiker zijn met de account van de postbuseigenaar of een andere account die de machtiging Verzenden als heeft.

Ga als volgt te werk wanneer u een andere account expliciet wilt machtigen om berichten te verzenden als eigenaar van de postbus:
  1. Start de console Active Directory: gebruikers en computers.
  2. Klik op Geavanceerd in het menu Beeld. Als deze optie niet is geselecteerd, is de beveiligingspagina niet zichtbaar voor gebruikersaccountobjecten.
  3. Open de eigenschappen van de gebruikersaccount die eigenaar is van de postbus.
  4. Open het tabblad Beveiliging.
  5. Voeg de account waarvoor deze gebruiker de machtiging Verzenden als moet hebben toe aan de lijst met groepen en gebruikers (indien nodig).
  6. Klik in het vak Machtigingen op de machtiging 'Verzenden als' toestaan voor de betreffende account.
  7. Klik op OK.
  8. Start de service Microsoft Exchange Information Store opnieuw op de betreffende Exchange-server.
Opmerking Als u de service Microsoft Exchange Information Store niet opnieuw start, wordt de machtigingencache van de service bijgewerkt om ervoor te zorgen dat de nieuwe machtigingen worden geactiveerd op basis van de waarde die is ingesteld in de volgende registersubsleutel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem


Naam: Mailbox Cache Age Limit
Type: REG_DWORD
Grondtal: Decimaal
Gegevens: De limiet voor de ouderdom van de informatiecache voor de mailbox in minuten.
De standaardwaarde voor deze registervermelding is 120 minuten (twee uur). Als u deze registervermelding wijzigt, moet u de service Microsoft Exchange Information Store opnieuw starten.

Opmerking Als u zeer lage time-outwaarden instelt, kan dit invloed hebben op de prestaties van de server.

De machtiging Verzenden als toewijzen aan verschillende accounts

Aan het einde van dit artikel treft u een voorbeeldscript aan waarmee u op een Active Directory-domein kunt zoeken naar accounts die volledige toegang tot een postbus bieden, maar waarmee geen berichten als eigenaar van de postbus kunnen worden verzonden. Dergelijke machtigingen zijn kenmerkend voor de service- of resourceaccounts waarop deze beveiligingsupdate betrekking heeft. U kunt het script gebruiken om een exportbestand te genereren dat u vervolgens kunt doornemen, wijzigen en importeren om de machtiging Verzenden als te verlenen aan de accounts die daarvoor in aanmerking komen.

U kunt de machtiging Verzenden als ook door overname verlenen aan elk gebruikersobject in een Active Directory-domein of een container. Als u de machtiging op deze manier toewijst, loopt u mogelijk het risico dat deze ook aan onbedoelde objecten wordt verleend. Bovendien bestaat het risico dat er machtigingen verloren gaan wanneer u gemachtigde objecten uit de container verwijdert. Deze methode wordt derhalve niet aangeraden. Bedenk goed welke beveiligingsrisico's u loopt voordat u deze werkwijze toepast.

Ga als volgt te werk als u de machtiging Verzenden als wilt verlenen aan een afzonderlijke account voor alle gebruikersaccounts in een Active Directory-domein of een container:
  1. Start de console Active Directory: gebruikers en computers.
  2. Klik op Geavanceerd in het menu Beeld. Als deze optie niet is geselecteerd, is de beveiligingspagina niet zichtbaar voor domein- en containerobjecten.
  3. Open de eigenschappen van het domein of de container en klik op de beveiligingspagina.
  4. Klik op de knop Geavanceerd.
  5. Als de te machtigen account niet in de lijst staat, klikt u op Toevoegen en selecteert u de account. Dubbelklik anders op de account die u wilt bewerken.
  6. Klik op Gebruikersobjecten in de lijst Van toepassing op.
  7. Verleen de account de machtiging Verzenden als.
  8. Klik op OK totdat alle dialoogvensters gesloten zijn.
Opmerking In het script dat aan het einde van dit artikel wordt beschreven, wordt rekening gehouden met overgenomen machtigingen. Als u de machtiging Verzenden als met deze methode toekent, worden de accounts met de overgenomen machtiging Verzenden als dus onzichtbaar voor het script. Als u deze accounts later wilt verwerken met het script, moet u eerst de overgenomen machtiging Verzenden als verwijderen.

Speciale regels voor accounts met een adminSDHolder-beveiliging

Wanneer u het script uitvoert om de machtiging Verzenden als te verlenen, worden postbuseigenaars die tevens als domeinbeheerder fungeren, uitgesloten. Wij raden u met klem af om postbussen in te schakelen voor gebruikersaccounts die rechten als domeinbeheerder of adminSDHolder-beveiligingen hebben.

Het adminSDHolder-object is een sjabloon voor accounts die uitgebreide Active Directory-beheerdersrechten hebben. Om misbruik van de bevoegdheden te voorkomen, moeten alle accounts die met een adminSDHolder-object zijn beveiligd, dezelfde toegangsrechten hebben als het adminSDHolder-object.

Als u de rechten of machtigingen wijzigt van een account die via een adminSDHolder-object is beveiligd, wordt de wijziging direct automatisch ongedaan gemaakt. Stel dat u op een domeinbeheerdersobject de machtiging Verzenden als verleent aan een serviceaccount van een toepassing, dan wordt automatisch een achtergrondtaak uitgevoerd om deze machtiging in te trekken.

Het is daarom niet mogelijk om de machtiging te verlenen aan toepassingsserviceaccounts die zijn beveiligd door een adminSDHolder-object. In dat geval moet u het adminSDHolder-object zelf wijzigen. Als u het adminSDHolder-object zelf wijzigt, worden de toegangsrechten van alle beveiligde accounts dienovereenkomstig aangepast. Wijzig het adminSDHolder-object alleen nadat u hebt bekeken welke gevolgen dit heeft voor de beveiliging.

Ga als volgt te werk om een postbus te koppelen aan een account die wordt beveiligd door een adminSDHolder-object:
  1. Start de console Active Directory: gebruikers en computers.
  2. Klik op Geavanceerd in het menu Beeld. Als deze optie niet is geselecteerd, is de beveiligingspagina niet zichtbaar voor gebruikersaccountobjecten.
  3. Maak een gewone gebruikersaccount voor de eigenaar van de postbus.
  4. Wijs een postbus op een Exchange-server toe aan deze gewone gebruikersaccount.
  5. Open de eigenschappen van de nieuwe account voor de postbuseigenaar.
  6. Verleen in het vak Exchange Advanced de machtiging Volledige postbustoegang aan de beveiligde beheerdersaccount.
  7. Wijs op de beveiligingspagina de machtiging Verzenden als toe aan de beveiligde beheerdersaccount.
  8. Klik op OK om het eigenschappenvenster van het postbuseigenaarobject te sluiten.
  9. Klik met de rechtermuisknop op het object van de postbuseigenaaraccount en klik op Account uitschakelen om de account uit te schakelen voor elke aanmelding.
Voor meer informatie over met adminSDHolder beveiligde accounts klikt u op de volgende artikelnummers in de Microsoft Knowledge Base:
907434Het recht Verzenden als wordt verwijderd van een gebruikersobject nadat u het recht Verzenden als configureert in de module Active Directory: gebruikers en computers in Exchange Server
318180AdminSDHolder-thread heeft invloed op transitieve leden van distributiegroepen
817433Overgedragen machtigingen zijn niet beschikbaar en overname wordt automatisch uitgeschakeld
306398AdminSDHolder-object heeft invloed op de overdracht van besturing voor vorige Administrator-accounts

Speciale taken voor BlackBerry Enterprise Server

Taak 1: Controleer of de BlackBerry Enterprise Server wordt uitgevoerd als een afzonderlijke, unieke account

Controleer of de BlackBerry Enterprise Server wordt uitgevoerd als een afzonderlijke account die speciaal is ingesteld voor beheertaken. Deze account wordt standaard 'BESAdmin' genoemd.

Als u werkt met een afzonderlijke account voor het beheer van de BlackBerry Enterprise Server, gaat u verder met taak 2.

Als u niet werkt met een afzonderlijke account, maakt u de account in deze stap. Vervolgens gebruikt u deze account voor het uitvoeren van beheertaken. Raadpleeg voor het instellen van de account de instructies op een van de volgende BlackBerry-websites, afhankelijk van uw versie van BlackBerry Enterprise Server.

Als u werkt met BlackBerry Enterprise Server 4.0 of BlackBerry Enterprise Server 4.1, gaat u naar de volgende BlackBerry-website:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=9174704&sliceId=&dialogID=11024244&stateId=1 0 11020632
Als u werkt met BlackBerry Enterprise Server 3.6, gaat u naar de volgende BlackBerry-website:
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=KB04334&sliceId=SAL_Public&dialogID=11016727&stateId=1 0 11020358

Taak 2: Controleer of de BlackBerry Enterprise Server-serviceaccount de juiste machtigingen heeft

Controleer of de BlackBerry Enterprise Server-serviceaccount de juiste machtigingen heeft.

Opmerking Als de account zich binnen een domein bevindt, controleert u of de account alleen lid is van de groep Domeingebruikers. Op een domeincontroller moet de account lid zijn van de ingebouwde groep Administrators.
  1. Voer de volgende stappen uit op de BlackBerry Enterprise Server:
    1. Controleer of de account lid is van de lokale groep Administrators.
    2. Wijs de machtigingen 'Lokaal aanmelden' en 'Aanmelden als service' toe aan de account.
  2. Ken Exchange View-Only Administrator-machtigingen toe op het niveau van de beheergroep. Ga hiervoor als volgt te werk:
    1. Klik in Exchange System Manager met de rechtermuisknop op de eerste Exchange Server-beheergroep en klik op Beheer overdragen.
    2. De BlackBerry Enterprise Server-serviceaccount wordt vermeld met de rol Exchange View-Only Administrator.
  3. Ken de machtigingen 'Verzenden als', 'Ontvangen als' en 'Administer Information Store' toe op het serverniveau van elke Exchange Server-server. Ga hiervoor als volgt te werk:
    1. Klik in Exchange System Manager met de rechtermuisknop op de eerste Exchange Server-beheergroep en vouw de groep Servers uit.
    2. Klik met de rechtermuisknop op een Exchange Server-server, klik op Eigenschappen en klik op Beveiliging.
    3. Selecteer de BlackBerry Enterprise Server-serviceaccount in het bovenste deelvenster. Controleer in het onderste deelvenster of de machtigingen 'Verzenden als', 'Ontvangen als' en 'Administer Information Store' zijn ingesteld op Toestaan.
    4. Herhaal stap 3b en 3c voor elke Exchange Server-server.
  4. Ken de machtigingen 'Verzenden als', 'Ontvangen als' en 'Administer Information Store' toe aan het postbusarchief. Ga hiervoor als volgt te werk:
    1. Klik in Exchange System Manager met de rechtermuisknop op de eerste Exchange-beheergroep en vouw de groep Servers uit.
    2. Vouw de eerste postbusarchiefgroep uit, klik met de rechtermuisknop op elk postbusarchief, klik op Eigenschappen en klik op Beveiliging.
    3. Selecteer de BlackBerry Enterprise Server-serviceaccount in het bovenste deelvenster. Controleer in het onderste deelvenster of de machtigingen 'Verzenden als', 'Ontvangen als' en 'Administer Information Store' zijn ingesteld op Toestaan.
    4. Herhaal stap 4b en 4c voor elk postbusarchief op elke Exchange Server-server.
  5. Ga als volgt te werk vanuit de module Active Directory: gebruikers en computers:
    1. Klik met de rechtermuisknop op de gebruiker voor wie u machtigingen wilt toevoegen en klik op Eigenschappen.
    2. Open het tabblad Beveiliging, voeg de BlackBerry Enterprise Server-serviceaccount toe en schakel het selectievakje Verzenden als in.
Als u niet werkt met Exchange Server 2003, gaat u naar taak 3.

Taak 3: Maak de cache op de BlackBerry Enterprise Server leeg

Voor het leegmaken van de machtigingencache in Information Store start u de services die betrekking hebben op Blackberry opnieuw en start u Microsoft Exchange Information Store opnieuw. Nadat u Information Store opnieuw hebt gestart, moet u de services die betrekking hebben op RIM Blackberry opnieuw starten om aan de ?BESAdmin?-account de nieuwe toegevoegde machtiging Verzenden als te geven voor Exchange Information Store.

Ga voor meer informatie over specifieke Blackberry-serververeisten naar de volgende BlackBerry-website :
http://www.blackberry.com/btsc/search.do?cmd=displayKC&docType=kc&externalId=KB04707&sliceId=SAL_Public&dialogID=3016166&stateId=0%200%202441763

Meer informatie

De machtigingen voor de toegang tot Exchange-postbussen en -mappen zijn verdeeld over Active Directory- en Microsoft Exchange-databases. Hoewel beide soorten machtigingen worden ingesteld in de Active Directory-beheerconsole, worden ze op twee afzonderlijke locaties opgeslagen.

Machtigingen die worden ingesteld op de beveiligingspagina van een object, gelden in het algemeen als Active Directory-machtigingen. Machtigingen die worden ingesteld op de pagina met geavanceerde Exchange-postbusrechten, zijn meestal machtigingen in een Exchange-database. Wanneer u de postbusrechtenpagina probeert te openen terwijl de database van een gebruiker niet beschikbaar is, wordt daarom het volgende foutbericht weergegeven:
De Microsoft Information Store-service is niet beschikbaar.
De machtiging Associated External Account vormt een uitzondering op de regel dat machtigingen die worden ingesteld via de pagina met geavanceerde Exchange-postbusrechten worden opgeslagen in de Exchange-database. Associated External Account is eigenlijk helemaal geen machtiging, maar een manier om het Active Directory-kenmerk msExchMasterAccountSID in te stellen. Het kenmerk msExchMasterAccountSID is geen machtiging, maar bepaalt hoe andere machtigingen werken. Zie de sectie 'Bijbehorende externe accounts' voor meer informatie over het kenmerk msExchMasterAccountSID.

Opmerking Het Active Directory-kenmerk msExchMailboxSecurityDescriptor is een reservekopie van een subset van de feitelijke postbusrechten. Het wordt intern door Exchange gebruikt voor uiteenlopende doeleinden. Het kenmerk msExchMailboxSecurityDescriptor wordt automatisch bijgewerkt wanneer een beheerder de huidig toegewezen rechten wijzigt via een daartoe bestemde en ondersteunde interface.

Als de beheerder het kenmerk msExchMailboxSecurityDescriptor echter rechtstreeks bewerkt, worden de wijzigingen niet overgenomen in het Exchange-archief en worden de wijzigingen niet doorgevoerd. Er is dus geen garantie dat de wijzigingen daadwerkelijk worden gesynchroniseerd met de feitelijke postbusrechten. Gebruik het kenmerk msExchMailboxSecurityDescriptor niet voor het lezen of schrijven van postbusrechten.

Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie:
310866Postbusrechten in Exchange Server 2003 en Exchange 2000 Server instellen voor een postbus die aanwezig is in het informatiearchief

De machtiging Volledige postbustoegang wordt in het Exchange-databasearchief opgeslagen. De machtiging Verzenden als wordt opgeslagen in Active Directory. Voordat het bestand Store.exe van Exchange werd gewijzigd (zie eerder in dit artikel), werd de machtiging Verzenden als niet gecontroleerd als de afzender tevens over de machtiging Volledige postbustoegang beschikte.

Opmerking U kunt de machtiging Verzenden als toekennen zonder de machtiging Volledige postbustoegang te verlenen. In deze situaties werd door Exchange altijd de machtiging Verzenden als gecontroleerd.

Het toewijzen van de machtiging Verzenden als met de machtiging Volledige postbustoegang betekent dat beheerders van Exchange-servers zichzelf eenvoudig machtigingen kunnen verlenen om vanuit elke beheerde postbus berichten te verzenden namens anderen. Beheerders hebben namelijk het volledige beheer over een Exchange-database. Door Verzenden als los te koppelen van Volledige postbustoegang, kunnen Active Directory-beheerders dit nu voorkomen. De machtiging Verzenden als is nu immers een Active Directory-machtiging en wordt niet meer opgeslagen in het Exchange-archief. Het proces wordt daarom niet meer per se door Exchange-beheerders bestuurd.

Postbuseigenaren

Een postbuseigenaar is de Active Directory-gebruikersaccount waarvan het kenmerk msExchMailboxGUID verwijst naar de GUID (Globally Unique Identifier) van een bepaalde postbus. De unieke GUID van een bepaalde postbus mag binnen een forest slechts voor één account worden gebruikt. Er verschijnt een foutbericht wanneer u een tweede eigenaar met dezelfde GUID probeert in te stellen.

Wanneer u een postbus inschakelt voor een account of een losgekoppelde postbus wilt verbinden aan een Active Directory-account, wordt de GUID van die postbus automatisch op die account ingesteld. U hoeft de GUID van een postbus slechts zelden direct in te stellen en over het algemeen wordt dit dan ook afgeraden.

Bijbehorende externe accounts

Exchange wordt doorgaans geïnstalleerd en geconfigureerd in een forest met bronnen. Een forest met bronnen is een forest dat tot een ander forest behoort dan de gebruikersaccounts waaraan de postbussen van het systeem worden toegewezen. Dit levert een probleem op bij de instelling van het kenmerk msExchMailboxGUID. Dit kenmerk kan namelijk uitsluitend worden ingesteld voor objecten in hetzelfde forest als de Exchange-server.

U omzeilt dit probleem door een postbus in te schakelen voor een account in het Exchange-serverforest en deze account te koppelen aan een andere account in een ander forest of in een Microsoft Windows NT 4-domein. U kunt dit doen door de machtiging Associated External Account te verlenen. U kunt deze machtiging slechts aan één account verlenen. De betreffende account moet tot een ander forest behoren.

Wanneer u de machtiging Associated External Account instelt, wordt de SID-waarde van de externe account toegewezen aan het kenmerk msExchMasterAccountSID van de postbuseigenaar. Het is dus in feite geen machtiging maar een handige manier om de waarde van het kenmerk msExchMasterAccountSID te bepalen. Nadat u het kenmerk msExchMasterAccountSID hebt ingesteld, heeft de externe account met de betreffende SID dezelfde toegangsrechten tot Exchange als een echte account voor postbuseigenaars.

Dit geldt overigens alleen voor de toegang tot Exchange, en niet voor de volledige Active Directory-toegang. Wanneer u de machtiging Associated External Account hebt ingesteld, moet u de account van de postbuseigenaar uitschakelen voor aanmeldingen zodat alle machtigingen ook volgens verwachting werken.
300456Machtigingen en rechten op clients blijven niet behouden nadat ze zijn toegewezen in Exchange 2000

Overdrachtsscenario's

Een gemachtigde is een gebruiker die gedeeltelijk toegang heeft tot andermans postbus en bevoegd is om berichten te versturen namens de postbuseigenaar. In een overdrachtsscenario kan bijvoorbeeld een administratief medewerker worden gemachtigd om toegang te krijgen tot de agenda van een leidinggevende. Doorgaans krijgt de gemachtigde daarbij lees- en schrijftoegang tot de agenda. Verder kan de gemachtigde in staat worden gesteld om namens de leidinggevende e-mailberichten te beantwoorden.

Deze gemachtigde toegang wordt verleend door de gemachtigde toe te voegen aan het meerwaardige kenmerk publicDelegates van de postbuseigenaar. Alle gebruikers die aan dit kenmerk worden toegewezen, krijgen de machtiging Verzenden namens voor de postbuseigenaar. Wanneer een gemachtigde een bericht verstuurt met de naam van de eigenaar in het vak Van, bevat het vak Van de volgende waarde:
<Naam van gemachtigde> namens <Postbuseigenaar>
Het bericht wordt verzonden door de gemachtigde en niet door of in de hoedanigheid van de postbuseigenaar.

Hieronder ziet u in welke twee interfaces u de machtiging Verzenden namens kunt verlenen en andere rechten kunt overdragen:
  • Gebruik in het postbuseigenaarobject het dialoogvenster Exchange General om de machtiging Verzenden namens te verlenen.
  • Gebruik in Microsoft Outlook het dialoogvenster Gemachtigden.
Met beide methoden wordt het kenmerk publicDelegates ingesteld. In Outlook kunt u echter ook nog speciale machtigingen voor mappen verlenen aan de gemachtigde. U kunt deze machtigingen ook rechtstreeks aan de gemachtigde verlenen via de eigenschappen van een bepaalde map in Outlook.

In sommige gevallen kan het kenmerk publicDelegates niet in Outlook worden ingesteld.
329622Machtiging 'Verzenden namens' is niet toegekend aan een gebruiker na delegeren van toegang in Outlook

Een gemachtigde die toegang heeft gekregen tot uw postbus, kan de machtiging Verzenden namens ook gebruiken zonder dat u toegang tot een van de postbusmappen hebt verleend. Verzenden namens vormt de basismachtiging van een gemachtigde. De machtigingen voor uw postbusmappen moeten afzonderlijk worden toegewezen aan de gemachtigde.

Een gemachtigde zal de mappen waartoe hij of zij toegang heeft, doorgaans openen in Microsoft Outlook. Dit kan door te klikken op Openen in het menu Bestand van Outlook en vervolgens te klikken op Map van andere gebruiker.

Een gemachtigde kan uw postbus ook openen door deze als extra postbus in te stellen op het tabblad Geavanceerd van zijn of haar Outlook-profiel. Op deze manier wordt uw postbus weergegeven in de Outlook-mappenstructuur van de gemachtigde. Bovendien heeft de gemachtigde zo toegang tot alle postbusmappen waarvoor hij of zij is gemachtigd.

Mogelijk wilt u dat een gemachtigde in sommige gevallen de machtiging Verzenden namens heeft en in andere gevallen de machtiging Verzenden als. Ga als volgt te werk om een gemachtigde deze twee machtigingen te verlenen:
  • Verleen de gemachtigde de machtiging Volledige postbustoegang. Dit is niet mogelijk via Outlook. Een beheerder van Active Directory moet dit doen door de account van de postbuseigenaar te wijzigen. De machtiging Volledige postbustoegang is iets anders dan een eigenaarsmachtiging voor elke map in uw postbus.
  • Verleen de gemachtigde niet de machtiging Verzenden als. Anders worden alle berichten van de gemachtigde met deze machtiging verzonden en lijkt het alsof ze door de postbuseigenaar zelf zijn verstuurd en is de machtiging Verzenden namens niet meer beschikbaar voor de gemachtigde.
In dit scenario moeten gemachtigden zich bij hun eigen postbus aanmelden om de machtiging Verzenden namens te kunnen gebruiken. Wanneer de gemachtigden een bericht uit een van uw mappen beantwoorden of doorsturen, wordt dit automatisch namens u verzonden. Als ze een nieuw bericht maken namens u, moeten ze uw naam invoeren in het vak Van om het namens u te kunnen verzenden.

Alle berichten uit uw mappen of secundair geopende postbus worden automatisch met deze machtiging verzonden, zolang er in het huidige Outlook-profiel van de gemachtigde maar een eigen primaire postbus is ingesteld.

Wanneer een gemachtigde berichten wil verzenden alsof u ze zelf hebt gestuurd, moeten ze zich bij uw postbus aanmelden met een afzonderlijk Outlook-profiel waarmee uitsluitend uw postbus kan worden geopend. Alle berichten die de gemachtigden met dit profiel verzenden, zijn automatisch afkomstig van u.

Accounts zoeken die wel een machtiging Volledige postbustoegang hebben maar geen machtiging Verzenden als

Met het onderstaande voorbeeldscript kunt u per Active Directory-domein zoeken naar gebruikersaccounts waarbij de machtiging Volledige postbustoegang is verleend zonder de machtiging Verzenden als.

Belangrijk Raadpleeg de sectie Postbuseigenaren met gemachtigden voordat u machtigingen wijzigt.

Het script heeft de volgende drie werkmodi:
  • Exporteren: u kunt een lijst met gebruikers exporteren die volledige toegang tot een postbus hebben, maar niet in andermans hoedanigheid kunnen verzenden. U kunt deze lijst vervolgens bekijken in Kladblok of een andere teksteditor en de accounts die niet in aanmerking komen voor de machtiging Verzenden als, uit de lijst verwijderen.
  • Importeren: u kunt een lijst met gebruikers importeren die volledige toegang tot een postbus hebben en die tevens de machtiging Verzenden als moeten krijgen. U kunt dit script niet gebruiken om zowel de machtiging Volledige postbustoegang als de machtiging Verzenden als te verlenen. Elke account moet al over de machtiging Volledige postbustoegang beschikken om in aanmerking te kunnen komen voor de machtiging Verzenden als.
  • SetAll: u kunt de machtiging Verzenden als verlenen aan alle gebruikers in het domein die al volledige toegang hebben tot een bepaalde postbus. Er wordt een logboekbestand gegenereerd met dezelfde indeling als het exportbestand. In deze werkmodus worden de export- en importmodus gezamenlijk uitgevoerd zonder dat het exportbestand kan worden bewerkt.
Opmerking Dit script kent geen herstelfunctie.

Vereiste machtigingen voor het script

U kunt het script alleen uitvoeren als u zich hebt aangemeld met een beheerdersaccount die behoort tot hetzelfde forest als de postbuseigenaarsaccounts. Het script werkt mogelijk niet met een account met beheerdersrechten voor verschillende forests. Daarnaast functioneert het script mogelijk niet als u het uitvoert vanaf een werkstation dat lid is van een ander forest dan het forest waarvan de postbuseigenaarsaccounts deel uitmaken.

Gezien deze beperkingen kunt u het script beter met verschillende beheerdersaccounts uitvoeren in één aanmeldingssessie door de opdracht RunAs.exe te gebruiken. Deze procedure kan handig zijn als de machtigingen voor Active Directory en Exchange Server verdeeld zijn over verschillende segmenten en er geen centrale account is voor het beheren van alle Exchange-servers of alle Active Directory-domeinen. U kunt een opdrachtprompt openen om het script voor elke beheerdersaccount uit te voeren. Neem het volgende voorbeeld:
RunAs.exe /user:domain\account CMD.EXE
Opmerking Het is niet toegestaan diverse instanties van het script tegelijkertijd uit te voeren voor hetzelfde domein.

Het exportbestand bevat de volgende velden. De velden worden beschreven in de volgorde waarin ze in het exportbestand voorkomen.
  • Display name of the mailbox owner account

    Het uitvoerbestand bevat mogelijk meer dan één regel met dezelfde postbuseigenaar. Deze extra regels ontstaan als er verschillende accounts zijn met volledige toegang tot dezelfde postbus.
  • Domain and logon name of an account that has the Full Mailbox Access permissions but not the Send As permission

    Wanneer een account toegang heeft tot meerdere postbussen, wordt deze mogelijk verschillende malen opgenomen in het exportbestand. Dit kan bijvoorbeeld gebeuren bij serviceaccounts voor toepassingen of wanneer iemand postbussen voor verschillende resources beheert.
  • Display Name of an account that has the Full Mailbox Access permission but not the Send As permission

    Dit veld maakt samen met het veld Logon Name een eenvoudige identificatie van de account mogelijk.
  • Delegate Status of the mailbox owner

    Als de postbuseigenaar gemachtigden heeft, bevat dit veld de waarde Has Delegates. Als de postbuseigenaar geen gemachtigden heeft, bevat dit veld de waarde No Delegates.
  • Enabled or disabled status of the mailbox owner account

    Met dit veld kunt u postbusaccounts van resources of voor verschillende forests identificeren. Dergelijke accounts zijn meestal uitgeschakeld.
  • Full Distinguished Name of the mailbox owner account

    Met dit veld kunt u het domein en de container van de account van de postbuseigenaar identificeren.
  • Full Distinguished Name of the mailbox owner?s mailbox database

    Dit veld bevat de database, archiefgroep, server en beheergroep van de postbus.
In het volgende voorbeeld heeft de gebruiker met de aanmeldingsnaam 'NoSendAs' volledige toegang tot de postbus 'Mailbox Owner', maar geen bevoegdheid om berichten te verzenden als postbuseigenaar:
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [overige velden zijn weggelaten]

Werkstation voor beheer configureren voor het script

In dit script worden Exchange-beheerinterfaces gebruikt voor de communicatie met Exchange-servers. Daarom moet u het script uitvoeren vanaf een Exchange-server of vanaf een werkstation waarop Exchange-systeembeheer mogelijk is.

Het exportbestand bewerken

Het exportbestand heeft een Unicode-tekstindeling zonder opmaak zodat het kan worden weergegeven in de tekensets voor verschillende talen. Mogelijk kan het bestand in sommige teksteditors niet goed worden weergegeven of bewerkt, of wordt het in een ANSI- of ASCII-indeling opgeslagen. In de Kladblok-versie van Microsoft Windows XP, Microsoft Windows 2000 en Microsoft Windows 2003 worden alle Unicode-tekstbestanden juist verwerkt. Ook in Microsoft Excel worden Unicode-tekstbestanden juist weergegeven en bewerkt.

Het uitvoerbestand heeft een indeling met tabs als scheidingstekens waarbij de verschillende veldwaarden tussen driedubbele aanhalingstekens worden geplaatst. Met deze driedubbele aanhalingstekens kunnen de import- en exportbewerkingen in Excel op een deterministische manier worden uitgevoerd. De driedubbele aanhalingstekens worden in Excel zelf als enkele aanhalingstekens weergeven, en weer omgezet naar hun driedubbele vorm zodra u het bestand als Unicode-tekst opslaat. Hieronder wordt beschreven hoe u een exportbestand in Excel kunt openen en opslaan.

U kunt een exportbestand ook zonder Excel filteren, namelijk met de hulpprogramma's Find.exe of Findstr.exe. Deze hulpprogramma's worden met Windows meegeleverd. Met deze programma's kunt u woorden in een bestand zoeken en alleen de regels retourneren die deze woorden bevatten of juist niet bevatten. Als u bijvoorbeeld een lijst wilt maken van alle postbuseigenaren in het bestand die gemachtigden hebben, gebruikt u een van deze opdrachten om een bestand te maken dat alleen regels bevat die de tekenreeks ?Has Delegates? bevat:
Find.exe ?Has Delegates? OriginalFile.txt > HasDelegates.txt

Findstr.exe /C:?Has Delegates? OriginalFile.txt > HasDelegates.txt
Een ander voorbeeld is dat u alle postbuseigenaren wegfiltert die een of meer gemachtigden hebben. De schakeloptie /V zorgt ervoor dat alleen de regels zonder de zoekwoorden worden geselecteerd. U kunt de volgende opdrachten gebruiken om een bestand te genereren met alle regels waarop niet de tekenreeks ?Has Delegates? voorkomt:
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
Met deze opdrachten kunt u een bestand genereren dat alle accounts bevat waarbij de account van een toepassingsserver wel de machtiging Volledige postbustoegang, maar niet de machtiging Verzenden als heeft. Met de schakeloptie /I maakt de opdracht onderscheid tussen hoofdletters en kleine letters:
Find.exe /I ?domain\ServiceAccount? OriginalFile.txt > ServiceAccount.txt

Findstr.exe /I /C:?domain\ServiceAccount? OriginalFile.txt > ServiceAccount.txt
Opmerking Als u Find.exe gebruikt om een gefilterd bestand te genereren, moet u de koptekstregels verwijderen die door Find.exe worden toegevoegd aan het begin van het bestand.

Gebruik geen jokertekens (*.*) bij Findstr.exe. Als u dat wel doet, wordt elke regel in het uitvoerbestand voorafgegaan door de bestandsnaam. Controleer het uitvoerbestand van Find.exe of Findstr.exe zorgvuldig om er zeker van te zijn dat u met het filter de gewenste accounts hebt geselecteerd of uitgesloten.

In het volgende voorbeeld heeft de gebruiker met de aanmeldingsnaam 'NoSendAs' volledige toegang tot de postbus 'Mailbox Owner', maar geen bevoegdheid om berichten te verzenden als postbuseigenaar.
"""Mailbox Owner""" """Domain\NoSendAs""" """No Send As User""" """Has Delegates""" """Enabled""" [overige velden zijn weggelaten] 

Postbuseigenaren met gemachtigden

Het is meestal niet verstandig een gemachtigde met volledige postbustoegang (ook wel een 'supergemachtigde' genoemd) de machtiging Verzenden als te verlenen. Wanneer de supergemachtigde zich rechtstreeks aanmeldt bij de postbus van de postbuseigenaar, kan de gemachtigde verzenden als de postbuseigenaar. Wanneer de gemachtigde de overdrachtsfuncties van Outlook gebruikt (Additional Mailboxes to Open en Map van andere gebruiker openen), worden berichten verzonden namens de postbuseigenaar en niet als de eigenaar.

Verleen de machtiging Verzenden als alleen aan een supergemachtigde als deze altijd als de postbuseigenaar en nooit namens de postbuseigenaar berichten mag verzenden. Het is raadzaam in het exportbestand te zoeken naar de tekst 'Has Delegates' en vervolgens vast te stellen of een genoemde supergemachtigde in werkelijkheid een gemachtigde van de postbuseigenaar is.

Het exportbestand bevat alleen supergemachtigden. Gewone gemachtigden beschikken niet over de machtiging Volledige postbustoegang. Bovendien is het zo dat berichten van een gewone gemachtigde met de machtiging Verzenden als altijd als de postbuseigenaar worden verzonden. Dit is zelfs zo wanneer de gewone gemachtigde geen volledige postbustoegang heeft. Als u de machtiging Verzenden als toewijst aan een gemachtigde terwijl dit niet de bedoeling is, kunt u de machtiging later weer intrekken.

Een exportbestand openen in Excel

  1. Zorg dat Excel is gestart.
  2. Kies het bestandstype Tekstbestand om het bestand in Excel te openen. Hiermee start u de wizard Tekst importeren.
  3. Wijzig of accepteer de volgende instellingen in de wizard Tekst importeren:
    • Oorspronkelijk gegevenstype: Gescheiden
    • Importeren starten bij rij: 1
    • Oorspronkelijk bestand: Unicode (UTF-8)
    • Scheidingstekens: Alleen tab
    • Dubbele scheidingstekens als één beschouwen: niet gemarkeerd
    • Tekstscheidingsteken " (dubbele aanhalingstekens)

Een gewijzigd exportbestand opslaan in Excel

  1. Klik op Opslaan als in het exportbestand.
  2. Geef het bestand een andere naam zodat u een kopie van het oorspronkelijke bestand achter de hand hebt.
  3. Klik op Bestand, Opslaan als, typ de naam van het uitvoerbestand en selecteer Unicodetekst in de vervolgkeuzelijst Opslaan als.

Syntaxis van het script

U moet dit tekstmodusscript uitvoeren in een opdrachtpromptvenster en niet vanuit het dialoogvenster Uitvoeren. Klik op Start, klik op Uitvoeren, typ cmd in het dialoogvenster Openen en klik op OK om het opdrachtpromptvenster te openen.

De foutenlogboeken en exportbestanden worden opgeslagen in de huidige directory van de opdrachtprompt. U moet de juiste rechten hebben om bestanden in deze directory te kunnen maken.
Voer de volgende opdracht in als u hulp nodig hebt voor de opdrachtregel:
CSCRIPT AddSendAs.vbs
Voer de volgende opdracht in om een exportbestand te maken met de gebruikers van een bepaald domein die wel een machtiging Volledige postbustoegang hebben maar geen machtiging Verzenden als:
CSCRIPT AddSendAs.vbs [naam van domeincontroller] ?Export
Voorbeeld:
CSCRIPT AddSendAs.vbs CORP-DC-1 ?Export
Het gegenereerde exportbestand wordt opgeslagen onder de naam "Send_As_Export_H_MM_SS.txt".
Voer de volgende opdracht in om een gewijzigd exportbestand te importeren:
CSCRIPT AddSendAs.vbs [naam van domeincontroller] ?Import [bestandsnaam]


Voorbeeld:


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

De machtiging Verzenden als per postbus in het domein verlenen aan alle gebruikers die al volledige toegang hebben tot een postbus

Opmerking Gebruik de modus SetAll niet als er in de organisatie gemachtigden zijn die tevens de machtiging Volledige postbustoegang hebben. Als u in dat geval SetAll gebruikt, krijgen deze gemachtigden de machtiging Verzenden als. Hierdoor zouden zij hun berichten in de hoedanigheid van de postbuseigenaar kunnen verzenden en niet meer namens deze persoon. U lost dit probleem op door de onbedoeld verleende machtiging Verzenden als weer in te trekken.
CSCRIPT AddSendAs.vbs [naam van domeincontroller] ?SetAll


Voorbeeld:


CSCRIPT AddSendAs.vbs CORP-DC-1 ?SetAll
In de modus SetAll wordt het exportbestand Send_As_Export_H_MM_SS.txt gegenereerd. Dit bestand bevat een overzicht van alle gewijzigde accounts. Sla dit bestand daarom op. Als u het script opnieuw zou uitvoeren, krijgt u een ander uitvoerresultaat waarin de accounts die eerder de machtiging Verzenden als hebben gekregen, niet meer zijn opgenomen.

De fouten die optreden tijdens de uitvoering van het script worden opgeslagen in het bestand Send_As_Errors_H_MM_SS.txt. De naam van het foutenlogboek bevat hetzelfde tijdstempel uren_minuten_seconden als het bijbehorende exportbestand.

Scriptaanpassingen

Uw organisatie kan accounts hebben die machtigingen voor veel objecten hebben en waarvan u de machtigingen niet wilt wijzigen. Om de grootte van het exportbestand toch te beperken, kunt u deze accounts filteren door de variabele FMA_EXCLUSIVE_LIST aan het begin van het script aan te passen. Deze variabele bevat standaard enkele accounts die worden onderdrukt in de uitvoer van het script. Gebruik de volgende syntaxis om extra accounts toe te voegen:
& "<Domain\Name>" & OUTPUT_DELIMITER
U kunt bijvoorbeeld de waarde van de volgende variabele zo veranderen:
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER
dat deze als volgt wordt weergegeven:
FMA_EXCLUSIVE_LIST = OUTPUT_DELIMITER & "NT AUTHORITY\SELF" & OUTPUT_DELIMITER & "NT AUTHORITY\SYSTEM" & OUTPUT_DELIMITER & "Mijndomein\Service1" & OUTPUT DELIMITER
Deze aanpassing onderdrukt de vermelding van de account Mijndomein\Service1 in het exportbestand, evenals die van NT AUTHORITY\SELF en NT AUTHORITY\SYSTEM. De waarde voor Domein\Naam is hoofdlettergevoelig en moet exact overeenkomen met de waarde zoals die voorkomt of zou voorkomen in het exportbestand.

Het script bevat nog een variabele die u kunt aanpassen, namelijk FMA_EXCLUSIVE_EXSVC. Deze variabele heeft standaard de waarde '\Exchange Services' & OUTPUT_DELIMITER. 'Exchange Services' is de naam van een account waaraan machtigingen worden toegekend via ADC (Active Directory Connector) in Exchange 5.5 en scenario's voor coëxistentie en migratie van Exchange 2000. Deze account wordt in verschillende domeinen gemaakt en kan herhaaldelijk voorkomen in het exportbestand als u de account niet onderdrukt.

U kunt voor de variabele FMA_EXCLUSIVE_EXSVC maar één account opgeven als waarde. De accountnaam is niet hoofdlettergevoelig. De accountnaam moet beginnen met een backslash (\) en mag niet het domein bevatten waarvan de account deel uitmaakt. De account wordt onderdrukt voor alle domeinen waarin de account aanwezig is.

Als u migratieprogramma's of methoden voor adreslijstsynchronisatie van andere leveranciers hebt gebruikt, kan er in diverse domeinen nog een andere account aanwezig zijn die uitgebreide machtigingen heeft voor de postbussen van gebruikers. In dat geval kunt u de naam van die account gebruiken in plaats van '\Exchange Services'.

Tips en opmerkingen

  • Verwijder niet de door het script gegenereerde log- en foutenbestanden. Deze bestanden bevatten mogelijk belangrijke informatie waarmee u achteraf problemen kunt oplossen of wijzigingen kunt herstellen. Accounts waaraan u de machtiging Verzenden als hebt verleend, worden namelijk niet meer opgehaald wanneer u een nieuw exportbestand maakt.
  • De verwerkingstijd van het script zal toenemen wanneer een Exchange-server of -database is uitgeschakeld. In dat geval kunt u het exportbestand per database sorteren en de regels van een uitgeschakelde database verplaatsen naar een ander bestand dat u later importeert.
  • Accounts waarvan de aanmeldingsnaam eindigt op "$" of die de naam NT AUTHORITY\SYSTEM hebben, worden niet opgenomen in het uitvoerbestand. Voor deze systeemaccounts is de machtiging Verzenden als meestal niet nodig. Door ze uit te sluiten blijft het exportbestand overzichtelijk.
  • Het exportbestand kan alleen in een Unicode-indeling worden geïmporteerd. Als u het bestand per ongeluk als een ANSI-tekstbestand hebt opgeslagen, opent u dit bestand in Kladblok en slaat u het op als Unicodetekst.
  • Als de importbewerking mislukt, probeert u het probleem op te lossen door het script uit te voeren voor testaccounts en een importbestand met één regel te maken. Maak een testaccount voor een postbus op een Exchange-server en geef een andere testaccount de machtiging Volledige postbustoegang (en dus niet de machtiging Verzenden als).
  • Het script beschikt niet over een herstelmodus. De machtigingen Verzenden als die u met dit script hebt verleend, kunt u alleen handmatig intrekken of verwijderen met een ander daartoe bestemd script. Er is geen herstelmodus toegevoegd om te voorkomen dat het script wordt gebruikt om de machtiging Verzenden als te verwijderen voor alle gebruikers in een organisatie.
  • Het script kan niet goed overweg met accounts die naast de machtiging Volledige postbustoegang, de machtiging Volledig beheer hebben voor een gebruikersobject. De machtiging Volledig beheer betekent dat de account ook de machtiging Verzenden als heeft, maar het script exporteert de account alsof dat niet het geval is. Hierdoor kan de grootte van het exportbestand toenemen, maar het kan geen kwaad het bestand te importeren en de machtiging Verzenden als toch toe te kennen aan dergelijke accounts.
  • Active Directory-gebruikersaccounts die DN-namen hebben en tabs of een oneven aantal dubbele aanhalingstekens bevatten, kunnen niet door dit script worden verwerkt. Het script kan wel goed overweg met namen die een even aantal dubbele aanhalingstekens bevatten, zoals in het volgende voorbeeld:
    ?CN=First ?Nickname? Last,DC=domain,DC=com?
  • Excel ondersteunt bestanden met maximaal 65.535 regels. Als uw uitvoerbestand groter is, moet u het bestand opsplitsen voordat u het opent in Excel.
  • Het bestand Send_As_Errors bevat accounts waarvoor het niet gelukt is machtigingen te lezen of weg te schrijven. Als andere accounts in het domein zonder problemen zijn verwerkt, hebben de accounts in dit bestand mogelijk iets gemeenschappelijks waardoor het script ze niet kan verwerken. Veelvoorkomende problemen zijn onder andere:
    • Geen beheerdersrechten voor het bekijken of instellen van eigenschappen voor de accounts.
    • Het postbusarchief van Exchange is niet actief.
    • Het werkstation is geen lid van hetzelfde domein.
    • De gebruikte administratieve account is niet afkomstig uit hetzelfde forest.
U kunt dit script uitvoeren door alle regels tussen BEGIN SCRIPT en EINDE SCRIPT te kopiëren naar een gewone teksteditor, zoals Kladblok. Sla het script op als AddSendAs.vbs. BEGIN SCRIPT
Option Explicit

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

'Lijst voor uitsluiten definiëren, als FMA is ingesteld op een gebruiker in deze lijst wordt de gebruiker genegeerd.  Als u 
'deze lijst wilt wijzigen, gebruik dan dezelfde syntaxis. Elke alias moet
'worden voorafgegaan door een OUTPUT_DELIMITER en worden gevolgd door
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

'Soort machtiging: Toestaan of Weigeren
const ACCESS_ALLOWED_OBJECT_ACE_TYPE  = 5
const ADS_ACETYPE_ACCESS_ALLOWED = &h0
const ADS_ACETYPE_ACCESS_DENIED = &h1

'Vlaggen: Instelling van de overname
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

'ADSI-constanten declareren
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

'naam uitvoerbestand
Const EXPORT_FILE = "Send_As_Export"
Const ERROR_FILE = "Send_As_Errors"

' scriptmodus
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"

' argumentindex
Const ARG_INDEX_MODE = 1
Const ARG_INDEX_DC = 0
Const ARG_INDEX_FILENAME = 2

' kolomindex in import-/exportbestand
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("WAARSCHUWING: als u verdergaat, krijgt elke account in het domein die de")
		WScript.StdOut.WriteLine("machtiging Volledige postbustoegang heeft voor een postbus ook de")
		WScript.StdOut.WriteLine("machtiging Verzenden als.")
		WScript.StdOut.WriteLine()
		WScript.StdOut.WriteLine("U kunt de lijst met postbussen bekijken voordat u Verzenden als toekent")
		WScript.StdOut.WriteLine("door deze bewerking te annuleren en de modus -Export van dit script te gebruiken.")
		WScript.StdOut.WriteLine()
		WScript.StdOut.Write("Druk op J om door te gaan of op een andere toets om te annuleren: ")
		strInput = WScript.StdIn.ReadLine()
		If (UCase(strInput) <> UCase("J")) Then
			WScript.Quit
		End If	
	End If
	
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("""!"" geeft een fout aan tijdens de verwerking van een object.")
	WScript.StdOut.WriteLine("     Controle van " & sErrorsFilename)
	WScript.StdOut.WriteLine("Wordt gestart...")
	WScript.StdOut.WriteLine()

	err.Clear	
	Set rootDSE = GetObject("LDAP://" & sDCServer & "/RootDSE")
	sDomainContainer = rootDSE.Get("defaultNamingContext")
	WScript.StdOut.WriteLine("Zoeken van domeincontroller [ " & sDCServer & " ] voor domein [ " & sDomainContainer & " ]")
	
	If (err.number <> 0) Then
		WScript.StdOut.WriteLine("Het domein of de domeincontroller is niet gevonden, fout:" & err.Description)
		objfileError.WriteLine("Het domein of de domeincontroller is niet gevonden, fout:" & 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("Geen binding met Active Directory-server, fout:" & err.Description)
		objfileError.WriteLine("Geen binding met Active Directory-server, fout:" & err.Description)
		WScript.Quit
	End If

	Set objCommand.ActiveConnection = conn
	WScript.StdOut.WriteLine("Zoeken naar gebruikersaccounts van postbuseigenaren 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("Geen postbuseigenaren gevonden, fout:" & err.Description)
		objfileError.WriteLine("Geen postbuseigenaren gevonden, fout:" & err.Description)
		WScript.Quit
	End If

	If (rsUsers.RecordCount = 0) Then
		WScript.StdOut.WriteLine("Geen gebruikersaccounts van postbuseigenaren gevonden in " & sDomainContainer & ".")
		objfileError.WriteLine("Geen gebruikersaccounts van postbuseigenaren gevonden 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
		
		'Postbusobjecten in Microsoft Exchange System Objects-container overslaan
		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 gebruikersobject niet ophalen: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Fout: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			Set objSDMailBox = objUser.MailboxRights
			If (err.number <> 0) Then
				objfileError.WriteLine("Ophalen van postbusrechten mislukt: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Fout: " & err.Description)
				fError = True
				fOneError = True
				err.Clear
			End If
			Set objSDNTsecurity = objUser.ntSecurityDescriptor
			If (err.number <> 0) Then
				objfileError.WriteLine("Ophalen van NTSD mislukt: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Fout: " & 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 uitvoeren op de lijst publicDelegates van deze gebruiker
			err.Clear
			msPublicDelegates = objUser.Get("publicDelegates")
			If (err.number <> 0) Then
				'Er is geen lijst publicDelegates ingesteld voor deze gebruiker
				sIfPublicDelegate = STRNO
				err.Clear
			Else
				sIfPublicDelegate = STRYES
			End If
			
			err.Clear 			
			FindAllFMAUsers objSDMailBox
			
			If (TotalACE > dArraySize) Then
			'Toewijzing van groter bereik vereist
				dArraySize = TotalACE + 1
				ReDim Preserve sTrusteeAlias(dArraySize)
				FindAllFMAUsers objSDMailBox
			End If
			If (err.number <> 0) Then
				objfileError.WriteLine("Kan postbusrechten van gebruiker niet opzoeken: " & rsUsers.Fields(0).Value)
				objfileError.WriteLine("Fout: " & 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
					
					'Controleren of Send As ACE al is opgenomen in NT-beveiligingsdescriptor
					'Indien waar, dan toestaan of weigeren en hoeft Verzenden als niet meer worden toegevoegd
					CheckSendAsACE objDACLNTSD, sTrusteeAlias(i)
					
					'Opmerking: Vermeldingen voor weigeren hebben voorrang op die voor toestaan. 
					'Overslaan bij Deny ACE voor volledige postbustoegang, ook als er een Allow ACE bestaat
					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
			
						'Vertrouwde gebruikers met volledige postbustoegang doorzoeken om displayName op te halen
						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("zoekbereik") = ADS_SCOPE_SUBTREE
						objCmdDisplayName.Properties("Paginagrootte") = 100
						objCmdDisplayName.Properties("Time-out") = 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
							'Kan weergavenaam van gebruiker niet opzoeken, gebruik alias
							sFMAUserDisplayName = sAlias							
						Else
							sFMAUserDisplayName = objTrustee.displayName							
						End If
	
						'uitvoer naar exportbestand
						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("Gebruiker " & rsUsers.Fields(0).Value & " is niet toegevoegd aan het exportbestand. Wijs handmatig machtigingen toe aan deze gebruiker.")
							objfileError.WriteLine("Fout: " & 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 ADSI niet bijwerken voor gebruiker: " & rsUsers.Fields(0).Value)
						objfileError.WriteLine("Fout: " & 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("Als u verdergaat, krijgen alle accounts in " & sImportFilePath)
	WScript.StdOut.WriteLine("met de machtiging Volledige postbustoegang voor een postbus ook de")
	WScript.StdOut.WriteLine("machtiging Verzenden als.")
	WScript.StdOut.WriteLine()
	WScript.StdOut.Write("Druk op J om door te gaan of op een andere toets om te annuleren: ")
	strInput = WScript.StdIn.ReadLine()
	If (UCase(strInput) <> UCase("J")) Then
		WScript.Quit
	End If	
	WScript.StdOut.WriteLine("Wordt gestart...")
	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("Het importbestand " & sImportFilePath & "kan niet worden geopend, fout:" & err.Description)
		objfileError.WriteLine("Het importbestand " & sImportFilePath & "kan niet worden geopend, fout:" & 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("Kan rij niet parseren: " & sOneRow )
			objfileError.WriteLine("Fout: " & err.Description)
			err.Clear
			fError = True
			fOneError = True
		End If
		
		If (UserPath <> sArraySplit(COLUMN_INDEX_USERADSPATH)) Then
			'Een nieuwe gebruiker
			If (fNeedToAddSendAs = True ) Then
				'bestaande gebruiker bijwerken
				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("Machtigingen niet bijgewerkt voor gebruiker: " & UserPath)
					objfileError.WriteLine("Fout: " & 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 gebruikersobject niet ophalen: " & UserPath)
				objfileError.WriteLine("Fout: " & err.Description)
				err.Clear
				fError = True
				fOneError = True
			End If
		End If
	
		'newACE toevoegen  Vereist?
		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
		'laatste gebruiker bijwerken
		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("Machtigingen niet bijgewerkt voor gebruiker: " & UserPath)
			objfileError.WriteLine("Fout: " & 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("Script voltooid met een of meer fouten. Zie " & sErrorsFilename)
Else
	WScript.StdOut.WriteLine("Script voltooid zonder fouten.")
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
		' Discretionaire ACL-gegevens (DACL) openen.
		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
				'Een lijst bijhouden van degenen met een expliciete volledige postbustoegang op postbusniveau
				sFMAExplicitAllow = sFMAExplicitAllow & objACE.Trustee & OUTPUT_DELIMITER			
			End If
		ElseIf (( (objACE.AccessMask And EX_FULLMailbox_AccessMask) <>0 ) And (objACE.AceType = ADS_ACETYPE_ACCESS_DENIED)) Then
			'Een lijst behouden van degenen die volledige postbustoegang is geweigerd, met OUTPUT_DELIMITER als scheidingsteken, 
			'inclusief overgenomen en expliciete op postniveau ingestelde waarden
			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("Machtigingen voor deze gebruiker kunnen niet worden gelezen: " & sTAlias)
				objfileError.WriteLine("Fout: " & err.Description)
				err.Clear
				fError = True
				fOneError = True
			End If			
		Next			
	End If	
End Function

Function IfFMAAllowed(sTrustee)
	'FMA allow ACE gevonden. Instellen op true
	fFMAAllowed = True
	
	If ( (0 <> Instr(sFMADeniedList, sTrustee)) And (0 = Instr(sFMAExplicitAllow, sTrustee))	) Then
		'Indien denied ACE gevonden en expliciete volledige postbustoegang ontbreekt
		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("Exportbestand of foutbestanden kunnen niet worden gemaakt: " & err.Description)
		objfileError.WriteLine("Exportbestand of foutbestanden kunnen niet worden gemaakt: " & err.Description)
		fError = True
		fOneError = True
		WScript.Quit	
	End If

End Function

Function DisplaySyntax
	WScript.StdOut.WriteLine("Syntaxis:")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Accounts exporteren die wel volledige postbustoegang hebben, maar niet Verzenden als:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Export")
	WScript.StdOut.WriteLine("OPMERKING: De lijst wordt opgeslagen als Send_As_Export_UU_MM_SS.txt")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Verzenden als toekennen aan alle accounts in een exportbestand:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -Import ""bestandsnaam.txt""")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Verzenden als toekennen aan alle accounts in het domein met volledige postbustoegang:")
	WScript.StdOut.WriteLine("     CSCRIPT """ & WScript.ScriptName & """ DOMAIN_CONTROLLER -SetAll")
	WScript.StdOut.WriteLine("OPMERKING: Accounts worden opgenomen in Send_As_Export_UU_MM_SS.txt")
	WScript.StdOut.WriteLine()
	WScript.StdOut.WriteLine("Voor alle modi worden fouten opgeslagen in Send_As_Errors_UU_MM_SS.txt")

	WScript.Quit	
End Function
END SCRIPT

Microsoft verstrekt deze code zonder enige expliciete of impliciete garantie, daaronder mede begrepen, maar niet beperkt tot impliciete garanties met betrekking tot de verkoopbaarheid en/of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal VBScript, alsmede met de hulpprogramma's waarmee procedures worden gemaakt en waarmee fouten in procedures worden opgespoord. U kunt desgewenst contact opnemen met Microsoft Product Support Services voor uitleg over de functie van een bepaalde procedure. Microsoft Product Support Services is echter niet bereid de voorbeelden aan te passen om extra functies toe te voegen of om procedures te maken die aan uw specifieke eisen voldoen.
Als u meer informatie wilt over de beschikbare ondersteuningsopties van Microsoft, gaat u naar de volgende Microsoft-website:
http://support.microsoft.com/default.aspx?scid=fh;[LN];CNTACTMS
De niet-Microsoft-producten die in dit artikel worden vermeld, worden vervaardigd door fabrikanten die geheel onafhankelijk zijn van Microsoft. Microsoft verleent dan ook geen enkele garantie, impliciet noch anderszins, omtrent de prestaties of de betrouwbaarheid van deze producten.

Eigenschappen

Artikel ID: 912918 - Laatste beoordeling: maandag 26 november 2007 - Wijziging: 17.2
De informatie in dit artikel is van toepassing op:
  • Microsoft Exchange 2000 Server Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange Server 2003 Enterprise Edition
Trefwoorden: 
kbtshoot kbpending kbbug kbprb KB912918

Geef ons 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