Using OpenLDAP for a Roaming Bookmark Storage on Netscape

By: Brian E. Lavender
Date: May 21, 2001

Open LDAP is a database storage system. It's not like a SQL database though. It is more like a tree structure similar to that of your file system. In your file system, you start off of the root directory, and you traverse into subdirectories. Some directories you can create files in, while in some you have just read access. OpenLDAP follows a similar concept. But it also has it so that you can specify that only email addresses are stored in a specific directory. Now of course you may be familiar with NFS where you can mount remote file systems. LDAP has a similar concept where you can actually refer a request to another LDAP server. In fact, LDAP can be accessed using a URI with the format of ldap://,ou=design. Access control can also be applied to this, so that only a specific user can access it with his password. For this talk I will focus on using OpenLDAP for storing your bookmarks in Netscape. Consider this a jump start. It certainly touches a small portion of the capabilities OpenLDAP offers. I used the following HOWTO, so I'll try not to repeat what is already covered.

The above HOWTO assumes that you are somewhat familiar with OpenLDAP, so here's the basic steps I used to get it running. I grabbed the sources for LDAP and BerkeleyDB

Obtain Berkeley DB from

Follow the build instructions. For this demo, I built it in the default location. Build OpenLDAP (v2.07) using the following line.

$ env CPPFLAGS="-I/usr/local/BerkeleyDB/include" \
LDFLAGS="-L/usr/local/BerkeleyDB/lib" ./configure
$ make depend; make; su; make install

Once OpenLDAP is built. Now some notes from following the HOWTO

Note the the root password is secret slapd.conf. It is stored in clear text (not readable, but root)and passed in clear text

This case the password is "secret"

Add the mull.schema
make modifications to slapd.conf

Create the debian.ldif file. This file provides data to populate the database. First, you create the first node which is the top, and then define data below it. The data must match the schema when it is inserted.