A recurring question is whether a directory based on the Lightweight Directory Access Protocol (LDAP) can be used as an address book. The answer is of course yes, but there are some caveats in doing so. An LDAP directory is a hierarchical datastore made up of entries that adhere to a schema which defines the attribute types and values allowed in each entry. The schema defines object classes, and each entry must have at least one object class. A ubiquitous object class is the inetOrgPerson class which describes a person and attribute types of that person, such as a postal address (postalAddress), their photograph (jpegPhoto), and their preferred name (displayName). One important attribute type is the person’s email address (mail). Although the mail attribute type is multi-valued (i.e. several distinct email addresses may be stored in it), it is difficult to keep those separate. Suppose a user has a work and a home email address, there is currently no LDAP-enabled mail client I’m aware of that can cleverly utilize those two addresses, presenting the user a choice of work or home when composing a message. The popular programs such as Mozilla’s Thunderbird, Apple’s Mail.app, Microsoft’s Outlook Express or Outlook don’t support that because they cannot be configured to do so. Probably the best implementation is on Novell’s Evolution, but here again, nothing is perfect, although Evolution at least has write-support on the LDAP directory. More details on client capabilities can be found in an OpenOffice presentation entitled LDAP105: Clients by Adam Tauno Williams. In spite of the caveats, an LDAP directory might be very useful as an address book. Careful selection of the client capabilities and a bit of thought into the schema design can help make it a good experience.