GAL Attribute Mapping

From Zimbra :: Wiki

Jump to: navigation, search
   Article-alert.png  - This article is a community contribution and may include unsupported customizations for network edition customers.



Global Address List (GAL) and Active Directory

The value of zimbraGalLdapAttrMap controls which gal attributes get requested and how they get converted to our contact model. The default map can be obtained via zmprov:

Code:

/opt/zimbra/bin/zmprov gacf|grep zimbraGalLdapAttr
zimbraGalLdapAttrMap: co=workCountry
zimbraGalLdapAttrMap: company=company
zimbraGalLdapAttrMap: description=notes
zimbraGalLdapAttrMap: displayName,cn=fullName
zimbraGalLdapAttrMap: givenName,gn=firstName
zimbraGalLdapAttrMap: initials=initials
zimbraGalLdapAttrMap: l=workCity
zimbraGalLdapAttrMap: objectClass=objectClass
zimbraGalLdapAttrMap: ou=department
zimbraGalLdapAttrMap: physicalDeliveryOfficeName=office
zimbraGalLdapAttrMap: postalCode=workPostalCode
zimbraGalLdapAttrMap: sn=lastName
zimbraGalLdapAttrMap: st=workState
zimbraGalLdapAttrMap: street,streetAddress=workStreet
zimbraGalLdapAttrMap: telephoneNumber=workPhone
zimbraGalLdapAttrMap: title=jobTitle
zimbraGalLdapAttrMap: whenChanged,modifyTimeStamp=modifyTimeStamp
zimbraGalLdapAttrMap: whenCreated,createTimeStamp=createTimeStamp
zimbraGalLdapAttrMap: zimbraCalResLocationDisplayName=zimbraCalResLocationDisplayName
zimbraGalLdapAttrMap: zimbraCalResType=zimbraCalResType
zimbraGalLdapAttrMap: zimbraId=zimbraId
zimbraGalLdapAttrMap: zimbraMailDeliveryAddress,zimbraMailAlias,mail=email,email2,email3,email4,email5,email6
zimbraGalLdapAttrMap: zimbraMailForwardingAddress=zimbraMailForwardingAddress

The map is basically a set of rules that looks like:

a,b=c,d


Where the attrs on the left-hand come from LDAP and get mapped to the values on the right-hand side, which correspond to our contact model.

For example, the rule:

zimbraGalLdapAttrMap: street,streetAddress=workStreet

says if the LDAP result contains "street", map it to workStreet. If it doesn't contain "street" , then see if it contains "streetAddress" and map that to workStreet.

If there are multiple values for a given attribute on the left-hand side and multiple listed on the right-hand side, then it will map the values on the left to the values on the right, sequential. i.e if you have:

a=b,c

And the LDAP result contains two values for a (lets assume "a1", and "a2"), then "b" will get set to "a1" , and "c" will get set to "a2".

You can add/remove mappings using zmprov:

/opt/zimbra/bin/zmprov                            
prov> mcf
usage:  modifyConfig(mcf) attr1 value1 [attr2 value2...]
prov> mcf +zimbraGalLdapAttrMap x=y
prov> mcf -zimbraGalLdapAttrMap x=y
prov>

The syntax "+zimbraGalLdapAttrMap" means to add an additional zimbraGalLdapAttrMap attribute to the config, while "-zimbraGalLdapAttrMap" means to remove an existing setting.

Our contact model contains (roughly, some of these might not be displayed in the client) the following set of fields, which I grabbed from Contact.java in the ZimbraServer source:

   public static final String A_birthday = "birthday";
   public static final String A_callbackPhone = "callbackPhone";
   public static final String A_carPhone = "carPhone";
   public static final String A_company = "company";
   public static final String A_companyPhone = "companyPhone";
   public static final String A_department = "department";
   public static final String A_dlist = "dlist";
   public static final String A_email = "email";
   public static final String A_email2 = "email2";
   public static final String A_email3 = "email3";
   public static final String A_fileAs = "fileAs";
   public static final String A_firstName = "firstName";
   public static final String A_fullName = "fullName";
   public static final String A_homeCity = "homeCity";
   public static final String A_homeCountry = "homeCountry";
   public static final String A_homeFax = "homeFax";
   public static final String A_homePhone = "homePhone";
   public static final String A_homePhone2 = "homePhone2";
   public static final String A_homePostalCode = "homePostalCode";
   public static final String A_homeState = "homeState";
   public static final String A_homeStreet = "homeStreet";
   public static final String A_homeURL = "homeURL";
   public static final String A_image = "image";
   public static final String A_initials = "initials";
   public static final String A_jobTitle = "jobTitle";
   public static final String A_lastName = "lastName";
   public static final String A_middleName = "middleName";
   public static final String A_mobilePhone = "mobilePhone";
   public static final String A_namePrefix = "namePrefix";
   public static final String A_nameSuffix = "nameSuffix";
   public static final String A_nickname = "nickname";
   public static final String A_notes = "notes";
   public static final String A_office = "office";
   public static final String A_otherCity = "otherCity";
   public static final String A_otherCountry = "otherCountry";
   public static final String A_otherFax = "otherFax";
   public static final String A_otherPhone = "otherPhone";
   public static final String A_otherPostalCode = "otherPostalCode";
   public static final String A_otherState = "otherState";
   public static final String A_otherStreet = "otherStreet";
   public static final String A_otherURL = "otherURL";
   public static final String A_pager = "pager";
   public static final String A_workCity = "workCity";
   public static final String A_workCountry = "workCountry";
   public static final String A_workFax = "workFax";
   public static final String A_workPhone = "workPhone";
   public static final String A_workPhone2 = "workPhone2";
   public static final String A_workPostalCode = "workPostalCode";
   public static final String A_workState = "workState";
   public static final String A_workStreet = "workStreet";
   public static final String A_workURL = "workURL";
   public static final String A_type = "type";

So you'll want to look the AD attributes that you have set as the ones on the left-hand side of the rule, and then the above contact fields as the ones to map them to on the right hand.


Verified Against: unknown Date Created: 5/3/2007
Article ID: http://wiki.zimbra.com/index.php?title=GAL_Attribute_Mapping Date Modified: 02/20/2008
Personal tools