Microsoft Exchange 2013 Multi-Tenancy

Bij Microsoft Exchange 2010 was het pas na het installeren van SP1 mogelijk om een Multi-Tenancy installatie uit te voeren met de /hosting mode switch. Het is met Exchange 2013 niet meer mogelijk om een Multi-Tenancy installatie te doen met de /hosting mode switch. Bij Exchange 2013 met Cumulatieve Update 1(CU1) is het mogelijk om gebruik te maken van Address Book Policies(ABP) om organisaties op de mailserver van elkaar te scheiden. Dit heeft een groot voordeel ten opzichte van Exchange 2010 in de /hosting mode. Bij Exchange 2013 CU1 is het mogelijk om de GUI te blijven gebruiken om de mailboxen te beheren. Komt hier de Exchange Management Shell(EMS) dan compleet te vervallen? Nee, de ABPs moeten nog steeds aangemaakt en beheerd worden via de EMS.

Hoe werken Address Book Policies?

ABPs bevatten de volgende lijsten:

  • Eén Global Address List(GAL)
  • Eén Offline Address Book(OAB)
  • Eén room(voor boeking doeleinden)
  • Eén of meer adres lijsten

In de volgende figuur bestaat Address Book Policy A uit een verzameling van verschillende objecten die in de organisatie(in de onderste helft van de figuur) bestaan. De resulterende omvang van de ABP is gelijk aan die van de GAL in het beleid, in dit geval GAL1. Wanneer de ABP is gecreëerd en is toegekend aan een mailbox gebruiker, zijn alleen de adres objecten binnen de kaders van de ABP zichtbaar. Zo worden bijvoorbeeld de mailadressen en contacten van een andere organisatie niet zichtbaar in het mailprogramma van de desbetreffende gebruiker.

How to deploy Address Book Policies in Exchange 2013

bron: technet.microsoft.com

De ABPs worden van kracht wanneer het mailprogramma van de gebruiker verbinding maakt met de Client Access server in Exchange 2013. Wanneer er wijzigingen worden gedaan in de ABP en de ABP update, worden de wijzigingen pas doorgevoerd wanneer de gebruiker zijn mailprogramma opnieuw laat verbinden of de RPC Client Access server herstart op de Exchange 2013 mailbox server.

Address Book Routing Agent

In een Exchange organisatie dat geen gebruik maakt van ABPs, zijn de volgende zaken van toepassing wanneer een emailbericht wordt gemaakt in Outlook of Outlook Web App(OWA) en verzonden wordt naar een andere gebruiker in dezelfde Exchange organisatie:

  • De emailadres wordt omgezet. Bijvoorbeeld wanneer je typt [email protected] in het veld Aan, het SMTP adres wordt omgezet naar de displaynaam Martien van Dijk.
  • Je kan contactpersonen van andere gebruikers inzien. Nadat de naam is omgezet, kan je dubbelklikken op de naam van deze gebruiker en zo al de contactinformatie inzien, zoals geboortedatum en telefoonnummer.

Wanneer je gebruik maakt van ABPs, en je niet wilt dat gebruikers van andere organisaties op dezelfde mailserver elkaars privé-informatie bekijken, kan de Address Book Policy Routing agent worden ingeschakeld. De ABP Routing agent is een Transport agent die bepaalt hoe gebruikers worden omgezet in de organisatie. Wanneer de ABP is geïnstalleerd en geconfigureerd, verschijnen gebruikers die zijn toegevoegd aan verschillende GAL’s als externe gebruikers. Contactinformatie van externe gebruikers kan, zoals het hoort, niet worden ingezien. Ook al maken deze ‘externe gebruikers’ gebruik van dezelfde mailserver.

ABPs configureren in Exchange 2013

Installeer Microsoft Exchange 2013 op de server en installeer vervolgens de Cumulatieve Update 1.

De Address Book Policies zijn alleen beschikbaar na de installatie van Cumulatieve update 1!

Wanneer je gebruik wil gaan maken van ABPs in een Database Availability Group omgeving moet de Cumulatieve Update 1 zowel op de Mailboxservers als op de Client Access Servers geïnstalleerd worden.

Na de installatie van CU1 kan de ABP geïnstalleerd worden. Voer de volgende commando’s uit in de EMS:

Set-TransportConfig –AddressBookPolicyRoutingEnabled $True

Hou hier wel rekening mee op welke locatie Microsoft Exchange geïnstalleerd is(standaard: C:\Program Files\Exchange Server\V15\…).

