Hi Gang,
I posted this to this qmail-ldap wiki, but here is is for you folks as well. This is how I got Fedora-DS to work with the qmail-ldap schema:

Note that server should be replaced by the name of your slapd server

1. Remove /opt/fedora-ds/slapd-server/config/schema/tmp/50ns-mail.ldif.
(This file had some of the same attributes as the qmail schema, but not all fo them)

2. Convert the qmail.schema file to a fedora-ds style schema by running:
$ ./ol-schema-migrate.pl /tmp/qmail.schema > /opt/fedora-ds/slapd-server/config/schema/55ns-qmail.ldif

The ol-schema-migrate.pl script (http://www.directory.fedora.redhat.com/download/ol-schema-migrate.pl) was downloaded from http://directory.fedora.redhat.com/. The OpenLDAP->FDS Migration Howto (http://directory.fedora.redhat.com/wiki/Howto:OpenLDAPMigration) located at the same site may also be useful for troubleshooting problems.

3. The LDIF had to be changed a bit so that the qmailAccountPurge would work. Apparently fedora-ds does not have the OID for numericStringMatch. I changed that to integerMatch instead. I hope that doesn't break anything.

Feel free to expand on this, or let me know if I have missed anything! Attached is the 55ns-qmail.ldif I generated.
#
#********************************************************************
#
dn: cn=schema
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.1
  NAME 'qmailUID'
  DESC 'UID of the user on the mailsystem'
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.2
  NAME 'qmailGID'
  DESC 'GID of the user on the mailsystem'
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.3
  NAME 'mailMessageStore'
  DESC 'Path to the maildir/mbox on the mail system'
  EQUALITY caseExactIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.4
  NAME 'mailAlternateAddress'
  DESC 'Secondary (alias) mailaddresses for the same user'
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.6
  NAME 'mailHost'
  DESC 'On which qmail server the messagestore of this user is located.'
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.7
  NAME 'mailForwardingAddress'
  DESC 'Address(es) to forward all incoming messages to.'
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.8
  NAME 'deliveryProgramPath'
  DESC 'Program to execute for all incoming mails.'
  EQUALITY caseExactIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.9
  NAME 'qmailDotMode'
  DESC 'Interpretation of .qmail files: both, dotonly, ldaponly, ldapwithprog'
  EQUALITY caseIgnoreIA5Match
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32}
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.10
  NAME 'deliveryMode'
  DESC 'multi field entries of: nolocal, noforward, noprogram, reply'
  EQUALITY caseIgnoreIA5Match
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32}
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.11
  NAME 'mailReplyText'
  DESC 'A reply text for every incoming message'
  EQUALITY caseIgnoreMatch
  SUBSTR caseIgnoreSubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{4096}
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.12
  NAME 'accountStatus'
  DESC 'The status of a user account: active, noaccess, disabled, deleted'
  EQUALITY caseIgnoreIA5Match
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.13
  NAME 'qmailAccountPurge'
  DESC 'The earliest date when a mailMessageStore will be purged'
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.15
  NAME 'mailQuotaSize'
  DESC 'The size of space the user can have until further messages get bounced.'
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.16
  NAME 'mailQuotaCount'
  DESC 'The number of messages the user can have until further messages get 
bounced.'
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.2.1.17
  NAME 'mailSizeMax'
  DESC 'The maximum size of a single messages the user accepts.'
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.1
  NAME 'dnmember'
  DESC 'Group member specified as distinguished name.'
  EQUALITY distinguishedNameMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.2
  NAME 'rfc822member'
  DESC 'Group member specified as normal rf822 email address.'
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.3
  NAME 'filtermember'
  DESC 'Group member specified as ldap search filter.'
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{512}
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.4
  NAME 'senderconfirm'
  DESC 'Sender to Group has to answer confirmation email.'
  EQUALITY booleanMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.5
  NAME 'membersonly'
  DESC 'Sender to Group must be group member itself.'
  EQUALITY booleanMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.6
  NAME 'confirmtext'
  DESC 'Text that will be sent with sender confirmation email.'
  EQUALITY caseIgnoreMatch
  SUBSTR caseIgnoreSubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{4096}
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.7
  NAME 'dnmoderator'
  DESC 'Group moderator specified as Distinguished name.'
  EQUALITY distinguishedNameMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.8
  NAME 'rfc822moderator'
  DESC 'Group moderator specified as normal rfc822 email address.'
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.9
  NAME 'moderatortext'
  DESC 'Text that will be sent with request for moderation email.'
  EQUALITY caseIgnoreMatch
  SUBSTR caseIgnoreSubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{4096}
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.10
  NAME 'dnsender'
  DESC 'Allowed sender specified as distinguished name.'
  EQUALITY distinguishedNameMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.11
  NAME 'rfc822sender'
  DESC 'Allowed sender specified as normal rf822 email address.'
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.3.1.12
  NAME 'filtersender'
  DESC 'Allowed sender specified as ldap search filter.'
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{512}
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.4.1.1
  NAME 'qladnmanager'
  DESC ''
  EQUALITY distinguishedNameMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.4.1.2
  NAME 'qlaDomainList'
  DESC ''
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.4.1.3
  NAME 'qlaUidPrefix'
  DESC ''
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.4.1.4
  NAME 'qlaQmailUid'
  DESC ''
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.4.1.5
  NAME 'qlaQmailGid'
  DESC ''
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.4.1.6
  NAME 'qlaMailMStorePrefix'
  DESC ''
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.4.1.7
  NAME 'qlaMailQuotaSize'
  DESC ''
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.4.1.8
  NAME 'qlaMailQuotaCount'
  DESC ''
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.4.1.9
  NAME 'qlaMailSizeMax'
  DESC ''
  EQUALITY integerMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
  SINGLE-VALUE
  )
#
#********************************************************************
#
 attributeTypes: (
  1.3.6.1.4.1.7914.1.4.1.10
  NAME 'qlaMailHostList'
  DESC ''
  EQUALITY caseIgnoreIA5Match
  SUBSTR caseIgnoreIA5SubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256}
  )
#
#********************************************************************
#
 objectClasses: (
  1.3.6.1.4.1.7914.1.2.2.1
  NAME 'qmailUser'
  DESC 'QMail-LDAP User'
  SUP top
  AUXILIARY
  MUST ( mail )
  MAY ( uid $ mailMessageStore $ homeDirectory $ userPassword $ 
mailAlternateAddress $ qmailUID $ qmailGID $ mailHost $ mailForwardingAddress $ 
deliveryProgramPath $ qmailDotMode $ deliveryMode $ mailReplyText $ 
accountStatus $ qmailAccountPurge $ mailQuotaSize $ mailQuotaCount $ 
mailSizeMax )
  )
#
#********************************************************************
#
 objectClasses: (
  1.3.6.1.4.1.7914.1.3.2.1
  NAME 'qmailGroup'
  DESC 'QMail-LDAP Group'
  SUP top
  AUXILIARY
  MUST ( mail $ mailAlternateAddress $ mailMessageStore )
  MAY ( dnmember $ rfc822member $ filtermember $ senderconfirm $ membersonly $ 
confirmtext $ dnmoderator $ rfc822moderator $ moderatortext $ dnsender $ 
rfc822sender $ filtersender)
  )
#
#********************************************************************
#

Reply via email to