Updated the LDAP connector to work with the latest versions
authorArt Cancro <ajc@citadel.org>
Thu, 9 Mar 2006 20:31:37 +0000 (20:31 +0000)
committerArt Cancro <ajc@citadel.org>
Thu, 9 Mar 2006 20:31:37 +0000 (20:31 +0000)
of OpenLDAP.  We now interoperate well with the schemas that are supplied by default with
the OpenLDAP distribution.  We do, however, need to extend them with rfc2739.schema and
citadel.schema, which are now supplied with Citadel.  We now extend inetOrgPerson into a new
objectClass called citadelInetOrgPerson for this purpose.  TODO: we have applied with
IANA for an OID, but we do not have it yet.

citadel/citadel-openldap.schema [deleted file]
citadel/docs/citadel.html
citadel/openldap/citadel.schema [new file with mode: 0644]
citadel/openldap/rfc2739.schema [new file with mode: 0644]
citadel/serv_ldap.c

diff --git a/citadel/citadel-openldap.schema b/citadel/citadel-openldap.schema
deleted file mode 100644 (file)
index d441ce7..0000000
+++ /dev/null
@@ -1,1020 +0,0 @@
-#
-# $Id$
-# 
-
-# This is the OpenLDAP schema for Citadel.
-
-# It begins with the OpenLDAP core schema.
-#
-# The rest is lifted directly from the Kolab source code <http://www.kroupware.org>
-# because it is intended to be compatible with that product.
-
-# (c) 2004 Art Cancro <ajc@uncensored.citadel.org>
-# (c) 2003 Tassilo Erlewein <tassilo.erlewein@erfrakon.de>
-# (c) 2003 Martin Konold <martin.konold@erfrakon.de>
-# (c) 2003 Achim Frank <achim.frank@erfrakon.de>
-
-# This program is Free Software under the GNU General Public License (>=v2).
-# Read the file COPYING that comes with this packages for details.
-
-
-##############
-# attributes #
-##############
-
-attributetype ( 2.5.4.2 NAME 'knowledgeInformation'
-       DESC 'RFC2256: knowledge information'
-       EQUALITY caseIgnoreMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
-
-attributetype ( 2.5.4.4 NAME ( 'sn' 'surname' )
-       DESC 'RFC2256: last (family) name(s) for which the entity is known by'
-       SUP name )
-
-attributetype ( 2.5.4.5 NAME 'serialNumber'
-       DESC 'RFC2256: serial number of the entity'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{64} )
-
-attributetype ( 2.5.4.6 NAME ( 'c' 'countryName' )
-       DESC 'RFC2256: ISO-3166 country 2-letter code'
-       SUP name SINGLE-VALUE )
-
-attributetype ( 2.5.4.7 NAME ( 'l' 'localityName' )
-       DESC 'RFC2256: locality which this object resides in'
-       SUP name )
-
-attributetype ( 2.5.4.8 NAME ( 'st' 'stateOrProvinceName' )
-       DESC 'RFC2256: state or province which this object resides in'
-       SUP name )
-
-attributetype ( 2.5.4.9 NAME ( 'street' 'streetAddress' )
-       DESC 'RFC2256: street address of this object'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-
-attributetype ( 2.5.4.10 NAME ( 'o' 'organizationName' )
-       DESC 'RFC2256: organization this object belongs to'
-       SUP name )
-
-attributetype ( 2.5.4.11 NAME ( 'ou' 'organizationalUnitName' )
-       DESC 'RFC2256: organizational unit this object belongs to'
-       SUP name )
-
-attributetype ( 2.5.4.12 NAME 'title'
-       DESC 'RFC2256: title associated with the entity'
-       SUP name )
-
-attributetype ( 2.5.4.13 NAME 'description'
-       DESC 'RFC2256: descriptive information'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
-
-attributetype ( 2.5.4.14 NAME 'searchGuide'
-       DESC 'RFC2256: search guide, obsoleted by enhancedSearchGuide'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.25 )
-
-attributetype ( 2.5.4.15 NAME 'businessCategory'
-       DESC 'RFC2256: business category'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-
-attributetype ( 2.5.4.16 NAME 'postalAddress'
-       DESC 'RFC2256: postal address'
-       EQUALITY caseIgnoreListMatch
-       SUBSTR caseIgnoreListSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-
-attributetype ( 2.5.4.17 NAME 'postalCode'
-       DESC 'RFC2256: postal code'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )
-
-attributetype ( 2.5.4.18 NAME 'postOfficeBox'
-       DESC 'RFC2256: Post Office Box'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40} )
-
-attributetype ( 2.5.4.19 NAME 'physicalDeliveryOfficeName'
-       DESC 'RFC2256: Physical Delivery Office Name'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
-
-attributetype ( 2.5.4.20 NAME 'telephoneNumber'
-       DESC 'RFC2256: Telephone Number'
-       EQUALITY telephoneNumberMatch
-       SUBSTR telephoneNumberSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} )
-
-attributetype ( 2.5.4.21 NAME 'telexNumber'
-       DESC 'RFC2256: Telex Number'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.52 )
-
-attributetype ( 2.5.4.22 NAME 'teletexTerminalIdentifier'
-       DESC 'RFC2256: Teletex Terminal Identifier'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.51 )
-
-attributetype ( 2.5.4.23 NAME ( 'facsimileTelephoneNumber' 'fax' )
-       DESC 'RFC2256: Facsimile (Fax) Telephone Number'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.22 )
-
-attributetype ( 2.5.4.24 NAME 'x121Address'
-       DESC 'RFC2256: X.121 Address'
-       EQUALITY numericStringMatch
-       SUBSTR numericStringSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{15} )
-
-attributetype ( 2.5.4.25 NAME 'internationaliSDNNumber'
-       DESC 'RFC2256: international ISDN number'
-       EQUALITY numericStringMatch
-       SUBSTR numericStringSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{16} )
-
-attributetype ( 2.5.4.26 NAME 'registeredAddress'
-       DESC 'RFC2256: registered postal address'
-       SUP postalAddress
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-
-attributetype ( 2.5.4.27 NAME 'destinationIndicator'
-       DESC 'RFC2256: destination indicator'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{128} )
-
-attributetype ( 2.5.4.28 NAME 'preferredDeliveryMethod'
-       DESC 'RFC2256: preferred delivery method'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.14
-       SINGLE-VALUE )
-
-attributetype ( 2.5.4.29 NAME 'presentationAddress'
-       DESC 'RFC2256: presentation address'
-       EQUALITY presentationAddressMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.43
-       SINGLE-VALUE )
-
-attributetype ( 2.5.4.30 NAME 'supportedApplicationContext'
-       DESC 'RFC2256: supported application context'
-       EQUALITY objectIdentifierMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
-
-attributetype ( 2.5.4.31 NAME 'member'
-       DESC 'RFC2256: member of a group'
-       EQUALITY distinguishedNameMatch
-       SUP distinguishedName )
-
-attributetype ( 2.5.4.32 NAME 'owner'
-       DESC 'RFC2256: owner (of the object)'
-       SUP distinguishedName )
-
-attributetype ( 2.5.4.33 NAME 'roleOccupant'
-       DESC 'RFC2256: occupant of role'
-       SUP distinguishedName )
-
-attributetype ( 2.5.4.34 NAME 'seeAlso'
-       DESC 'RFC2256: DN of related object'
-       SUP distinguishedName )
-
-attributetype ( 2.5.4.36 NAME 'userCertificate'
-       DESC 'RFC2256: X.509 user certificate, use ;binary'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
-
-attributetype ( 2.5.4.37 NAME 'cACertificate'
-       DESC 'RFC2256: X.509 CA certificate, use ;binary'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.8 )
-
-attributetype ( 2.5.4.38 NAME 'authorityRevocationList'
-       DESC 'RFC2256: X.509 authority revocation list, use ;binary'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
-
-attributetype ( 2.5.4.39 NAME 'certificateRevocationList'
-       DESC 'RFC2256: X.509 certificate revocation list, use ;binary'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
-
-attributetype ( 2.5.4.40 NAME 'crossCertificatePair'
-       DESC 'RFC2256: X.509 cross certificate pair, use ;binary'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.10 )
-
-attributetype ( 2.5.4.42 NAME ( 'givenName' 'gn' )
-       DESC 'RFC2256: first name(s) for which the entity is known by'
-       SUP name )
-
-attributetype ( 2.5.4.43 NAME 'initials'
-       DESC 'RFC2256: initials of some or all of names, but not the surname(s).'
-       SUP name )
-
-attributetype ( 2.5.4.44 NAME 'generationQualifier'
-       DESC 'RFC2256: name qualifier indicating a generation'
-       SUP name )
-
-attributetype ( 2.5.4.45 NAME 'x500UniqueIdentifier'
-       DESC 'RFC2256: X.500 unique identifier'
-       EQUALITY bitStringMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.6 )
-
-attributetype ( 2.5.4.46 NAME 'dnQualifier'
-       DESC 'RFC2256: DN qualifier'
-       EQUALITY caseIgnoreMatch
-       ORDERING caseIgnoreOrderingMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
-
-attributetype ( 2.5.4.47 NAME 'enhancedSearchGuide'
-       DESC 'RFC2256: enhanced search guide'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.21 )
-
-attributetype ( 2.5.4.48 NAME 'protocolInformation'
-       DESC 'RFC2256: protocol information'
-       EQUALITY protocolInformationMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.42 )
-
-attributetype ( 2.5.4.50 NAME 'uniqueMember'
-       DESC 'RFC2256: unique member of a group'
-       EQUALITY uniqueMemberMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.34 )
-
-attributetype ( 2.5.4.51 NAME 'houseIdentifier'
-       DESC 'RFC2256: house identifier'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )
-
-attributetype ( 2.5.4.52 NAME 'supportedAlgorithms'
-       DESC 'RFC2256: supported algorithms'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.49 )
-
-attributetype ( 2.5.4.53 NAME 'deltaRevocationList'
-       DESC 'RFC2256: delta revocation list; use ;binary'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.9 )
-
-attributetype ( 2.5.4.54 NAME 'dmdName'
-       DESC 'RFC2256: name of DMD'
-       SUP name )
-       
-attributetype ( 1.3.6.1.4.1.250.1.57 NAME 'labeledURI'
-       DESC 'RFC2079: Uniform Resource Identifier with optional label'
-       EQUALITY caseExactMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 0.9.2342.19200300.100.1.1
-       NAME ( 'uid' 'userid' )
-       DESC 'RFC1274: user identifier'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.3
-       NAME ( 'mail' 'rfc822Mailbox' )
-       DESC 'RFC1274: RFC822 Mailbox'
-    EQUALITY caseIgnoreIA5Match
-    SUBSTR caseIgnoreIA5SubstringsMatch
-    SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.37
-       NAME 'associatedDomain'
-       DESC 'RFC1274: domain associated with object'
-       EQUALITY caseIgnoreIA5Match
-       SUBSTR caseIgnoreIA5SubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 1.2.840.113549.1.9.1
-       NAME ( 'email' 'emailAddress' 'pkcs9email' )
-       DESC 'RFC2459: legacy attribute for email addresses in DNs'
-       EQUALITY caseIgnoreIA5Match
-       SUBSTR caseIgnoreIA5SubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{128} )
-
-attributetype ( 0.9.2342.19200300.100.1.2 NAME 'textEncodedORAddress'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.4 NAME 'info'
-       DESC 'RFC1274: general information'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{2048} )
-
-attributetype ( 0.9.2342.19200300.100.1.5
-       NAME ( 'drink' 'favouriteDrink' )
-       DESC 'RFC1274: favorite drink'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.6 NAME 'roomNumber'
-       DESC 'RFC1274: room number'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.7 NAME 'photo'
-       DESC 'RFC1274: photo (G3 fax)'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.23{25000} )
-
-attributetype ( 0.9.2342.19200300.100.1.8 NAME 'userClass'
-       DESC 'RFC1274: categorory of user'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.9 NAME 'host'
-       DESC 'RFC1274: host computer'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.10 NAME 'manager'
-       DESC 'RFC1274: DN of manager'
-       EQUALITY distinguishedNameMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 0.9.2342.19200300.100.1.11 NAME 'documentIdentifier'
-       DESC 'RFC1274: unique identifier of document'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.12 NAME 'documentTitle'
-       DESC 'RFC1274: title of document'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.13 NAME 'documentVersion'
-       DESC 'RFC1274: version of document'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.14 NAME 'documentAuthor'
-       DESC 'RFC1274: DN of author of document'
-       EQUALITY distinguishedNameMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 0.9.2342.19200300.100.1.15 NAME 'documentLocation'
-       DESC 'RFC1274: location of document original'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.20
-       DESC 'RFC1274: home telephone number'
-       NAME ( 'homePhone' 'homeTelephoneNumber' )
-       EQUALITY telephoneNumberMatch
-       SUBSTR telephoneNumberSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
-
-attributetype ( 0.9.2342.19200300.100.1.21 NAME 'secretary'
-       DESC 'RFC1274: DN of secretary'
-       EQUALITY distinguishedNameMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 0.9.2342.19200300.100.1.22 NAME 'otherMailbox'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.39 )
-
-attributetype ( 0.9.2342.19200300.100.1.26 NAME 'aRecord'
-       EQUALITY caseIgnoreIA5Match
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 0.9.2342.19200300.100.1.27 NAME 'mDRecord'
-       EQUALITY caseIgnoreIA5Match
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 0.9.2342.19200300.100.1.28 NAME 'mXRecord'
-       EQUALITY caseIgnoreIA5Match
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 0.9.2342.19200300.100.1.29 NAME 'nSRecord'
-       EQUALITY caseIgnoreIA5Match
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 0.9.2342.19200300.100.1.30 NAME 'sOARecord'
-       EQUALITY caseIgnoreIA5Match
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 0.9.2342.19200300.100.1.31 NAME 'cNAMERecord'
-       EQUALITY caseIgnoreIA5Match
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-attributetype ( 0.9.2342.19200300.100.1.38 NAME 'associatedName'
-       DESC 'RFC1274: DN of entry associated with domain'
-       EQUALITY distinguishedNameMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 0.9.2342.19200300.100.1.39 NAME 'homePostalAddress'
-       DESC 'RFC1274: home postal address'
-       EQUALITY caseIgnoreListMatch
-       SUBSTR caseIgnoreListSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.41 )
-
-attributetype ( 0.9.2342.19200300.100.1.40 NAME 'personalTitle'
-       DESC 'RFC1274: personal title'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.41
-       NAME ( 'mobile' 'mobileTelephoneNumber' )
-       DESC 'RFC1274: mobile telephone number'
-       EQUALITY telephoneNumberMatch
-       SUBSTR telephoneNumberSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
-
-attributetype ( 0.9.2342.19200300.100.1.42
-       NAME ( 'pager' 'pagerTelephoneNumber' )
-       DESC 'RFC1274: pager telephone number'
-       EQUALITY telephoneNumberMatch
-       SUBSTR telephoneNumberSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
-
-attributetype ( 0.9.2342.19200300.100.1.43
-       NAME ( 'co' 'friendlyCountryName' )
-       DESC 'RFC1274: friendly country name'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 0.9.2342.19200300.100.1.44 NAME 'uniqueIdentifier'
-       DESC 'RFC1274: unique identifer'
-       EQUALITY caseIgnoreMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.45 NAME 'organizationalStatus'
-       DESC 'RFC1274: organizational status'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.46 NAME 'janetMailbox'
-       DESC 'RFC1274: Janet mailbox'
-       EQUALITY caseIgnoreIA5Match
-       SUBSTR caseIgnoreIA5SubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.47
-       NAME 'mailPreferenceOption'
-       DESC 'RFC1274: mail preference option'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-
-attributetype ( 0.9.2342.19200300.100.1.48 NAME 'buildingName'
-       DESC 'RFC1274: name of building'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
-
-attributetype ( 0.9.2342.19200300.100.1.49 NAME 'dSAQuality'
-       DESC 'RFC1274: DSA Quality'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.19 SINGLE-VALUE )
-
-attributetype ( 0.9.2342.19200300.100.1.50 NAME 'singleLevelQuality'
-       DESC 'RFC1274: Single Level Quality'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )
-
-attributetype ( 0.9.2342.19200300.100.1.51 NAME 'subtreeMinimumQuality'
-       DESC 'RFC1274: Subtree Mininum Quality'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )
-
-attributetype ( 0.9.2342.19200300.100.1.52 NAME 'subtreeMaximumQuality'
-       DESC 'RFC1274: Subtree Maximun Quality'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.13 SINGLE-VALUE )
-
-attributetype ( 0.9.2342.19200300.100.1.53 NAME 'personalSignature'
-       DESC 'RFC1274: Personal Signature (G3 fax)'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.23 )
-
-attributetype ( 0.9.2342.19200300.100.1.54 NAME 'dITRedirect'
-       DESC 'RFC1274: DIT Redirect'
-       EQUALITY distinguishedNameMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
-
-attributetype ( 0.9.2342.19200300.100.1.55 NAME 'audio'
-       DESC 'RFC1274: audio (u-law)'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.4{25000} )
-
-attributetype ( 0.9.2342.19200300.100.1.56 NAME 'documentPublisher'
-       DESC 'RFC1274: publisher of document'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 2.16.840.1.113730.3.1.1
-       NAME 'carLicense'
-       DESC 'RFC2798: vehicle license or registration plate'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 2.16.840.1.113730.3.1.2
-       NAME 'departmentNumber'
-       DESC 'RFC2798: identifies a department within an organization'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 2.16.840.1.113730.3.1.241
-       NAME 'displayName'
-       DESC 'RFC2798: preferred name to be used when displaying entries'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-       SINGLE-VALUE )
-
-attributetype ( 2.16.840.1.113730.3.1.3
-       NAME 'employeeNumber'
-       DESC 'RFC2798: numerically identifies an employee within an organization'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-       SINGLE-VALUE )
-
-attributetype ( 2.16.840.1.113730.3.1.4
-       NAME 'employeeType'
-       DESC 'RFC2798: type of employment for a person'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
-
-attributetype ( 0.9.2342.19200300.100.1.60
-       NAME 'jpegPhoto'
-       DESC 'RFC2798: a JPEG image'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.28 )
-
-attributetype ( 2.16.840.1.113730.3.1.39
-       NAME 'preferredLanguage'
-       DESC 'RFC2798: preferred written or spoken language for a person'
-       EQUALITY caseIgnoreMatch
-       SUBSTR caseIgnoreSubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
-       SINGLE-VALUE )
-
-attributetype ( 2.16.840.1.113730.3.1.40
-       NAME 'userSMIMECertificate'
-       DESC 'RFC2798: PKCS#7 SignedData used to support S/MIME'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 )
-
-attributetype ( 2.16.840.1.113730.3.1.216
-       NAME 'userPKCS12'
-       DESC 'RFC2798: personal identity information, a PKCS #12 PFX'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.5 )
-
-attributetype ( 0.9.2342.19200300.100.1.25
-       NAME ( 'dc' 'domainComponent' )
-       DESC 'RFC1274/2247: domain component'
-       EQUALITY caseIgnoreIA5Match
-       SUBSTR caseIgnoreIA5SubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
-
-####################
-# kolab attributes #
-####################
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.1
-        NAME ( 'k' 'kolab' )
-        SUP name )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.2
-       NAME 'deleteflag'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 
-       EQUALITY booleanMatch )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.3
-        NAME 'alias' 
-        DESC 'RFC1274: RFC822 Mailbox'
-       EQUALITY caseIgnoreIA5Match
-       SUBSTR caseIgnoreIA5SubstringsMatch
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-# global attributes
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.5
-       NAME 'fqhostname'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
-
-# postfix specific attributes
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.501
-       NAME 'postfix-mydomain'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.502
-       NAME 'postfix-relaydomains'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.503
-       NAME 'postfix-mydestination'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.504
-       NAME 'postfix-mynetworks'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.505
-        NAME 'postfix-relayhost'
-        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.506
-        NAME 'postfix-transport'
-        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-
-# imapd specific attributes
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.601
-       NAME 'cyrus-autocreatequota'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.602
-       NAME 'cyrus-admins'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.603
-       NAME 'cyrus-imap'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-       EQUALITY booleanMatch )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.604
-       NAME 'cyrus-pop3'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 
-       EQUALITY booleanMatch )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.605
-        NAME 'userquota'
-        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.651
-       NAME 'acl'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.606
-        NAME 'cyrus-imaps'
-        SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
-       EQUALITY booleanMatch )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.607
-        NAME 'cyrus-pop3s'
-        SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 
-       EQUALITY booleanMatch )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.608
-        NAME 'cyrus-sieve'
-        SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 
-       EQUALITY booleanMatch )
-
-# apache2 and php specific attributes
-attributetype ( 1.3.6.1.4.1.60000.2.1.701
-       NAME 'apache-http'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 
-       EQUALITY booleanMatch )
-
-# proftpd specific attributes
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.901
-       NAME 'proftpd-defaultquota'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.902
-       NAME 'proftpd-ftp'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 
-       EQUALITY booleanMatch )
-
-attributetype ( 1.3.6.1.4.1.60000.2.1.903
-       NAME 'proftpd-userPassword'
-       SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) 
-
-########################
-# kolab object classes #
-########################
-
-objectclass ( 1.3.6.1.4.1.60000.2.2.1 NAME 'kolab'
-       DESC 'Kolab server config'
-       MUST k
-       SUP top STRUCTURAL
-       MAY (   fqhostname $
-               postfix-mydomain $ 
-               postfix-relaydomains $ 
-               postfix-mydestination $ 
-               postfix-mynetworks $ 
-               postfix-relayhost $ 
-               postfix-transport $
-               cyrus-autocreatequota $ 
-               cyrus-admins $ 
-               cyrus-imap $ 
-               cyrus-pop3 $ 
-               cyrus-imaps $ 
-               cyrus-pop3s $ 
-               cyrus-sieve $
-               apache-http $
-               proftpd-ftp $ 
-               proftpd-defaultquota $ 
-               uid $
-               userPassword ) )
-
-objectclass ( 1.3.6.1.4.1.60000.2.2.9 NAME 'sharedfolder'
-       DESC 'IMAP shared folder'
-       SUP top STRUCTURAL
-       MUST cn
-       MAY ( acl $ userquota $ deleteflag ) ) 
-
-objectclass ( 1.3.6.1.4.1.5322.13.1.1 NAME 'namedObject' 
-       SUP top STRUCTURAL 
-       MAY cn )
-
-##################
-# object classes #
-##################
-
-objectclass ( 2.5.6.2 NAME 'country'
-       DESC 'RFC2256: a country'
-       SUP top STRUCTURAL
-       MUST c
-       MAY ( searchGuide $ description $ deleteflag ) )
-
-objectclass ( 2.5.6.3 NAME 'locality'
-       DESC 'RFC2256: a locality'
-       SUP top STRUCTURAL
-       MAY ( street $ seeAlso $ searchGuide $ st $ l $ description $ deleteflag ) )
-
-objectclass ( 2.5.6.4 NAME 'organization'
-       DESC 'RFC2256: an organization'
-       SUP top STRUCTURAL
-       MUST o
-       MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
-               x121Address $ registeredAddress $ destinationIndicator $
-               preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-               telephoneNumber $ internationaliSDNNumber $
-               facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
-               postalAddress $ physicalDeliveryOfficeName $ st $ l $ description $ 
-                c $ mail $ deleteflag $ alias ) )
-
-objectclass ( 2.5.6.5 NAME 'organizationalUnit'
-       DESC 'RFC2256: an organizational unit'
-       SUP top STRUCTURAL
-       MUST ou
-       MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
-               x121Address $ registeredAddress $ destinationIndicator $
-               preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-               telephoneNumber $ internationaliSDNNumber $
-               facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
-               postalAddress $ physicalDeliveryOfficeName $ st $ l $ description $ 
-                c $ mail $ deleteflag $ alias ) )
-
-objectclass ( 2.5.6.6 NAME 'person'
-       DESC 'RFC2256: a person'
-       SUP top STRUCTURAL
-       MUST ( sn $ cn )
-       MAY ( userPassword $ telephoneNumber $ seeAlso $ description $ deleteflag ) )
-
-objectclass ( 2.5.6.7 NAME 'organizationalPerson'
-       DESC 'RFC2256: an organizational person'
-       SUP person STRUCTURAL
-       MAY ( title $ x121Address $ registeredAddress $ destinationIndicator $
-               preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-               telephoneNumber $ internationaliSDNNumber $
-               facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $
-               postalAddress $ physicalDeliveryOfficeName $ ou $ st $ l $ 
-                c $ userquota $ deleteflag ) )
-
-#objectclass ( 2.5.6.8 NAME 'organizationalRole'
-#      DESC 'RFC2256: an organizational role'
-#      SUP top STRUCTURAL
-#      MUST cn
-#      MAY ( x121Address $ registeredAddress $ destinationIndicator $
-#              preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-#              telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $
-#              seeAlso $ roleOccupant $ preferredDeliveryMethod $ street $
-#              postOfficeBox $ postalCode $ postalAddress $
-#              physicalDeliveryOfficeName $ ou $ st $ l $ description ) )
-
-objectclass ( 2.5.6.9 NAME 'groupOfNames'
-       DESC 'RFC2256: a group of names (DNs)'
-       SUP top STRUCTURAL
-       MUST ( cn )
-       MAY ( member $ businessCategory $ seeAlso $ owner $ ou $ o $ description $ deleteflag ) )
-
-#objectclass ( 2.5.6.10 NAME 'residentialPerson'
-#      DESC 'RFC2256: an residential person'
-#      SUP person STRUCTURAL
-#      MUST l
-#      MAY ( businessCategory $ x121Address $ registeredAddress $
-#              destinationIndicator $ preferredDeliveryMethod $ telexNumber $
-#              teletexTerminalIdentifier $ telephoneNumber $ internationaliSDNNumber $
-#              facsimileTelephoneNumber $ preferredDeliveryMethod $ street $
-#              postOfficeBox $ postalCode $ postalAddress $
-#              physicalDeliveryOfficeName $ st $ l $ c $ deleteflag ) )
-
-objectclass ( 2.5.6.11 NAME 'applicationProcess'
-       DESC 'RFC2256: an application process'
-       SUP top STRUCTURAL
-       MUST cn
-       MAY ( seeAlso $ ou $ l $ description ) )
-
-#objectclass ( 2.5.6.12 NAME 'applicationEntity'
-#      DESC 'RFC2256: an application entity'
-#      SUP top STRUCTURAL
-#      MUST ( presentationAddress $ cn )
-#      MAY ( supportedApplicationContext $ seeAlso $ ou $ o $ l $
-#      description ) )
-
-#objectclass ( 2.5.6.13 NAME 'dSA'
-#      DESC 'RFC2256: a directory system agent (a server)'
-#      SUP applicationEntity STRUCTURAL
-#      MAY knowledgeInformation )
-
-#objectclass ( 2.5.6.14 NAME 'device'
-#      DESC 'RFC2256: a device'
-#      SUP top STRUCTURAL
-#      MUST cn
-#      MAY ( serialNumber $ seeAlso $ owner $ ou $ o $ l $ description ) )
-
-#objectclass ( 2.5.6.15 NAME 'strongAuthenticationUser'
-#      DESC 'RFC2256: a strong authentication user'
-#      SUP top AUXILIARY
-#      MUST userCertificate )
-
-#objectclass ( 2.5.6.16 NAME 'certificationAuthority'
-#      DESC 'RFC2256: a certificate authority'
-#      SUP top AUXILIARY
-#      MUST ( authorityRevocationList $ certificateRevocationList $
-#              cACertificate ) MAY crossCertificatePair )
-
-#objectclass ( 2.5.6.17 NAME 'groupOfUniqueNames'
-#      DESC 'RFC2256: a group of unique names (DN and Unique Identifier)'
-#      SUP top STRUCTURAL
-#      MUST ( uniqueMember $ cn )
-#      MAY ( businessCategory $ seeAlso $ owner $ ou $ o $ description ) )
-
-#objectclass ( 2.5.6.18 NAME 'userSecurityInformation'
-#      DESC 'RFC2256: a user security information'
-#      SUP top AUXILIARY
-#      MAY ( supportedAlgorithms ) )
-
-#objectclass ( 2.5.6.16.2 NAME 'certificationAuthority-V2'
-#      SUP certificationAuthority
-#      AUXILIARY MAY ( deltaRevocationList ) )
-
-#objectclass ( 2.5.6.19 NAME 'cRLDistributionPoint'
-#      SUP top STRUCTURAL
-#      MUST ( cn )
-#      MAY ( certificateRevocationList $ authorityRevocationList $
-#              deltaRevocationList ) )
-
-#objectclass ( 2.5.6.20 NAME 'dmd'
-#      SUP top STRUCTURAL
-#      MUST ( dmdName )
-#      MAY ( userPassword $ searchGuide $ seeAlso $ businessCategory $
-#              x121Address $ registeredAddress $ destinationIndicator $
-#              preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $
-#              telephoneNumber $ internationaliSDNNumber $ facsimileTelephoneNumber $
-#              street $ postOfficeBox $ postalCode $ postalAddress $
-#              physicalDeliveryOfficeName $ st $ l $ description ) )
-
-#objectclass ( 2.5.6.21 NAME 'pkiUser'
-#      DESC 'RFC2587: a PKI user'
-#      SUP top AUXILIARY
-#      MAY userCertificate )
-
-#objectclass ( 2.5.6.22 NAME 'pkiCA'
-#      DESC 'RFC2587: PKI certificate authority'
-#      SUP top AUXILIARY
-#      MAY ( authorityRevocationList $ certificateRevocationList $
-#              cACertificate $ crossCertificatePair ) )
-
-#objectclass ( 2.5.6.23 NAME 'deltaCRL'
-#      DESC 'RFC2587: PKI user'
-#      SUP top AUXILIARY
-#      MAY deltaRevocationList )
-
-#objectclass ( 1.3.6.1.4.1.250.3.15 NAME 'labeledURIObject'
-#      DESC 'RFC2079: object that contains the URI attribute type'
-#      MAY ( labeledURI )
-#      SUP top AUXILIARY )
-
-objectclass ( 0.9.2342.19200300.100.4.19 NAME 'simpleSecurityObject'
-       DESC 'RFC1274: simple security object'
-       SUP top AUXILIARY
-       MUST userPassword )
-
-objectclass ( 1.3.6.1.4.1.1466.344 NAME 'dcObject'
-       DESC 'RFC2247: domain component object'
-       SUP top AUXILIARY MUST dc )
-
-objectclass ( 1.3.6.1.1.3.1 NAME 'uidObject'
-       DESC 'RFC2377: uid object'
-       SUP top AUXILIARY MUST uid )
-
-#objectclass ( 0.9.2342.19200300.100.4.4
-#      NAME ( 'pilotPerson' 'newPilotPerson' )
-#      SUP person STRUCTURAL
-#      MAY ( userid $ textEncodedORAddress $ rfc822Mailbox $
-#              favouriteDrink $ roomNumber $ userClass $
-#              homeTelephoneNumber $ homePostalAddress $ secretary $
-#              personalTitle $ preferredDeliveryMethod $ businessCategory $
-#              janetMailbox $ otherMailbox $ mobileTelephoneNumber $
-#              pagerTelephoneNumber $ organizationalStatus $
-#              mailPreferenceOption $ personalSignature )
-#      )
-
-#objectclass ( 0.9.2342.19200300.100.4.5 NAME 'account'
-#      SUP top STRUCTURAL
-#      MUST userid
-#      MAY ( description $ seeAlso $ localityName $
-#              organizationName $ organizationalUnitName $ host )
-#      )
-
-#objectclass ( 0.9.2342.19200300.100.4.6 NAME 'document'
-#      SUP top STRUCTURAL
-#      MUST documentIdentifier
-#      MAY ( commonName $ description $ seeAlso $ localityName $
-#              organizationName $ organizationalUnitName $
-#              documentTitle $ documentVersion $ documentAuthor $
-#              documentLocation $ documentPublisher )
-#      )
-
-objectclass ( 0.9.2342.19200300.100.4.7 NAME 'room'
-       SUP top STRUCTURAL
-       MUST commonName
-       MAY ( roomNumber $ description $ seeAlso $ telephoneNumber )
-       )
-
-#objectclass ( 0.9.2342.19200300.100.4.9 NAME 'documentSeries'
-#      SUP top STRUCTURAL
-#      MUST commonName
-#      MAY ( description $ seeAlso $ telephonenumber $
-#              localityName $ organizationName $ organizationalUnitName )
-#      )
-
-objectclass ( 0.9.2342.19200300.100.4.13 NAME 'domain'
-       SUP top STRUCTURAL
-       MUST domainComponent
-       MAY ( associatedName $ organizationName $ description $
-               businessCategory $ seeAlso $ searchGuide $ userPassword $
-               localityName $ stateOrProvinceName $ streetAddress $
-               physicalDeliveryOfficeName $ postalAddress $ postalCode $
-               postOfficeBox $ streetAddress $
-               facsimileTelephoneNumber $ internationalISDNNumber $
-               telephoneNumber $ teletexTerminalIdentifier $ telexNumber $
-               preferredDeliveryMethod $ destinationIndicator $
-               registeredAddress $ x121Address )
-       )
-
-#objectclass ( 0.9.2342.19200300.100.4.14 NAME 'RFC822localPart'
-#      SUP domain STRUCTURAL
-#      MAY ( commonName $ surname $ description $ seeAlso $ telephoneNumber $
-#              physicalDeliveryOfficeName $ postalAddress $ postalCode $
-#              postOfficeBox $ streetAddress $
-#              facsimileTelephoneNumber $ internationalISDNNumber $
-#              telephoneNumber $ teletexTerminalIdentifier $
-#              telexNumber $ preferredDeliveryMethod $ destinationIndicator $
-#              registeredAddress $ x121Address )
-#      )
-
-#objectclass ( 0.9.2342.19200300.100.4.15 NAME 'dNSDomain'
-#      SUP 'domain' STRUCTURAL
-#      MAY ( ARecord $ MDRecord $ MXRecord $ NSRecord $
-#              SOARecord $ CNAMERecord )
-#      )
-
-#objectclass ( 0.9.2342.19200300.100.4.17 NAME 'domainRelatedObject'
-#      DESC 'RFC1274: an object related to an domain'
-#      SUP top AUXILIARY
-#      MUST associatedDomain )
-
-#objectclass ( 0.9.2342.19200300.100.4.18 NAME 'friendlyCountry'
-#      SUP country STRUCTURAL
-#      MUST friendlyCountryName )
-
-#objectclass ( 0.9.2342.19200300.100.4.20 NAME 'pilotOrganization'
-#      SUP ( organization $ organizationalUnit ) STRUCTURAL
-#      MAY buildingName )
-
-#objectclass ( 0.9.2342.19200300.100.4.21 NAME 'pilotDSA'
-#      SUP dsa STRUCTURAL
-#      MAY dSAQuality )
-
-#objectclass ( 0.9.2342.19200300.100.4.22 NAME 'qualityLabelledData'
-#      SUP top AUXILIARY
-#      MUST dsaQuality
-#      MAY ( subtreeMinimumQuality $ subtreeMaximumQuality )
-#      )
-
-objectclass    ( 2.16.840.1.113730.3.2.2
-    NAME 'inetOrgPerson'
-       DESC 'RFC2798: Internet Organizational Person'
-    SUP organizationalPerson
-    STRUCTURAL
-       MAY (
-               audio $ businessCategory $ carLicense $ departmentNumber $
-               displayName $ employeeNumber $ employeeType $ givenName $
-               homePhone $ homePostalAddress $ initials $ jpegPhoto $
-               labeledURI $ mail $ manager $ mobile $ o $ pager $
-               photo $ roomNumber $ secretary $ uid $ userCertificate $
-               x500uniqueIdentifier $ preferredLanguage $
-               userSMIMECertificate $ userPKCS12 $ deleteflag $ alias )
-       )
index 210728d3c01442cfc05a24ffc33d2495e0beb109..f2c4b5d1f6117607a603011c52deac573b061462 100644 (file)
@@ -2545,29 +2545,38 @@ It is difficult to find a commonly accepted LDAP scheme. It seems, most
 real life LDAP installations go for the domain oriented apporach
 and lay out the structure after an existing domain/subdomain structure.
 <p> The most widely accepted and standardized object for storing
-personal data
-clearly is "inetOrgPerson".&nbsp; Citadel therefore attempts to follow
-this type of schema.<br>
-</p>
+personal data clearly is "inetOrgPerson". Citadel therefore extends this
+standard schema with an object class called "citadelInetOrgPerson".</p>
 <p>If you are using OpenLDAP as your directory server, you should
-choose options similar to the following:<br>
-</p>
-<pre>database        ldbm<br>schemacheck     off<br>allow           bind_v2<br>suffix          "dc=servername,dc=domain,dc=org"<br>rootdn          "cn=manager,dc=servername,dc=domain,dc=org"<br>rootpw          secret<br></pre>
+choose options similar to the following:</p>
+<pre>
+include         /etc/openldap/schema/core.schema
+include         /etc/openldap/schema/cosine.schema
+include         /etc/openldap/schema/inetorgperson.schema
+include         /etc/openldap/schema/rfc2739.schema
+include         /etc/openldap/schema/citadel.schema
+...
+
+database        bdb
+suffix          "dc=example,dc=com"
+rootdn          "cn=manager,dc=example,dc=com"
+rootpw          secret
+directory       /var/openldap-data
+
+</pre>
+
+<p>Notes on this configuration:
 <ul>
   <li>Obviously, you can make your suffix and rootdn whatever you wish,
 but in most cases you'd simply follow a DC path that looks similar to
 your DNS domain.</li>
-  <li>If you don't want LDBM, feel free to choose any backend available
-on your system.</li>
-  <li><span style="font-family: monospace;">bind_v2</span> is <span
- style="font-style: italic;">required</span> because Citadel will make
-v2 protocol connections.</li>
-  <li><span style="font-family: monospace;">schemacheck off</span> is <span
- style="font-style: italic;">recommended</span> because Citadel uses
-fields that do not necessarily exist in your system's default
-schema.&nbsp; If you don't like that idea, your other option is to
-reference the included <span style="font-family: monospace;">citadel-openldap.schema</span>
-in your configuration.</li>
+  <li>In earlier versions of OpenLDAP, you could use the
+option <span style="font-family: monospace;">schemacheck off</span> to
+make life easier by relaxing the strict schema checking.  This option
+has been removed from OpenLDAP, so now you <strong>must</strong> install
+the supplied schema extensions.  <tt>rfc2739.schema</tt> and
+<tt>citadel.schema</tt> are included with the Citadel distribution.</li>
   <li>Your <span style="font-family: monospace;">rootdn</span> and <span
  style="font-family: monospace;">rootpw</span> can be whatever you
 want.&nbsp; Usually the rootdn is <span style="font-family: monospace;">cn=manager,</span>
diff --git a/citadel/openldap/citadel.schema b/citadel/openldap/citadel.schema
new file mode 100644 (file)
index 0000000..007fe45
--- /dev/null
@@ -0,0 +1,50 @@
+# $Id: citadel.schema,v 1.16 2005/12/27 13:04:53 martin Exp $
+
+# (c) 2003, 2004 Tassilo Erlewein <tassilo.erlewein@erfrakon.de>
+# (c) 2003-2005  Martin Konold <martin.konold@erfrakon.de>
+# (c) 2003 Achim Frank <achim.frank@erfrakon.de>
+# (c) 2006 Art Cancro <ajc@uncensored.citadel.org>
+
+# This file is distributed under the terms of the GNU General Public License v2.
+
+# This schema highly depends on the core.schema, cosine.schema and the inetorgperson.schema
+# as provided by 3rd parties like OpenLDAP.
+#
+# slapd.conf then looks like
+#  include /etc/openldap/schema/core.schema
+#  include /etc/openldap/schema/cosine.schema
+#  include /etc/openldap/schema/inetorgperson.schema
+#  include /etc/openldap/schema/rfc2739.schema
+#  include /etc/openldap/schema/citadel.schema
+
+
+######################
+# citadel attributes #
+######################
+
+# alias used to provide alternative rfc822 email addresses for citadel users
+attributetype ( 1.3.6.1.4.1.19414.2.1.3
+  NAME 'alias'
+  DESC 'RFC1274: RFC822 Mailbox'
+  EQUALITY caseIgnoreIA5Match
+  SUBSTR caseIgnoreIA5SubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
+
+##########################
+# citadel object classes #
+##########################
+
+# citadel account
+# we use a STRUCTURAL in order to ease integration
+# with existing inetOrgPerson objects
+
+objectclass ( 1.3.6.1.4.1.19414.3.2.2
+  NAME 'citadelInetOrgPerson'
+  DESC 'Citadel Internet Organizational Person'
+  SUP inetOrgPerson
+  STRUCTURAL
+  MAY ( c $
+      alias $
+      calFBURL )
+      )
+  )
diff --git a/citadel/openldap/rfc2739.schema b/citadel/openldap/rfc2739.schema
new file mode 100644 (file)
index 0000000..f0d1fca
--- /dev/null
@@ -0,0 +1,135 @@
+# (c) 2004 Martin Konold <martin.konold@erfrakon.de>
+# (c) 2006 Art Cancro <ajc@uncensored.citadel.org>
+
+# This schema is derived from RFC 2739 and may act as a substitute
+# when used with OpenLDAP as the original schema from RFC 2739 
+# is syntactically not accepted by OpenLDAP 2.2.14
+#
+# Copyright (C) The Internet Society (2000).  All Rights Reserved.
+#
+#  This document and translations of it may be copied and furnished to
+#  others, and derivative works that comment on or otherwise explain it
+#  or assist in its implementation may be prepared, copied, published
+#  and distributed, in whole or in part, without restriction of any
+#  kind, provided that the above copyright notice and this paragraph are
+#  included on all such copies and derivative works.  However, this
+#  document itself may not be modified in any way, such as by removing
+#  the copyright notice or references to the Internet Society or other
+#  Internet organizations, except as needed for the purpose of
+#  developing Internet standards in which case the procedures for
+#  copyrights defined in the Internet Standards process must be
+#  followed, or as required to translate it into languages other than
+#  English.
+#
+#  The limited permissions granted above are perpetual and will not be
+#  revoked by the Internet Society or its successors or assigns.
+#
+#  This document and the information contained herein is provided on an
+#  "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+#  TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+#  BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+#  HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+#  MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+# slapd.conf then looks like
+#  include /etc/openldap/schema/core.schema
+#  include /etc/openldap/schema/cosine.schema
+#  include /etc/openldap/schema/inetorgperson.schema
+#  include /etc/openldap/schema/rfc2739.schema
+#  include /etc/openldap/schema/citadel.schema
+
+#
+################################
+# rfc 2739 calendar attributes #
+################################
+
+# contains the URI to a snapshot of the user's entire
+# default calendar
+attributetype ( 1.2.840.113556.1.4.478
+  NAME 'calCalURI'
+  DESC 'RFC2739: URI of entire default calendar'
+  EQUALITY caseIgnoreIA5Match
+  SUBSTR caseIgnoreIA5SubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+  USAGE userApplications )
+
+# contains the URI to the user's default
+# busy time data
+attributetype (1.2.840.113556.1.4.479
+  NAME 'calFBURL'
+  DESC 'RFC2739: URI to the users default freebusy data'
+  EQUALITY caseIgnoreIA5Match
+  SUBSTR caseIgnoreIA5SubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+  USAGE userApplications )
+
+# contains a URI that can be used to communicate with 
+# the user's calendar
+attributetype (1.2.840.113556.1.4.480
+  NAME 'calCAPURI'
+  DESC 'RFC2739: URI used to communicate with the users calendar'
+  EQUALITY caseIgnoreIA5Match
+  SUBSTR caseIgnoreIA5SubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+  USAGE userApplications )
+
+# contains a URI that points to the location to which event
+# requests should be sent for that user
+attributetype (1.2.840.113556.1.4.481
+  NAME 'calCalAdrURI'
+  DESC 'RFC2739: URI for event equests destination'
+  EQUALITY caseIgnoreIA5Match
+  SUBSTR caseIgnoreIA5SubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+  USAGE userApplications )
+
+# multi-valued property containing URIs to snapshots of 
+# other calendars that the user may have
+attributetype (1.2.840.113556.1.4.482
+  NAME 'calOtherCalURIs'
+  DESC 'RFC2739: multi-value URI for snapshots of other calendars'
+  EQUALITY caseIgnoreIA5Match
+  SUBSTR caseIgnoreIA5SubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+  USAGE userApplications )
+
+# multi-valued property containing URIs to snapshots of other 
+# free/busy data that the user may have
+attributetype (1.2.840.113556.1.4.483
+  NAME 'calOtherFBURLs'
+  DESC 'RFC2739: multi-value URI for other free/busy data'
+  EQUALITY caseIgnoreIA5Match
+  SUBSTR caseIgnoreIA5SubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+  USAGE userApplications )
+
+# multi-valued property containing URI to other calendars that
+# the user may have
+attributetype (1.2.840.113556.1.4.484
+  NAME 'calOtherCAPURIs'
+  DESC 'RFC2739: multi-value URI to other calendars'
+  EQUALITY caseIgnoreIA5Match
+  SUBSTR caseIgnoreIA5SubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+  USAGE userApplications )
+
+#  URIs to other locations that a user may want
+#   event requests sent to
+attributetype (1.2.840.113556.1.4.485
+  NAME 'calOtherCalAdrURIs'
+  DESC 'RFC2739: multi-value URI to other request destinations'
+  EQUALITY caseIgnoreIA5Match
+  SUBSTR caseIgnoreIA5SubstringsMatch
+  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
+  USAGE userApplications )
+
+objectclass (1.2.840.113556.1.5.87
+  NAME 'calEntry'
+  DESC 'RFC2739: Calendar Entry'
+  SUP top AUXILIARY
+  MAY ( calCalURI $ 
+        calFBURL $
+        calOtherCalURIs $
+        calOtherFBURLs $
+        calCAPURI $
+        calOtherCAPURIs ) )
index 1dff8761ff94da6b8eb420c8074f69bf0fe2eac7..fc184155e92cb2574d587381c1a3f1341f4da027 100644 (file)
@@ -282,7 +282,7 @@ void ctdl_vcard_to_ldap(struct CtdlMessage *msg, int op) {
        attrs[0]->mod_op        = LDAP_MOD_ADD;
        attrs[0]->mod_type      = "objectclass";
        attrs[0]->mod_values    = malloc(3 * sizeof(char *));
-       attrs[0]->mod_values[0] = strdup("inetOrgPerson");
+       attrs[0]->mod_values[0] = strdup("citadelInetOrgPerson");
        attrs[0]->mod_values[1] = NULL;
 
        /* Convert the vCard fields to LDAP properties */