Install-TransportAgent -Name "ABP Routing Agent" -TransportAgentFactory "Microsoft.Exchange.Transport.Agent.AddressBookPolicyRoutingAgent.AddressBookPolicyRoutingAgentFactory" -AssemblyPath "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\agents\AddressBookPolicyRoutingAgent\Microsoft.Exchange.Transport.Agent.AddressBookPolicyRoutingAgent.dll"

Nu moet de ABP agent worden ingeschakeld:

Enable-TransportAgent "ABP Routing Agent"

Herstart nu de Transport Service

Set-TransportConfig –AddressBookPolicyRoutingEnabled $True

De volgende foutmelding kan optreden, wanneer je dit uitvoert op een Client Access Server, waar alleen de Client Access Role op geïnstalleerd staat:

The Transport Agent assembly file “C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\agents\AddressBookPol icyRoutingAgent\Microsoft.Exchange.Transport.Agent.AddressBookPolicyRoutingAgent.dll” doesn’t exist. Parameter name: AssemblyPath + CategoryInfo : InvalidArgument: (:) [Install-TransportAgent], ArgumentException + FullyQualifiedErrorId : 222037C,Microsoft.Exchange.Management.AgentTasks.InstallTransportAgent + PSComputerName : cas.future.local

Op de Client Access server bestaat de locatie ‘agents\AddressBookPol
icyRoutingAgent\Microsoft.Exchange.Transport.Agent.AddressBookPolicyRoutingAgent.dll’ niet. Kopieer deze locatie van een mailboxserver naar de Client Access server. TIP De Microsoft Exchange versie op de mailboxserver moet wel overeenkomen met de Microsoft Exchange installatie op de Client Access server. Wanneer dit niet het geval is, gaat het niet werken.


Toevoegen tanant + ABP in Exchange 2013

Het is belangrijk dat de organisaties in de Active Directory in een aparte Organization Unit zijn geconfigureerd. Ik gebruik in het onderstaande voorbeeld parent OU ‘Tenants’.

  • Zorg ervoor dat je de domeinnaam wijzigt in je eigen domeinnaam;
  • Elke gebruiker moet als CostumAttribute1 ‘New Tenant 1′ ingevoerd hebben;
  • Zorg dat elke gebruiker een UPN toegewezen heeft voor de specifieke tenant;

Aanmaken UPN
Deze commando dient uitgevoerd te worden op de Domain Controller in Powershell.

Set-ADForest -Identity future.local -UPNSuffixes @{Add="newtenant1.nl"}

Active Directory add User Principal Name(UPN)

Maak een Accepted Domain

New-AcceptedDomain -Name "New Tenant 1" -DomainName microsoftblog.nl 
-DomainType:Authoritative

Maak een Global Address List

New-GlobalAddressList -Name "New Tenant 1 - GAL"
 -ConditionalCustomAttribute1
 "New Tenant 1" -IncludedRecipients MailboxUsers -RecipientContainer
 "future.local/Tenants/New Tenant 1"

Maak een All Rooms adres lijst

New-AddressList -Name "New Tenant 1 - All Rooms" -RecipientFilter
 "(CustomAttribute1 -eq 'New Tenant 1') -and (RecipientDisplayType -eq
 'ConferenceRoomMailbox')" -RecipientContainer "future.local/Tenants/
New Tenant 1"

Maak een All Users adres lijst

New-AddressList -Name "New Tenant 1 - All Users" -RecipientFilter
 "(CustomAttribute1 -eq 'New Tenant 1') -and (ObjectClass -eq 'User')"
 -RecipientContainer "future.local/Tenants/New Tenant 1"

Maak een All Contacts adres lijst

New-AddressList -Name "New Tenant 1 - All Contacts" -RecipientFilter
 "(CustomAttribute1 -eq 'New Tenant 1') -and (ObjectClass -eq
 'Contact')" -RecipientContainer "future.local/Tenants/New Tenant 1"

Maak een All Groups adres lijst

New-AddressList -Name "New Tenant 1 - All Groups" -RecipientFilter
 "(CustomAttribute1 -eq 'New Tenant 1') -and (ObjectClass -eq 'Group')"
 -RecipientContainer "future.local/Tenants/New Tenant 1"

Maak een Offline Address Book aan

New-OfflineAddressBook -Name "New Tenant 1" -AddressLists
 "New Tenant 1 - GAL"

Maak een Email Address Policy aan

New-EmailAddressPolicy -Name "New Tenant 1 - EAP"
 -RecipientContainer "future.local/Tenants/New Tenant 1" 
-IncludedRecipients "AllRecipients" -ConditionalCustomAttribute1
 "New Tenant 1" -EnabledEmailAddressTemplates "SMTP:%[email protected]"
