Difference between revisions of "Setting Up Free Busy Interop with Exchange 2007"

m (Merged Zimbra/Exchange GAL)
Line 1: Line 1:
==Zimbra Lookup Exchange Free Busy==
+
'''Note:'''
 +
*These instructions assumes that MS Exchange 2007 & Zimbra Collaboration Suite have been installed using the "DEFAULT" configurations. Please modify wherever necessary according to your target system’s configurations/settings.
 +
*MS Exchange 2007 System obtains free/busy information by using Availability service instead of public folder which was used by Exchange 2003 (The availability service obtains the user’s free/busy information from its mailbox directly). However Zimbra Collaboration Suite’s interoperability with MS Exchange System is based on the “legacyExchangeDN” attribute which assumes that the Free/Busy information is published into the public folder using WebDAV. If your MS Exchange 2007 System does not have a Free/Busy folder then you can create a new one using the following Exchange 2007 Management Shell (EMS) Command:  [PS] C:\>New-Publicfolder -name "EX:/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)" –path "\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY" 
 +
*You will also need to ensure that the Exchange 2007 CAS server is forwarding WebDAV service requests to the backend Exchange 2007 Mailbox server.
  
Zimbra can lookup Exchange Free/Busy (F/B) by using the legacy webdav interface. This returns F/B information from Exchange’s F/B public folder.
 
  
===To setup===
+
== I. Exchange Free/Busy Lookup from Zimbra ==
  
1. Create a role account (or service account) in Exchange to be used by Zimbra
+
==== On Exchange 2007 System: ====
 +
:[1.]Create a Service Account on MS Exchange 2007. Call it "zimbra".
 +
:*You may do this by using the following EMS Command: 
 +
::''[PS] C:\>$password = Read-Host "Enter password" -AsSecureString ''
 +
 +
::''[PS] C:\> New-Mailbox -Name 'USER_NAME' -Alias 'USER_ALIAS' -OrganizationalUnit '<OrganizationalUnitIdParameter>’ -UserPrincipalName 'USER_ALIAS@EXCHANGE_DOMAIN' -SamAccountName 'USER_ALIAS' -FirstName 'USER_FIRST_NAME' -Initials 'USER_INITIALS' -LastName 'USER_LAST_NAME' –Password $password -ResetPasswordOnNextLogon $false -Database '<DatabaseIdParameter>''' 
  
2. Configure Zimbra using zmprov modifyConfig
+
::''Example:''  
*Exchange Role (service) account (this is an account that resides in Active Directory):  
+
::''[PS] C:\>$password = Read-Host "Enter password" –AsSecureString Enter password: ******''  
zmprov mcf zimbraFreebusyExchangeAuthUsername myexchangezmfreebusyacct
 
*Role account password:  
 
zmprov mcf zimbraFreebusyExchangeAuthPassword [role account password]
 
*Exchange Authorization Schema:
 
zmprov mcf zimbraFreebusyExchangeAuthScheme basic
 
The '''form ''' is either basic or form. '''Basic''' is authentication to Exchange via HTTP basic authentication. '''Form''' is authentication to Exchange as HTML form based authentication.
 
*URL to Exchange 2007 CAS server:  
 
zmprov mcf zimbraFreebusyExchangeURL https://[URL of CAS server]  
 
*'''legacydn''' attribute in Exchange 2007:
 
zmprov mcf zimbraFreebusyExchangeUserOrg "/o=first organization/ou=exchange administrative group (fydibohf23spdlt)"
 
  
You can verify your Exchange User Org by using adsiedit on a domain controller and looking at the legacyExchangeDN attribute on the Configuration/Services/Microsoft Exchange/??/Administrative Groups container.
+
::''[PS] C:\>New-Mailbox -Name 'zimbra' -Alias 'zimbra' -OrganizationalUnit 'exchange2k7.local/Users' -UserPrincipalName 'zimbra@exchange2k7.local' -SamAccountName 'zimbra' -FirstName 'zimbra' -Initials '' -LastName '' -Password $password -ResetPasswordOnNextLogon $false -Database 'win2k3r2\First Storage Group\Mailbox Database'''
 +
 
 +
