[Kolab-devel] Kolab + OpenLDAP

Jeroen van Meeuwen (Kolab Systems) vanmeeuwen at kolabsys.com
Wed Jan 23 12:14:00 CET 2013


On 2013-01-22 17:37, Diane Trout wrote:
> On Tuesday, January 22, 2013 12:03:45 Jeroen van Meeuwen wrote:
>> On 2013-01-22 06:31, Diane Trout wrote:
>>> Hi,
>>> 
>>> I made an attempt to run Kolab using OpenLDAP.
>>> 
>>> The kolab.ldif that you're shipping isn't quite compatible with how
>>> openldap
>>> likes their schema files. (I can provide the altered kolab2.ldif if
>>> you'd like)
>> 
>> I'm assuming you're speaking about the .schema vs. the standard .ldif
>> files format. Have you looked at the files we actually provide at
>> http://git.kolab.org/kolab-schema/tree/?
> 
> I definately know OpenLDAP wants schema files to use olcAtributeTypes 
> and
> olcObjectClasses. I modified the dn, and added the objectClass: 
> olcSchemaConfig
> and cn: kolab2 because all their provided schema files used that 
> format.
> 

Right, so do we need an OpenLDAP-specific copy of our schema in 
git.kolab.org/kolab-schema?

>> - That is where we best store enabled domain name spaces for Kolab,
>> - That is where VLV/SSS configuration can be detected.
> 
> What is VLV/SSS?
> 

Virtual List View[1] and Server-Side Sorting[2]

[1] http://tools.ietf.org/html/draft-ietf-ldapext-ldapv3-vlv-09
[2] http://tools.ietf.org/html/rfc2891

>>> I disovered that kolab wanted a domanRelatedObject and I didn't want
>>> to figure out how to create a cn=kolab,cn=config tree. so I attached 
>>> it to the
>>> root object for my ldap tree.
>> 
>> These are actually settings (see
>> http://git.kolab.org/pykolab/tree/conf/kolab.conf#n95), though I 
>> reckon
>> the web administration panel refers to 'domainrelatedobject' in some
>> places.
> 
> I discovered it wanted domainrelatedobject by looking at the LDAP 
> logs, so it
> is doing that search.
> 

Most of pykolab's interactions with LDAP are subject to configuration, 
though.

I think you must have found an LDAP log entry caused by the web admin, 
because other software uses something along the lines of 
(associateddomain=%s) or (associateddomain=*) - associateddomain being 
an attributetype to a domainrelatedobject objectclass though.

One could set up kolabd so that it polls 'ou=Domains' for 
'cn=domain.tld', and it would merely be the webadmin that requires the 
enhancement of allowing the specification of the objectclass(es) to use.

>>> Also it crashes if you set unique_attribute to entryUUID as pykolab 
>>> is
>>> assuming all attribute names are lower cased.
>> 
>> Supply the configuration value in all lower-case, please.
> 
> I figured that out, though it took a while. The error was an key 
> exception
> because it couldn't find entryUUID. It might be nice if some earlier 
> component
> either fixed the case, issued a warning, or there was an occasional 
> assertion
> that would error out on mixed case configuration files.
> 

Sure, I suppose this could be done in check_setting_*() callbacks in 
pykolab/conf/__init__.py, like we already execute them for CLI options.

>>> With all those changes from 0.5.11 packages:
>>> 
>>> kolabd -l debug -d 9 runs without sleeping
>>> kolab-webadmin can login but only shows the "About" button.
>> 
>> Do you have mozldap utilities "ldapsearch" installed, and if so, in
>> what location do they reside?
> 
> I just have the openldap ldap-utils package. I looked in the lxc 
> container
> with your installed packages and discovered the mozldap-tools package.
> 
> I'll have to investigate that.
> 

It's the mozldap-tools that have the necessary extensions to get to 
effectiverights, and it is them the web admin API will want to execute.

>>> roundcubemail seems to work fine (browsed mail, created a contact,
>>> viewed
>>> calendar).
>> 
>> It'd be lovely if we also had your notes on initially installing
>> OpenLDAP, and creating the default tree / setting the appropriate 
>> ACLs,
>> noted that in 389 DS, we can change these aspects in real-time, 
>> whereas
>> I recall OpenLDAP may still require us to put some files on the
>> filesystem and reload/restart the service.
> 
> OpenLDAP switched to configuration in ldap with 2.3. With 2.4 they 
> actually
> include checksums on their plain text configuration files to
> discourage you from
> modifying them by hand. e.g. to add a new schema I did:
> 
>    ldapadd -a -Y EXTERNAL -H ldapi:///  -f /tmp/rfc2739.ldif
> 
> Though they haven't implemented an easy way to delete or renumber 
> schema
> entries through ldap. It appears you still need to rm the file from
> /etc/ldap/slapd.d/cn=config/cn=schema.
> 
> I'll try to make coherent notes once I get enough working.
> 

Thank you, once we have a process that can be automated, it should be 
pretty simple and straightforward to allow a setup-kolab procedure to 
take a --with-ldap=openldap / --with-openldap.

Kind regards,

Jeroen van Meeuwen

-- 
Systems Architect, Kolab Systems AG

e: vanmeeuwen at kolabsys.com
m: +44 74 2516 3817
w: http://www.kolabsys.com

pgp: 9342 BF08




More information about the devel mailing list