,"smtp:%g.%[email protected]"

Maak een Email Address Book Policy aan

New-AddressBookPolicy -Name "New Tenant 1" -AddressLists
 "New Tenant 1 - All Users", "New Tenant 1 - All Contacts", 
"New Tenant 1 - All Groups" -GlobalAddressList "New Tenant 1 - GAL"
 -OfflineAddressBook "New Tenant 1" -RoomList "New Tenant 1 - All Rooms"

Nadat je dit allemaal hebt aangemaakt, voer de Update-OfflineAddressBook commando uit op alle adresslijsten. Doe dit ook nadat er een mailbox is aangemaakt. Bij het aanmaken van een mailbox kan de ABP worden toegewezen. Deze kan ook toegewezen worden via de EMS:

Get-Mailbox -resultsize unlimited | where {$_.CustomAttribute15
 -eq "TAIL"} | Set-Mailbox -AddressBookPolicy "New Tenant 1"

Mocht je nog tegen problemen aanlopen, of heeft dit artikel je geholpen? Laat gerust een reactie achter.

Address Book Policies in Microsoft Exchange 2013 http://windowstechblog.nl/wp-content/uploads/2013/04/Exchange-2013-Address-Book-Policies.pnghttp://windowstechblog.nl/wp-content/uploads/2013/04/Exchange-2013-Address-Book-Policies.png Martien van Dijk Microsoft Exchange ,,,
Microsoft Exchange 2013 Multi-Tenancy Bij Microsoft Exchange 2010 was het pas na het installeren van SP1 mogelijk om een Multi-Tenancy installatie uit te voeren met de /hosting mode switch. Het is met Exchange 2013 niet meer mogelijk om een Multi-Tenancy installatie te doen met de /hosting mode switch. Bij Exchange...
<h2>Microsoft Exchange 2013 Multi-Tenancy</h2> Bij Microsoft Exchange 2010 was het pas na het installeren van SP1 mogelijk om een Multi-Tenancy installatie uit te voeren met de /hosting mode switch. Het is met Exchange 2013 niet meer mogelijk om een Multi-Tenancy installatie te doen met de /hosting mode switch. Bij Exchange 2013 met <a title="Exchange 2013 Cumulatieve update 1 download" href="http://www.microsoft.com/en-us/download/details.aspx?id=38176" target="_blank">Cumulatieve Update 1(CU1)</a> is het mogelijk om gebruik te maken van Address Book Policies(ABP) om organisaties op de mailserver van elkaar te scheiden. Dit heeft een groot voordeel ten opzichte van Exchange 2010 in de /hosting mode. Bij Exchange 2013 CU1 is het mogelijk om de GUI te blijven gebruiken om de mailboxen te beheren. Komt hier de Exchange Management Shell(EMS) dan compleet te vervallen? Nee, de ABPs moeten nog steeds aangemaakt en beheerd worden via de EMS. <h2>Hoe werken Address Book Policies?</h2> ABPs bevatten de volgende lijsten: <ul> <li>Eén Global Address List(GAL)</li> <li>Eén Offline Address Book(OAB)</li> <li>Eén room(voor boeking doeleinden)</li> <li>Eén of meer adres lijsten</li> </ul> In de volgende figuur bestaat Address Book Policy A uit een verzameling van verschillende objecten die in de organisatie(in de onderste helft van de figuur) bestaan. De resulterende omvang van de ABP is gelijk aan die van de GAL in het beleid, in dit geval GAL1. Wanneer de ABP is gecreëerd en is toegekend aan een mailbox gebruiker, zijn alleen de adres objecten binnen de kaders van de ABP zichtbaar. Zo worden bijvoorbeeld de mailadressen en contacten van een andere organisatie niet zichtbaar in het mailprogramma van de desbetreffende gebruiker. De ABPs worden van kracht wanneer het mailprogramma van de gebruiker verbinding maakt met de Client Access server in Exchange 2013. Wanneer er wijzigingen worden gedaan in de ABP en de ABP update, worden de wijzigingen pas doorgevoerd wanneer de gebruiker zijn mailprogramma opnieuw laat verbinden of de RPC Client Access server herstart op de Exchange 2013 mailbox server. <h2>Address Book Routing Agent</h2> In een Exchange organisatie dat geen gebruik maakt van ABPs, zijn de volgende zaken van toepassing wanneer een emailbericht wordt gemaakt in Outlook of Outlook Web App(OWA) en verzonden wordt naar een andere gebruiker in dezelfde Exchange organisatie: <ul> <li>De emailadres wordt omgezet. Bijvoorbeeld wanneer je typt <strong>[email protected]</strong> in het veld <strong>Aan</strong>, het SMTP adres wordt omgezet naar de displaynaam <strong>Martien van Dijk</strong>.</li> <li>Je kan contactpersonen van andere gebruikers inzien. Nadat de naam is omgezet, kan je dubbelklikken op de naam van deze gebruiker en zo al de contactinformatie inzien, zoals geboortedatum en telefoonnummer.</li> </ul> Wanneer je gebruik maakt van ABPs, en je niet wilt dat gebruikers van andere organisaties op dezelfde mailserver elkaars privé-informatie bekijken, kan de Address Book Policy Routing agent worden ingeschakeld. De ABP Routing agent is een Transport agent die bepaalt hoe gebruikers worden omgezet in de organisatie. Wanneer de ABP is geïnstalleerd en geconfigureerd, verschijnen gebruikers die zijn toegevoegd aan verschillende GAL's als externe gebruikers. Contactinformatie van externe gebruikers kan, zoals het hoort, niet worden ingezien. Ook al maken deze 'externe gebruikers' gebruik van dezelfde mailserver. <h2>ABPs configureren in Exchange 2013</h2> <a title="Installeer Exchange 2013 op Windows Server 2012" href="http://www.windowstechblog.nl/installeer-exchange-2013-op-windows-server-2012/" target="_blank">Installeer Microsoft Exchange 2013 </a> op de server en installeer vervolgens de <a title="Microsoft Exchange 2013 Cumulatieve update 1 download" href="http://www.microsoft.com/en-us/download/details.aspx?id=38176" target="_blank">Cumulatieve Update 1</a>. <div class="info">De Address Book Policies zijn alleen beschikbaar na de installatie van Cumulatieve update 1!</div> Wanneer je gebruik wil gaan maken van ABPs in een Database Availability Group omgeving moet de Cumulatieve Update 1 zowel op de Mailboxservers als op de Client Access Servers geïnstalleerd worden. Na de installatie van CU1 kan de ABP geïnstalleerd worden. Voer de volgende commando's uit in de EMS: <pre>Set-TransportConfig –AddressBookPolicyRoutingEnabled $True</pre> Hou hier wel rekening mee op welke locatie Microsoft Exchange geïnstalleerd is(standaard: C:\Program Files\Exchange Server\V15\...). <pre>Install-TransportAgent -Name "ABP Routing Agent" -TransportAgentFactory "Microsoft.Exchange.Transport.Agent.AddressBookPolicyRoutingAgent.AddressBookPolicyRoutingAgentFactory" -AssemblyPath "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\agents\AddressBookPolicyRoutingAgent\Microsoft.Exchange.Transport.Agent.AddressBookPolicyRoutingAgent.dll"</pre> Nu moet de ABP agent worden ingeschakeld: <pre>Enable-TransportAgent "ABP Routing Agent"</pre> Herstart nu de Transport Service <pre>Set-TransportConfig –AddressBookPolicyRoutingEnabled $True</pre> De volgende foutmelding kan optreden, wanneer je dit uitvoert op een Client Access Server, waar alleen de Client Access Role op geïnstalleerd staat: <span style="color: #ff0000;">The Transport Agent assembly file "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\agents\AddressBookPol icyRoutingAgent\Microsoft.Exchange.Transport.Agent.AddressBookPolicyRoutingAgent.dll" doesn't exist. Parameter name: AssemblyPath + CategoryInfo : InvalidArgument: (:) [Install-TransportAgent], ArgumentException + FullyQualifiedErrorId : 222037C,Microsoft.Exchange.Management.AgentTasks.InstallTransportAgent + PSComputerName : cas.future.local</span> Op de Client Access server bestaat de locatie 'agents\AddressBookPol icyRoutingAgent\Microsoft.Exchange.Transport.Agent.AddressBookPolicyRoutingAgent.dll' niet. Kopieer deze locatie van een mailboxserver naar de Client Access server. <strong>TIP</strong> De Microsoft Exchange versie op de mailboxserver moet wel overeenkomen met de Microsoft Exchange installatie op de Client Access server. Wanneer dit niet het geval is, gaat het niet werken. <center><script type="text/javascript">// <![CDATA[ google_ad_client = "ca-pub-1997716288391887"; /* Ad onder Artikel */ google_ad_slot = "8510274265"; google_ad_width = 468; google_ad_height = 60; // ]]></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[ // ]]></script></center> <h2>Toevoegen tanant + ABP in Exchange 2013</h2> Het is belangrijk dat de organisaties in de Active Directory in een aparte Organization Unit zijn geconfigureerd. Ik gebruik in het onderstaande voorbeeld parent OU 'Tenants'. <ul> <li>Zorg ervoor dat je de domeinnaam wijzigt in je eigen domeinnaam;</li> <li>Elke gebruiker moet als CostumAttribute1 'New Tenant 1' ingevoerd hebben;</li> <li>Zorg dat elke gebruiker een UPN toegewezen heeft voor de specifieke tenant;</li> </ul> <strong>Aanmaken UPN</strong> Deze commando dient uitgevoerd te worden op de Domain Controller in Powershell. <pre>Set-ADForest -Identity future.local -UPNSuffixes @{Add="newtenant1.nl"}</pre> <a href="http://www.martienvandijk.nl/wp-content/uploads/Active-Directory-add-User-Principal-NameUPN.png"><img class="size-full wp-image-3412 alignnone" alt="Active Directory add User Principal Name(UPN)" src="http://www.martienvandijk.nl/wp-content/uploads/Active-Directory-add-User-Principal-NameUPN.png" width="575" height="127" /></a> <strong>Maak een Accepted Domain</strong> <pre>New-AcceptedDomain -Name "New Tenant 1" -DomainName microsoftblog.nl -DomainType:Authoritative</pre> <strong>Maak een Global Address List</strong> <pre>New-GlobalAddressList -Name "New Tenant 1 - GAL" -ConditionalCustomAttribute1 "New Tenant 1" -IncludedRecipients MailboxUsers -RecipientContainer "future.local/Tenants/New Tenant 1"</pre> <strong>Maak een All Rooms adres lijst</strong> <pre>New-AddressList -Name "New Tenant 1 - All Rooms" -RecipientFilter "(CustomAttribute1 -eq 'New Tenant 1') -and (RecipientDisplayType -eq 'ConferenceRoomMailbox')" -RecipientContainer "future.local/Tenants/ New Tenant 1"</pre> <strong>Maak een All Users adres lijst</strong> <pre>New-AddressList -Name "New Tenant 1 - All Users" -RecipientFilter "(CustomAttribute1 -eq 'New Tenant 1') -and (ObjectClass -eq 'User')" -RecipientContainer "future.local/Tenants/New Tenant 1"</pre> <strong>Maak een All Contacts adres lijst</strong> <pre>New-AddressList -Name "New Tenant 1 - All Contacts" -RecipientFilter "(CustomAttribute1 -eq 'New Tenant 1') -and (ObjectClass -eq 'Contact')" -RecipientContainer "future.local/Tenants/New Tenant 1"</pre> <strong>Maak een All Groups adres lijst</strong> <pre>New-AddressList -Name "New Tenant 1 - All Groups" -RecipientFilter "(CustomAttribute1 -eq 'New Tenant 1') -and (ObjectClass -eq 'Group')" -RecipientContainer "future.local/Tenants/New Tenant 1"</pre> <strong>Maak een Offline Address Book aan</strong> <pre>New-OfflineAddressBook -Name "New Tenant 1" -AddressLists "New Tenant 1 - GAL"</pre> <strong>Maak een Email Address Policy aan</strong> <pre>New-EmailAddressPolicy -Name "New Tenant 1 - EAP" -RecipientContainer "future.local/Tenants/New Tenant 1" -IncludedRecipients "AllRecipients" -ConditionalCustomAttribute1 "New Tenant 1" -EnabledEmailAddressTemplates "SMTP:%[email protected]" ,"smtp:%g.%[email protected]"</pre> <strong>Maak een Email Address Book Policy aan</strong> <pre>New-AddressBookPolicy -Name "New Tenant 1" -AddressLists "New Tenant 1 - All Users", "New Tenant 1 - All Contacts", "New Tenant 1 - All Groups" -GlobalAddressList "New Tenant 1 - GAL" -OfflineAddressBook "New Tenant 1" -RoomList "New Tenant 1 - All Rooms"</pre> Nadat je dit allemaal hebt aangemaakt, voer de <em>Update-OfflineAddressBook</em> commando uit op alle adresslijsten. Doe dit ook nadat er een mailbox is aangemaakt. Bij het aanmaken van een mailbox kan de ABP worden toegewezen. Deze kan ook toegewezen worden via de EMS: <pre>Get-Mailbox -resultsize unlimited | where {$_.CustomAttribute15 -eq "TAIL"} | Set-Mailbox -AddressBookPolicy "New Tenant 1"</pre> Mocht je nog tegen problemen aanlopen, of heeft dit artikel je geholpen? Laat gerust een reactie achter.