:*Alternatively you could first create an Active Directory user object "zimbra" (in the "USERS" container) and then assign a mailbox on the Exchange 2007 System by using the following EMS Command: 
  
You will also need to ensure that the CAS server is forwarding requests to the webdav service back to the backend Mailbox server.
+
::''[PS] C:\> Enable-Mailbox -Identity '< OrganizationalUnitIdParameter>/USER_NAME' -Alias ' USER_ALIAS' -Database '<DatabaseIdParameter>’ ''
  
Zimbra pushes F/B information to Exchange using the legacy public folder interface via webdav. This is similar to how an Exchange 2003 server would push F/B information to an Exchange 2007 server. This requires that an Exchange mail contact be created for each Zimbra account that is participating in F/B sharing.
+
::''Example:''
 +
::''[PS] C:\>Enable-Mailbox -Identity 'exchange2k7.local/Users/zimbra' -Alias 'zimbra' -Database 'win2k3r2\First Storage Group\Mailbox Database' 
  
==Exchange Lookup Zimbra Free Busy==
+
::If you are more comfortable with AD/Exchange GUI interface then use the same to complete either of the above mentioned steps according to your requirement.''
  
Exchange users will view the F/B information that is associated with the mail contact that has been created for the Zimbra user.
 
  
===To setup===
+
:[2]. Use the ADSIEDIT tools on the AD/Exchange server to find out the legacyExchangeDN attribute of the Service Account. You would need this while configuring the settings on the Zimbra System. You may find out the legacyExchangeDN by following this method.
 +
:#On the AD/Exchange Server, click START > Run > Type adsiedit.msc
 +
:#Select your Domain’s Node and expand the tree until you reach the node “CN=Users”. Now expand this node to find the container “CN=<Your Service Account Name>” (e.g. “CN=zimbra”).
 +
:#Right click the container described in [2.] and select “Properties” to open the properties screen.
 +
:#Browse the attributes to find the legacyExchangeDN attribute. Click on “Edit”.
 +
:# From the “String Attribute Editor” window obtain (copy) the part of the string appearing before “/cn=Recipients/cn=<Your Service Account Name>”. The copied string should look something like “/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)”. Keep this string safe; we will use it further down to configure the Zimbra System.
 +
:#Close all the windows, keep in mind not to modify any attribute values appearing in the ADSIEDIT Interface. 
  
1.A role or service account needs to exist in Exchange with permission to update the Exchange F/B public folder. This can be done via Powershell:
 
* Reference: http://technet.microsoft.com/en-us/library/bb691247%28EXCHG.80%29.aspx
 
add-publicfolderclientpermission -identity "\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY\EX:/o=First
 
Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)" -user myexchangezmfreebusyacct -accessrights owner
 
  
Use your legacyExchangeDN after the "EX:". The letters "(FYDI..." are a default holdover from previous versions of Exchange.
+
==== On the Zimbra System: ====
 +
   
 +
:[3]. Modify the Zimbra System’s config using the “zmprov modifyConfig” to use the settings from the MS Exchange 2007 System.  
 +
:*Exchange Service Account Credentials:
 +
::''zmprov mcf zimbraFreebusyExchangeAuthUsername [Exchange 2007 Service Account Name]''
 +
::''zmprov mcf zimbraFreebusyExchangeAuthPassword [Exchange 2007 Service Account Password]''
  
2.Tell Exchange to search public folders for Zimbra domains.
+
::''Example:''
* Reference: http://technet.microsoft.com/en-us/library/bb124122%28EXCHG.80%29.aspx
+
::''[zimbra@zimbra /]$ zmprov mcf zimbraFreebusyExchangeAuthUsername zimbra''
Add-AvailabilityAddressSpace -forestname [zimbra domain] -accessmethod publicfolder
+
::''[zimbra@zimbra /]$ zmprov mcf zimbraFreebusyExchangeAuthPassword z1mbr4 ''
  
