### Small tutorial for use GOsa with open-xchange ###

Once installed open-xchange (http://www.open-xchange.org) and php4-pgsql 
module we must do some changes to get open-xchange running with GOsa.

- php.ini must have extension=pg_sql.so

- The webserver must have access to the Postgresql server.

- In the connectivity section of gosa.conf must have something like this:
                <tab class="oxchangeAccount"
                        pghost="server"
                        pguser="openexchange"
                        pgpasswd="test"
                        pgdbname="openexchange"
 		/>



We suppose that openxchage is installed in /usr/local/openxchange, 
and the base for GOsa ldap tree is dc=example,dc=org


- Make changes to admintools.conf (/usr/local/openxchange/etc/admintools.conf):

OXBASE="dc=example,dc=org"
OX_LEAF="$OXBASE"
# Where are the OX Users
USER_BASEDN="ou=people,$OX_LEAF"
# Where are the OX Groups
GROUP_BASEDN="ou=groups,$OX_LEAF"
# Where are the OX Resources
RESOURCES_BASEDN="ou=Resources,ou=ResourceObjects,ou=OxObjects,$OX_LEAF"
# Where are the OX Resource Groups
RESOURCE_GROUPS_BASEDN="ou=ResourceGroups,ou=ResourceObjects,ou=OxObjects,$OX_LEAF"
# Where is the Global Adressbook
GLOBAL_ADDRESSBOOKDN="o=AddressBook,ou=OxObjects,$OX_LEAF"
# where are the adressbook admins
GLOBAL_ADDRESSBOOK_ADMINSDN="cn=AddressAdmins,ou=OxObjects,$GLOBAL_ADDRESSBOOKDN"

- Make changes in login.pm (usually in /usr/lib/cgi-bin/login.pm):
my $ldap_userBase = 'ou=Users,ou=OxObjects,';
to
my $ldap_userBase = 'ou=people,';

- Put the Base in ldap.conf (/usr/local/openxchange/etc/groupware/ldap.conf)
BASE    dc=example,dc=org

- If you are using as GOsa dnmode "uid", You must change in ldap.properties 
(/usr/local/openxchange/etc/groupware/ldap.properties):


com.openexchange.groupware.ldap.OXUserObjectAttributeuserCountryName=userCountry
 to
com.openexchange.groupware.ldap.OXUserObjectAttributeuserCountryName=st

com.openexchange.groupware.ldap.OXUserObjectAttributeimapServerName=imapServer
 to
com.openexchange.groupware.ldap.OXUserObjectAttributeimapServerName=gosaMailServer

com.openexchange.groupware.ldap.OXUserObjectAttributesmtpServerName=smtpServer
 to 
com.openexchange.groupware.ldap.OXUserObjectAttributesmtpServerName=gosaMailServer

com.openexchange.groupware.ldap.userBaseDN=ou\u003DUsers,ou\u003DOxObjects
to
com.openexchange.groupware.ldap.userBaseDN=ou\u003Dpeople



- If you are using as GOsa dnmode "cn", the ldap.properties  
(/usr/local/openxchange/etc/groupware/ldap.properties) 
configuration of open-xchange must be like this:

com.openexchange.groupware.ldap.inetOrgPersonAttributebusinessCategoryName=businessCategory

com.openexchange.groupware.ldap.inetOrgPersonAttributecnName=cn

com.openexchange.groupware.ldap.OXUserObjectAttributeCountryName=c

com.openexchange.groupware.ldap.inetOrgPersonAttributedescriptionName=description

com.openexchange.groupware.ldap.inetOrgPersonAttributedisplayNameName=displayName

com.openexchange.groupware.ldap.inetOrgPersonAttributeemployeeNumberName=employeeNumber

com.openexchange.groupware.ldap.inetOrgPersonAttributeemployeeTypeName=employeeType

com.openexchange.groupware.ldap.OXUserObjectAttributecoName=co

com.openexchange.groupware.ldap.inetOrgPersonAttributehomePhoneName=homePhone

com.openexchange.groupware.ldap.inetOrgPersonAttributehomePostalAddressName=homePostalAddress

com.openexchange.groupware.ldap.OXUserObjectAttributeInfoName=info

com.openexchange.groupware.ldap.inetOrgPersonAttributeinitialsName=initials

com.openexchange.groupware.ldap.inetOrgPersonAttributeinternationaliSDNNumberName=internationaliSDNNumber

com.openexchange.groupware.ldap.OXUserObjectAttributeIPPhoneName=IPPhone

com.openexchange.groupware.ldap.OXUserObjectAttributeotherfacsimiletelephonenumberName=otherfacsimiletelephonenumber

com.openexchange.groupware.ldap.inetOrgPersonAttributeroomNumberName=roomNumber

com.openexchange.groupware.ldap.inetOrgPersonAttributetelexNumberName=telexNumber

com.openexchange.groupware.ldap.inetOrgPersonAttributeuidName=uid

com.openexchange.groupware.ldap.inetOrgPersonClassName=inetOrgPerson

com.openexchange.groupware.ldap.OXUserObjectAttributebirthDayName=birthDay

com.openexchange.groupware.ldap.OXUserObjectAttributeDistributionListName=OXUserDistributionList

com.openexchange.groupware.ldap.OXUserObjectAttributeAnniversaryName=OXUserAnniversary

com.openexchange.groupware.ldap.OXUserObjectAttributeBranchesName=OXUserBranches

com.openexchange.groupware.ldap.OXUserObjectAttributeCategoriesName=OXUserCategories

com.openexchange.groupware.ldap.OXUserObjectAttributeChildrenName=OXUserChildren

com.openexchange.groupware.ldap.OXUserObjectAttributeCityName=OXUserCity

com.openexchange.groupware.ldap.OXUserObjectAttributeCommentName=OXUserComment

com.openexchange.groupware.ldap.OXUserObjectAttributeComRegName=OXUserComReg

com.openexchange.groupware.ldap.OXUserObjectAttributeEmail2Name=OXUserEmail2

com.openexchange.groupware.ldap.OXUserObjectAttributeEmail3Name=OXUserEmail3

com.openexchange.groupware.ldap.OXUserObjectAttributeInstantMessenger2Name=OXUserInstantMessenger2

com.openexchange.groupware.ldap.OXUserObjectAttributeInstantMessengerName=OXUserInstantMessenger

com.openexchange.groupware.ldap.OXUserObjectAttributeMaritalStatusName=OXUserMaritalStatus

com.openexchange.groupware.ldap.OXUserObjectAttributeNickNameName=OXUserNickName

com.openexchange.groupware.ldap.OXUserObjectAttributeOtherCityName=OXUserOtherCity

com.openexchange.groupware.ldap.OXUserObjectAttributeOtherCountryName=OXUserOtherCountry

com.openexchange.groupware.ldap.OXUserObjectAttributeOtherPostalCodeName=OXUserOtherPostalCode

com.openexchange.groupware.ldap.OXUserObjectAttributeOtherStateName=OXUserOtherState

com.openexchange.groupware.ldap.OXUserObjectAttributeOtherStreetName=OXUserOtherStreet

com.openexchange.groupware.ldap.OXUserObjectAttributePositionName=OXUserPosition

com.openexchange.groupware.ldap.OXUserObjectAttributePostalCodeName=OXUserPostalCode

com.openexchange.groupware.ldap.OXUserObjectAttributeProfessionName=OXUserProfession

com.openexchange.groupware.ldap.OXUserObjectAttributeSalesVolumeName=OXUserSalesVolume

com.openexchange.groupware.ldap.OXUserObjectAttributeSpouseNameName=OXUserSpouseName

com.openexchange.groupware.ldap.OXUserObjectAttributeStateName=OXUserState

com.openexchange.groupware.ldap.OXUserObjectAttributesuffixName=OXUserSuffix

com.openexchange.groupware.ldap.OXUserObjectAttributeTaxIDName=OXUserTaxID

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleAssistantName=OXUserTeleAssistant

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleBusiness2Name=OXUserTeleBusiness2

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleCallbackName=OXUserTeleCallback

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleCarName=OXUserTeleCar

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleCompanyName=OXUserTeleCompany

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleFax2Name=OXUserTeleFax2

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleHome2Name=OXUserTeleHome2

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleMobile2Name=OXUserTeleMobile2

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleOtherName=OXUserTeleOther

com.openexchange.groupware.ldap.OXUserObjectAttributeTelePrimaryName=OXUserTelePrimary

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleRadioName=OXUserTeleRadio

com.openexchange.groupware.ldap.OXUserObjectAttributeTeleTTYName=OXUserTeleTTY

com.openexchange.groupware.ldap.OXUserObjectAttributeurlName=url

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef01Name=OXUserUserUndef01

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef02Name=OXUserUserUndef02

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef03Name=OXUserUserUndef03

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef04Name=OXUserUserUndef04

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef05Name=OXUserUserUndef05

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef06Name=OXUserUserUndef06

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef07Name=OXUserUserUndef07

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef08Name=OXUserUserUndef08

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef09Name=OXUserUserUndef09

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef10Name=OXUserUserUndef10

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef11Name=OXUserUserUndef11

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef12Name=OXUserUserUndef12

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef13Name=OXUserUserUndef13

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef14Name=OXUserUserUndef14

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef15Name=OXUserUserUndef15

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef16Name=OXUserUserUndef16

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef17Name=OXUserUserUndef17

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef18Name=OXUserUserUndef18

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef19Name=OXUserUserUndef19

com.openexchange.groupware.ldap.OXUserObjectAttributeUserUndef20Name=OXUserUserUndef20

com.openexchange.groupware.ldap.OXUserObjectClassName=OXUserObject

com.openexchange.groupware.ldap.AllContactUIDSearch=(&(objectClass\u003DinetOrgPerson)(objectClass\u003DOXUserObject))

!com.openexchange.groupware.ldap.AllContactUIDSearchScope=1

com.openexchange.groupware.ldap.credentialsBaseDN=[credentialsBaseDN]

com.openexchange.groupware.ldap.credentialsDN=cn\u003D[uid],[userBaseDN],[credentialsBaseDN]

com.openexchange.groupware.ldap.groupOfNamesAttributememberName=member

com.openexchange.groupware.ldap.AddressAdminsDN=cn\u003DAddressAdmins,[globalAddressBookBaseDN]

com.openexchange.groupware.ldap.globalAddressBookBaseDN=o\u003DAddressBook

com.openexchange.groupware.ldap.GlobalAddressBookEntryDN=cn\u003D[contactid],[globalAddressBookBaseDN]

com.openexchange.groupware.ldap.InternalUsersForeSureNameUIDPatternSearchFilter=(&(objectClass\u003DinetOrgPerson)(objectClass\u003DOXUserObject)(|(sn\u003D[pattern])(givenname\u003D[pattern])(cn\u003D[pattern]))(mailEnabled\u003Dok))

com.openexchange.groupware.ldap.InternalUsersStartingLetterSearchFilter=(&(objectClass\u003DinetOrgPerson)(objectClass\u003DOXUserObject)(sn\u003D[letter]*)(mailEnabled\u003Dok))

com.openexchange.groupware.ldap.UserAddressBookEntryDN=cn\u003D[contactid],[UserAddressBookDN]

com.openexchange.groupware.ldap.localDomainsBaseDN=ou\u003DDNSObjects,ou\u003DAdminObjects

com.openexchange.groupware.ldap.OXVDomainAttributedomainNameName=domainName

com.openexchange.groupware.ldap.LocalDomainsSearchFilter=(&(objectClass\u003DOXVDomainObject)(MTALocaldomain\u003Dtrue))

com.openexchange.groupware.ldap.OXIMAPFolderAttributefnName=fn

com.openexchange.groupware.ldap.sharedFolderBaseDN=ou\u003DSharedFolder

com.openexchange.groupware.ldap.SharedFolderSearchFilter=(&(objectclass\u003DOXIMAPFolderObject)(mailenabled\u003Dok))

!com.openexchange.groupware.ldap.sharedFolderSearchScope=1

com.openexchange.groupware.ldap.OXResourceGroupAttributeresourceGroupAvailableName=resourceGroupAvailable

com.openexchange.groupware.ldap.OXResourceGroupAttributeresourceGroupMemberName=resourceGroupMember

com.openexchange.groupware.ldap.OXResourceGroupAttributeresourceGroupNameName=resourceGroupName

com.openexchange.groupware.ldap.ResourceGroupDN=resourceGroupName\u003D[group],[resourceGroupBaseDN]

com.openexchange.groupware.ldap.ResourceGroupPatternSearchFilter=(&(objectclass\u003DOXResourceGroupObject)(resourceGroupName\u003D[pattern]))

com.openexchange.groupware.ldap.ResourceGroupSearchFilter=(objectclass\u003DOXResourceGroupObject)

!com.openexchange.groupware.ldap.ResourceGroupSearchScope=1

com.openexchange.groupware.ldap.OXResourceAttributeresourceNameName=resourceName

#Where are the resources?
com.openexchange.groupware.ldap.resourceBaseDN=ou\u003DResources,ou\u003DResourceObjects

com.openexchange.groupware.ldap.ResourceDN=resourceName\u003D[resource],[resourceBaseDN]

#Where are the resource groups?
com.openexchange.groupware.ldap.resourceGroupBaseDN=ou\u003DResourceGroups,ou\u003DResourceObjects

#Searches resources with the a pattern.
com.openexchange.groupware.ldap.ResourcePatternSearchFilter=(&(objectclass\u003DOXResourceObject)(resourceName\u003D[pattern]))

!com.openexchange.groupware.ldap.ResourceSearchScope=1

com.openexchange.groupware.ldap.DNForDefaultMail=cn\u003Dmailadmin,[userBaseDN]

com.openexchange.groupware.ldap.Factory.AuthenticationSupport=com.openexchange.groupware.ldap.DefaultAuthenticationSupport

com.openexchange.groupware.ldap.Factory.ContactSupport=com.openexchange.groupware.ldap.DefaultContactSupport

com.openexchange.groupware.ldap.Factory.MailSupport=com.openexchange.groupware.ldap.DefaultMailSupport

com.openexchange.groupware.ldap.Factory.ResourcesHandle=com.openexchange.groupware.ldap.DefaultResourcesHandle

#Class, that implementes UserGroupHandle, ResourcesHandle
com.openexchange.groupware.ldap.Factory.UserGroupHandle=com.openexchange.groupware.ldap.DefaultUserGroupHandle

#Where to search for groups?
com.openexchange.groupware.ldap.groupBaseDN=ou\u003DGroups

#Complete dn of a group.
com.openexchange.groupware.ldap.GroupDN=cn\u003D[gid],[groupBaseDN]

com.openexchange.groupware.ldap.GroupSearchFilter=(objectclass\u003DposixGroup)

#Searches all groups for the user
com.openexchange.groupware.ldap.GroupsForUserSearchFilter=(&(objectclass\u003DposixGroup)(memberUid\u003D[uid]))

com.openexchange.groupware.ldap.GroupsPatternSearchFilter=(&(objectclass\u003DposixGroup)(cn\u003D[pattern]))

!com.openexchange.groupware.ldap.GroupSearchScope=1

com.openexchange.groupware.ldap.inetOrgPersonAttributefacsimileName=facsimileTelephoneNumber

com.openexchange.groupware.ldap.inetOrgPersonAttributegivenNameName=givenName

com.openexchange.groupware.ldap.inetOrgPersonAttributelabeledURIName=labeledURI

com.openexchange.groupware.ldap.inetOrgPersonAttributelName=l

com.openexchange.groupware.ldap.inetOrgPersonAttributemailName=mail

com.openexchange.groupware.ldap.inetOrgPersonAttributemobileName=mobile

com.openexchange.groupware.ldap.inetOrgPersonAttributeoName=o

com.openexchange.groupware.ldap.inetOrgPersonAttributeouName=ou

com.openexchange.groupware.ldap.inetOrgPersonAttributepagerName=pager

com.openexchange.groupware.ldap.inetOrgPersonAttributepostalCodeName=postalCode

com.openexchange.groupware.ldap.inetOrgPersonAttributepreferredLanguageName=preferredLanguage

com.openexchange.groupware.ldap.inetOrgPersonAttributesnName=sn

com.openexchange.groupware.ldap.inetOrgPersonAttributestName=st

com.openexchange.groupware.ldap.inetOrgPersonAttributestreetName=street

com.openexchange.groupware.ldap.inetOrgPersonAttributetelephoneNumberName=telephoneNumber

com.openexchange.groupware.ldap.inetOrgPersonAttributetitleName=title

com.openexchange.groupware.ldap.OXUserObjectAttributealiasName=alias

com.openexchange.groupware.ldap.OXUserObjectAttributeappointmentDaysName=OXAppointmentDays

com.openexchange.groupware.ldap.OXUserObjectAttributeimapServerName=gosaMailServer

com.openexchange.groupware.ldap.OXUserObjectAttributemailDomainName=mailDomain

com.openexchange.groupware.ldap.OXUserObjectAttributesmtpServerName=gosaMailServer

com.openexchange.groupware.ldap.OXUserObjectAttributetaskDaysName=OXTaskDays

com.openexchange.groupware.ldap.OXUserObjectAttributetimeZoneName=OXTimeZone

com.openexchange.groupware.ldap.OXUserObjectAttributeuserCountryName=st

com.openexchange.groupware.ldap.OXUserObjectAttributevaddressName=vaddress

com.openexchange.groupware.ldap.posixAccountAttributecnName=cn

com.openexchange.groupware.ldap.posixAccountAttributeuidName=uid

com.openexchange.groupware.ldap.posixGroupAttributecnName=cn

com.openexchange.groupware.ldap.posixGroupAttributememberUidName=memberUid

com.openexchange.groupware.ldap.UserAddressBookDN=ou\u003Daddr,cn\u003D[uid],[userBaseDN]

com.openexchange.groupware.ldap.UserAttributeOpenLDAPaciName=OpenLDAPaci

com.openexchange.groupware.ldap.userBaseDN=ou\u003Dpeople

#DN to the user object
com.openexchange.groupware.ldap.UserDN=cn\u003D[uid],[userBaseDN]

com.openexchange.groupware.ldap.UsersCNPatternSearchFilter=(&(objectclass\u003DposixAccount)(objectClass\u003DinetOrgPerson)(|(cn\u003D[pattern])(givenName\u003D[pattern])(cn\u003D[pattern])))

com.openexchange.groupware.ldap.UserSearchFilter=(&(cn\u003D[uid])(objectClass\u003DOXUserObject))

!com.openexchange.groupware.ldap.UserSearchScope=1

com.openexchange.groupware.ldap.UsersForeSureNamePatternSearchFilter=(&(objectclass\u003DposixAccount)(|(givenName\u003D[pattern])(sn\u003D[pattern])))

com.openexchange.groupware.ldap.UsersForeSureNameUIDPatternSearchFilter=(&(objectclass\u003DposixAccount)(objectClass\u003DinetOrgPerson)(|(givenName\u003D[pattern])(sn\u003D[pattern])(cn\u003D[pattern])))

com.openexchange.groupware.ldap.UsersPatternSearchFilter=(&(objectclass\u003DposixAccount)(cn\u003D[pattern]))

#Define the objectClasses an user object should belong to if you are performing pattern searches.
com.openexchange.groupware.ldap.UsersPatternSearchObjectClasses=posixAccount,inetOrgPerson,OXUserObject

com.openexchange.groupware.ldap.GlobalAddressBookSearchScope=1

com.openexchange.groupware.ldap.inetOrgPersonAttributejpegPhotoName=jpegPhoto

com.openexchange.groupware.ldap.OXUserObjectAttributeDayViewEndTimeName=OXDayViewEndTime

com.openexchange.groupware.ldap.OXUserObjectAttributeDayViewStartTimeName=OXDayViewStartTime

com.openexchange.groupware.ldap.OXUserObjectAttributeDayViewIntervalName=OXDayViewInterval

!com.openexchange.groupware.ldap.LocalDomainsSearchScope=1






This configuration is based in documentation gets from 
http://www.open-xchange.org/oxwiki/

TODO:
- more testing
- check cn configuration
- check addressbook
- subtree support