If you have setup Exchange with mycompany.com as the SMTP domain and you are routing email to the Zimbra server using the Split-domain setup with Zimbra as primary, your "zimbra domain" in exchange may look something like zimbra.mycompany.com
+
:*Exchange Authentication Schema:
 +
::''zmprov mcf zimbraFreebusyExchangeAuthScheme [basic or form]'' 
  
3.Create mail contact for Zimbra user new-mailcontact
+
::''Example:''
* Reference: http://technet.microsoft.com/en-us/library/bb124519%28EXCHG.80%29.aspx
+
::''[zimbra@zimbra /]$ zmprov mcf zimbraFreebusyExchangeAuthScheme basic''
New-MailContact -name [zimbra account]_zimbra -alias [zimbra account]_[optional suffix] -firstname [firstname]
 
-lastname [lastname] -ExternalEmailAddress [zimbra account]@[host] -OrganizationalUnit [OU for Zimbra mail contacts]
 
-domaincontroller [domain controller] set-mailcontact -id [zimbra account]_zimbra -displayname "[display name]"
 
-UseMapiRichTextFormat never -emailaddresspolicyenabled $false -ExternalEmailAddress [zimbra account]@[host]
 
-EmailAddresses [zimbra account]@[host] -customattribute15 [optional tag] -domaincontroller [domain controller]
 
  
The above will create a mail contact that will be used by Zimbra. To reduce the risk of a collision in namespace a suffix can be added to denote a Zimbra account (i.e. “_zimbra”). A custom attribute can be added to assist in merging of Exchange and Zimbra GAL
+
::''Note: The Exchange Auth Schema is either “basic” or “form”. When “basic”, the authentication to the Exchange 2007 System happen using HTTP basic authentication. When “form”, the authentication to Exchange 2007 System happen using HTML form based authentication.'' 
This step can also be done in Recipient Configuration/Mail Contact section of the Exchange Management Console.
 
  
4.Configure each Zimbra account to push F/B to Exchange. This assumes that the Exchange role/service account has already been configured. This can be done via zmprov:  
+
:*URL to Exchange 2007 CAS server:
zmprov ma [zimbra account] +zimbraForeignPrincipal ad:[exchange mail contact]
+
::''zmprov mcf zimbraFreebusyExchangeURL https://[URL of CAS server]'' 
  
==Merged Zimbra/Exchange GAL==
+
::''Example:''
 +
::''[zimbra@zimbra /]$ zmprov mcf zimbraFreebusyExchangeURL https://win2k3r2.exchange2k7.local''
  
Once F/B sharing has been setup, the last step is to merge the GAL on the two systems. In Exchange no further work needs to be done since all Zimbra accounts should be appearing as a mail contact in the GAL. In Zimbra you need to setup an external LDAP source. To set this up:
+
:*Exchange legacyExchangeDN attribute:
 +
::''zmprov mcf zimbraFreebusyExchangeUserOrg “/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)”''
  
1.Configure zimbra domain:  
+
::''Example:''
zmprov md [zimbra domain] zimbraGalLdapFilter
+
::''[zimbra@zimbra /]$ zmprov mcf zimbraFreebusyExchangeUserOrg “/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)”''
(&(|(cn=*%s*)(sn=*%s*)(gn=*%s*)(mail=*%s*))(!(msExchHideFromAddressLists=TRUE))
 
(!(extensionAttribute15=[optionaltag]))(mailNickname=*)(|(objectClass=user)(objectCla
 
ss=contact)(objectClass=msExchSystemMailbox)(objectClass=msExchDynamicDistributio
 
nList)(objectClass=group)(objectClass=publicFolder)))
 
zmprov md [zimbra domain] zimbraGalLdapSearchBase [AD base DN]  
 
zmprov md [zimbra domain] zimbraGalLdapURL ldaps://[domain controller]:636
 
zmprov md [zimbra domain] zimbraGalMode both
 
zmprov md [zimbra.example.com] zimbraGalLdapBindDn [zimbra role account in Exchange]
 
zmprov md [zimbra.example.com] zimbraGalLdapBindPassword [zimbra role account password]
 
  
Once this is configured, Zimbra will be able to see entries from the Exchange GAL. The custom tag is used to exclude Zimbra mail contacts to avoid duplicate entries. This requires that the Exchange domain controllers are searchable via LDAP and have a valid SSL certificate that Zimbra recognizes.
 
  
If you are using self-signed certificates or a different CA you’ll need to import it into Zimbra:  
+
== II. Zimbra Free/Busy Lookup from Exchange == 
[run as the user “zimbra”]  
+
 
 +
==== On Exchange 2007 System: ====
 +
 
 +
Ensure that the Service Account has been created on the Exchange 2007 System as per description provided in section I. [1]. above. 
 +
 
 +
:[1]. Allow the Service Account ("zimbra") to update the Exchange Free-Busy folder. You may do this by using the following EMS Command: 
 +
::''[PS] C:\> add-publicfolderclientpermission -identity "\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY\EX:/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)" –user <Service_Account_USER_NAME> -accessrights owner''
 +
 
 +
::''Example:''
 +
::''[PS] C:\> add-publicfolderclientpermission -identity "\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY\EX:/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)" -user zimbra -accessrights owner'' 
 +
 
 +
:[2]. Make Exchange 2007 aware of the presence of “Public Folders” in the Zimbra domain. You may do this by using the following EMS Command: 
 +
::''[PS] C:\> Add-AvailabilityAddressSpace -forestname <ZIMBRA SYSTEMS's FQDN> -accessmethod publicfolder ''
 +
::''Example:''
 +
::''[PS] C:\>Add-AvailabilityAddressSpace -forestname zimbra.local -accessmethod publicfolder''
 +
 +
:[3]. Create a "Zimbra" OU in Active Directory. Make sure all your Zimbra users are created as “Exchange 2007 Mail Contact Objects” in this OU. As a BEST PRACTICE, to reduce the risk of a collision in namespace a suffix can be added to denote a Zimbra account (i.e. “_zimbra”). Also for each of the mail-contact objects that you create here please set one of the available/not-set “Exchange Extension Attributes (extensionAttribute1 to extensionAttribute15)” to an optional tag (say “_zimbra”). You may use ADSIEDIT utility to set this attribute. Also please ensure that the same extension attribute is set for all the zimbra contact objects. 
 +
 
 +
:*You may create a mail-enable user by using the following EMS Command: 
 +
::''[PS] C:\> New-MailContact -ExternalEmailAddress 'SMTP:<Email Address of the Zimbra User on the Zimbra System>' -Name '<Zimbra User’s corresponding Contact Object Name on the AD>' -Alias '<Zimbra User’s corresponding Alias on the AD>' -OrganizationalUnit '<EXCHANGE 2007 FQDN>/<Zimbra OU on AD>' -FirstName 'CONTACT_FIRST_NAME' -Initials 'CONTACT_INITIALS' -LastName 'CONTACT_LAST_NAME' ''
 +
 
 +
::''Example:''
 +
::''New-MailContact -ExternalEmailAddress 'SMTP:testuser1@zimbra.local' -Name 'testuser1_zimbra' -Alias 'testuser1_zimbra' -OrganizationalUnit 'exchange2k7.local/Zimbra' -FirstName 'testuser1_zimbra' -Initials '' -LastName ''  ''
 +
 
 +
:*Alternatively you could first create an Active Directory contact object as "USER_Zimbra" (in the "Zimbra" OU) and then mail-enable that contact on the Exchange 2007 System by using the following EMS Command: 
 +
 
 +
::''[PS] C:\> Enable-MailContact -Identity '<EXCHANGE 2007 FQDN>/<Zimbra OU on AD>/<Zimbra User’s corresponding Contact Object Name on the AD>' -ExternalEmailAddress 'SMTP:<Email Address of the Zimbra User on the Zimbra System>' -Alias 'Zimbra User’s corresponding Alias on the AD'  ''
 +
 
 +
::''Example:
 +
::'' [PS] C:\>Enable-MailContact -Identity 'exchange2k7.local/Zimbra/testuser2_zimbra' -ExternalEmailAddress 'SMTP:testuser2@zimbra.local' -Alias 'testuser2_zimbra' ''
 +
 
 +
==== On the Zimbra System: ====
 +
 
 +
:[4]. Configure the zimbra user account to push its free/busy status to the Exchange 2007 System.
 +
::''zmprov ma <Zimbra Account> zimbraForeignPrincipal ad: <Exchange mail contact>''
 +
 
 +
::''Example:
 +
::''[zimbra@zimbra /]$ zmprov ma testuser1@zimbra.local zimbraForeignPrincipal ad:testuser1_zimbra ''
 +
 
 +
 
 +
== III. Merge the GALs of Exchange & Zimbra Domains: == 
 +
 
 +
==== On Exchange 2007 System: ====
 +
On the Exchange 2007 System no further work needs to be done since all Zimbra accounts would now be appearing as a mail contact in the Exchange 2007 GAL. 
 +
 
 +
==== On the Zimbra System  ====
 +
 
 +
Modify the Zimbra Domain’s config using the “zmprov modifyDomain” to get a unified view of the GAL (consisting of GAL users from both Exchange 2007 System & Zimbra System).
 +
 
 +
::''zmprov md <Zimbra Domain> zimbraGalMode both''
 +
::''zmprov md <Zimbra Domain> zimbraGalMaxResults <Integer Value>''
 +
::''zmprov md <Zimbra Domain> zimbraGalLdapURL ldap://<FQDN of the Active Directory>:3268''
 +
::''zmprov md <Zimbra Domain> zimbraGalLdapFilter (&(|(cn=*%s*)(sn=*%s*)(gn=*%s*)(mail=*%s*))(! (msExchHideFromAddressLists=TRUE))(! (<Exchange Extension Attribute Number>=<Optional Tag Set on Exchange 2007 System >))(mailNickname=*)(|(objectClass=user)(objectClass=contact)(objectClass=msExchSystemMailbox)''(objectClass=msExchDynamicDistributionList)(objectClass=group)(objectClass=publicFolder)))''
 +
::''zmprov md <Zimbra Domain> zimbraGalAutoCompleteLdapFilter adAutoComplete''
 +
::''zmprov md <Zimbra Domain> zimbraGalLdapSearchBase <AD base DN>''
 +
::''zmprov md <Zimbra Domain> zimbraGalLdapBindDn <UserPrincipalName of the Zimbra Service Account created on the AD>''
 +
::''zmprov md <Zimbra Domain> zimbraGalLdapBindPassword <Password of the Zimbra Service Account>''
 +
 
 +
 
 +
::''Example:''
 +
::''[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalMode both''
 +
::''[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalMaxResults 100''
 +
::''[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalLdapURL ldap://win2k3r2.exchange2k7.local:3268''
 +
::''[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalLdapFilter (&(|(cn=*%s*)(sn=*%s*)(gn=*%s*)(mail=*%s*))(! (msExchHideFromAddressLists=TRUE))(! (extensionAttribute1=_zimbra))(mailNickname=*)(|(objectClass=user)(objectClass=contact)(objectClass=msExchSystemMailbox)(objectClass=msExchDynamicDistributionList)(objectClass=group)(objectClass=publicFolder)))''
 +
::''[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalAutoCompleteLdapFilter adAutoComplete''
 +
::''[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalLdapSearchBase dc=exchange2k7,dc=local''
 +
::''[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalLdapBindDn administrator@exchange2k7.local''
 +
::''[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalLdapBindPassword z1mbr4''
  
/opt/zimbra/java/bin/keytool -import -trustcacerts -alias "[alias for CA]" \ -file [CA file] -keystore
 
/opt/zimbra/java/jre/lib/security/cacerts
 
  
 
=Troubleshooting=
 
=Troubleshooting=

Revision as of 00:22, 11 February 2011

Note:

  • These instructions assumes that MS Exchange 2007 & Zimbra Collaboration Suite have been installed using the "DEFAULT" configurations. Please modify wherever necessary according to your target system’s configurations/settings.
  • MS Exchange 2007 System obtains free/busy information by using Availability service instead of public folder which was used by Exchange 2003 (The availability service obtains the user’s free/busy information from its mailbox directly). However Zimbra Collaboration Suite’s interoperability with MS Exchange System is based on the “legacyExchangeDN” attribute which assumes that the Free/Busy information is published into the public folder using WebDAV. If your MS Exchange 2007 System does not have a Free/Busy folder then you can create a new one using the following Exchange 2007 Management Shell (EMS) Command: [PS] C:\>New-Publicfolder -name "EX:/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)" –path "\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY"
  • You will also need to ensure that the Exchange 2007 CAS server is forwarding WebDAV service requests to the backend Exchange 2007 Mailbox server.


I. Exchange Free/Busy Lookup from Zimbra

On Exchange 2007 System:

[1.]Create a Service Account on MS Exchange 2007. Call it "zimbra".
  • You may do this by using the following EMS Command:
[PS] C:\>$password = Read-Host "Enter password" -AsSecureString
[PS] C:\> New-Mailbox -Name 'USER_NAME' -Alias 'USER_ALIAS' -OrganizationalUnit '<OrganizationalUnitIdParameter>’ -UserPrincipalName 'USER_ALIAS@EXCHANGE_DOMAIN' -SamAccountName 'USER_ALIAS' -FirstName 'USER_FIRST_NAME' -Initials 'USER_INITIALS' -LastName 'USER_LAST_NAME' –Password $password -ResetPasswordOnNextLogon $false -Database '<DatabaseIdParameter>'
Example:
[PS] C:\>$password = Read-Host "Enter password" –AsSecureString Enter password: ******
[PS] C:\>New-Mailbox -Name 'zimbra' -Alias 'zimbra' -OrganizationalUnit 'exchange2k7.local/Users' -UserPrincipalName 'zimbra@exchange2k7.local' -SamAccountName 'zimbra' -FirstName 'zimbra' -Initials -LastName -Password $password -ResetPasswordOnNextLogon $false -Database 'win2k3r2\First Storage Group\Mailbox Database'
  • Alternatively you could first create an Active Directory user object "zimbra" (in the "USERS" container) and then assign a mailbox on the Exchange 2007 System by using the following EMS Command:
[PS] C:\> Enable-Mailbox -Identity '< OrganizationalUnitIdParameter>/USER_NAME' -Alias ' USER_ALIAS' -Database '<DatabaseIdParameter>’
Example:
[PS] C:\>Enable-Mailbox -Identity 'exchange2k7.local/Users/zimbra' -Alias 'zimbra' -Database 'win2k3r2\First Storage Group\Mailbox Database'
If you are more comfortable with AD/Exchange GUI interface then use the same to complete either of the above mentioned steps according to your requirement.


[2]. Use the ADSIEDIT tools on the AD/Exchange server to find out the legacyExchangeDN attribute of the Service Account. You would need this while configuring the settings on the Zimbra System. You may find out the legacyExchangeDN by following this method.
  1. On the AD/Exchange Server, click START > Run > Type adsiedit.msc
  2. Select your Domain’s Node and expand the tree until you reach the node “CN=Users”. Now expand this node to find the container “CN=<Your Service Account Name>” (e.g. “CN=zimbra”).
  3. Right click the container described in [2.] and select “Properties” to open the properties screen.
  4. Browse the attributes to find the legacyExchangeDN attribute. Click on “Edit”.
  5. From the “String Attribute Editor” window obtain (copy) the part of the string appearing before “/cn=Recipients/cn=<Your Service Account Name>”. The copied string should look something like “/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)”. Keep this string safe; we will use it further down to configure the Zimbra System.
  6. Close all the windows, keep in mind not to modify any attribute values appearing in the ADSIEDIT Interface.


On the Zimbra System:

[3]. Modify the Zimbra System’s config using the “zmprov modifyConfig” to use the settings from the MS Exchange 2007 System.
  • Exchange Service Account Credentials:
zmprov mcf zimbraFreebusyExchangeAuthUsername [Exchange 2007 Service Account Name]
zmprov mcf zimbraFreebusyExchangeAuthPassword [Exchange 2007 Service Account Password]
Example:
[zimbra@zimbra /]$ zmprov mcf zimbraFreebusyExchangeAuthUsername zimbra
[zimbra@zimbra /]$ zmprov mcf zimbraFreebusyExchangeAuthPassword z1mbr4
  • Exchange Authentication Schema:
zmprov mcf zimbraFreebusyExchangeAuthScheme [basic or form]
Example:
[zimbra@zimbra /]$ zmprov mcf zimbraFreebusyExchangeAuthScheme basic
Note: The Exchange Auth Schema is either “basic” or “form”. When “basic”, the authentication to the Exchange 2007 System happen using HTTP basic authentication. When “form”, the authentication to Exchange 2007 System happen using HTML form based authentication.
  • URL to Exchange 2007 CAS server:
zmprov mcf zimbraFreebusyExchangeURL https://[URL of CAS server]
Example:
[zimbra@zimbra /]$ zmprov mcf zimbraFreebusyExchangeURL https://win2k3r2.exchange2k7.local
  • Exchange legacyExchangeDN attribute:
zmprov mcf zimbraFreebusyExchangeUserOrg “/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)”
Example:
[zimbra@zimbra /]$ zmprov mcf zimbraFreebusyExchangeUserOrg “/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)”


II. Zimbra Free/Busy Lookup from Exchange

On Exchange 2007 System:

Ensure that the Service Account has been created on the Exchange 2007 System as per description provided in section I. [1]. above.

[1]. Allow the Service Account ("zimbra") to update the Exchange Free-Busy folder. You may do this by using the following EMS Command:
[PS] C:\> add-publicfolderclientpermission -identity "\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY\EX:/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)" –user <Service_Account_USER_NAME> -accessrights owner
Example:
[PS] C:\> add-publicfolderclientpermission -identity "\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY\EX:/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)" -user zimbra -accessrights owner
[2]. Make Exchange 2007 aware of the presence of “Public Folders” in the Zimbra domain. You may do this by using the following EMS Command:
[PS] C:\> Add-AvailabilityAddressSpace -forestname <ZIMBRA SYSTEMS's FQDN> -accessmethod publicfolder
Example:
[PS] C:\>Add-AvailabilityAddressSpace -forestname zimbra.local -accessmethod publicfolder
[3]. Create a "Zimbra" OU in Active Directory. Make sure all your Zimbra users are created as “Exchange 2007 Mail Contact Objects” in this OU. As a BEST PRACTICE, to reduce the risk of a collision in namespace a suffix can be added to denote a Zimbra account (i.e. “_zimbra”). Also for each of the mail-contact objects that you create here please set one of the available/not-set “Exchange Extension Attributes (extensionAttribute1 to extensionAttribute15)” to an optional tag (say “_zimbra”). You may use ADSIEDIT utility to set this attribute. Also please ensure that the same extension attribute is set for all the zimbra contact objects.
  • You may create a mail-enable user by using the following EMS Command:
[PS] C:\> New-MailContact -ExternalEmailAddress 'SMTP:<Email Address of the Zimbra User on the Zimbra System>' -Name '<Zimbra User’s corresponding Contact Object Name on the AD>' -Alias '<Zimbra User’s corresponding Alias on the AD>' -OrganizationalUnit '<EXCHANGE 2007 FQDN>/<Zimbra OU on AD>' -FirstName 'CONTACT_FIRST_NAME' -Initials 'CONTACT_INITIALS' -LastName 'CONTACT_LAST_NAME'
Example:
New-MailContact -ExternalEmailAddress 'SMTP:testuser1@zimbra.local' -Name 'testuser1_zimbra' -Alias 'testuser1_zimbra' -OrganizationalUnit 'exchange2k7.local/Zimbra' -FirstName 'testuser1_zimbra' -Initials -LastName
  • Alternatively you could first create an Active Directory contact object as "USER_Zimbra" (in the "Zimbra" OU) and then mail-enable that contact on the Exchange 2007 System by using the following EMS Command:
[PS] C:\> Enable-MailContact -Identity '<EXCHANGE 2007 FQDN>/<Zimbra OU on AD>/<Zimbra User’s corresponding Contact Object Name on the AD>' -ExternalEmailAddress 'SMTP:<Email Address of the Zimbra User on the Zimbra System>' -Alias 'Zimbra User’s corresponding Alias on the AD'
Example:
[PS] C:\>Enable-MailContact -Identity 'exchange2k7.local/Zimbra/testuser2_zimbra' -ExternalEmailAddress 'SMTP:testuser2@zimbra.local' -Alias 'testuser2_zimbra'

On the Zimbra System:

[4]. Configure the zimbra user account to push its free/busy status to the Exchange 2007 System.
zmprov ma <Zimbra Account> zimbraForeignPrincipal ad: <Exchange mail contact>
Example:
[zimbra@zimbra /]$ zmprov ma testuser1@zimbra.local zimbraForeignPrincipal ad:testuser1_zimbra


III. Merge the GALs of Exchange & Zimbra Domains:

On Exchange 2007 System:

On the Exchange 2007 System no further work needs to be done since all Zimbra accounts would now be appearing as a mail contact in the Exchange 2007 GAL.

On the Zimbra System

Modify the Zimbra Domain’s config using the “zmprov modifyDomain” to get a unified view of the GAL (consisting of GAL users from both Exchange 2007 System & Zimbra System).

zmprov md <Zimbra Domain> zimbraGalMode both
zmprov md <Zimbra Domain> zimbraGalMaxResults <Integer Value>
zmprov md <Zimbra Domain> zimbraGalLdapURL ldap://<FQDN of the Active Directory>:3268
zmprov md <Zimbra Domain> zimbraGalLdapFilter (&(|(cn=*%s*)(sn=*%s*)(gn=*%s*)(mail=*%s*))(! (msExchHideFromAddressLists=TRUE))(! (<Exchange Extension Attribute Number>=<Optional Tag Set on Exchange 2007 System >))(mailNickname=*)(|(objectClass=user)(objectClass=contact)(objectClass=msExchSystemMailbox)(objectClass=msExchDynamicDistributionList)(objectClass=group)(objectClass=publicFolder)))
zmprov md <Zimbra Domain> zimbraGalAutoCompleteLdapFilter adAutoComplete
zmprov md <Zimbra Domain> zimbraGalLdapSearchBase <AD base DN>
zmprov md <Zimbra Domain> zimbraGalLdapBindDn <UserPrincipalName of the Zimbra Service Account created on the AD>
zmprov md <Zimbra Domain> zimbraGalLdapBindPassword <Password of the Zimbra Service Account>


Example:
[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalMode both
[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalMaxResults 100
[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalLdapURL ldap://win2k3r2.exchange2k7.local:3268
[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalLdapFilter (&(|(cn=*%s*)(sn=*%s*)(gn=*%s*)(mail=*%s*))(! (msExchHideFromAddressLists=TRUE))(! (extensionAttribute1=_zimbra))(mailNickname=*)(|(objectClass=user)(objectClass=contact)(objectClass=msExchSystemMailbox)(objectClass=msExchDynamicDistributionList)(objectClass=group)(objectClass=publicFolder)))
[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalAutoCompleteLdapFilter adAutoComplete
[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalLdapSearchBase dc=exchange2k7,dc=local
[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalLdapBindDn administrator@exchange2k7.local
[zimbra@zimbra /]$ zmprov md zimbra.local zimbraGalLdapBindPassword z1mbr4


Troubleshooting

See http://wiki.zimbra.com/index.php?title=Troubleshooting_Exchange_Freebusy_Interop


Verified Against: ZCS 5.0. Date Created: 4/28/2009
Article ID: https://wiki.zimbra.com/index.php?title=Setting_Up_Free_Busy_Interop_with_Exchange_2007 Date Modified: 2011-02-11



Try Zimbra

Try Zimbra Collaboration with a 60-day free trial.
Get it now »

Want to get involved?

You can contribute in the Community, Wiki, Code, or development of Zimlets.
Find out more. »

Looking for a Video?

Visit our YouTube channel to get the latest webinars, technology news, product overviews, and so much more.
Go to the YouTube channel »

Jump to: navigation, search