[turba] Automatic Add of Recipient To Address Book Fails With ObjectClass violation or "Schema not initialized"
Andy Dorman
AndyDorman at comehome.net
Wed Aug 19 19:31:48 UTC 2015
We have been happily using LDAP for our address books for many
years...at some point in the last year or two we lost the ability to
automatically add new recipient addresses to our personal_ldap address
book when sending an email.
Our installation is the latest Debian package of Horde Groupware
Webmail Edition 5.2.7 with Turba 4.2.7 and OpenLDAP 2.4.41.
I am certain I have something misconfigured because I have not seen
anything about this in the wiki or mailing lists, but I can not figure
out what I have missed.
The problem is the 'inetOrgPerson' object class requires the 'sn'
(lastname) attribute, so with checkrequired = false, when Turba tries
to automatically add a recipient address, it does not supply 'sn' and
openLDAP throws an ObjectClass violation like this:
Entry
(uid=20150819142842.-fDOkvc4NwFWmfMpjyODUEw at mail.bulldogs.com,uid=andydorman at comehome.net,ou=addresses,o=antespam.com): object class 'inetOrgPerson' requires attribute
'sn'
I tried setting checkrequired = true and checkrequired_string to some
string (I have tried both ' ' and '-'), but when I do this I get a
Horde LDAP error, "Schema not initialized", when adding a new address
book entry BOTH manually or automatically.
$cfgSources['personal_ldap']['params']['checkrequired'] = true;
$cfgSources['personal_ldap']['params']['checkrequired_string'] = ' ';
If we set 'checkrequired' = false, we can manually add an entry to an
address book (because we have a value for 'sn'), but we are then back
to the ObjectClass violation when Turba tries to automatically add a
recipient without an 'sn'.
I have looked at the git code and found where the "Schema not
initialized" error is set on line 1329 of
https://github.com/horde/horde/blob/master/framework/Ldap/lib/Horde/Ldap.php,
but so far I have not been able to understand why new
Horde_Ldap_Schema fails on the next line when checkrequired = true;
So any idea about what I might be doing wrong? Turba works great
except for not being able to automatically add a recipient when
sending email (with checkrequired = false).
Our complete turba/config/backends.local.php is below if that helps.
================
$cfgSources['localsql']['disabled'] = true;
/* First get the uid and set the base DN. */
$_ldap_uid = strtolower($GLOBALS['registry']->getAuth());
$_ldap_basedn = ',ou=addresses,o=antespam.com';
// enable the personal_ldap address book
$cfgSources['personal_ldap']['disabled'] = false;
// talk to localhost and let the slapd updateref refer writes to the master...
$cfgSources['personal_ldap']['params']['server'] = 'localhost';
$cfgSources['personal_ldap']['params']['bind_dn'] = 'uid=' .
$_ldap_uid . $_ldap_basedn;
$cfgSources['personal_ldap']['params']['bind_password'] =
$GLOBALS['registry']->getAuthCredential('password');
// according to my research, these are the objectclasses needed to
provide the fields below
$cfgSources['personal_ldap']['params']['objectclass'] = array('top',
'person', 'inetOrgPerson', 'organizationalPerson');
$cfgSources['personal_ldap']['params']['referrals'] = 1;
$cfgSources['personal_ldap']['params']['tls'] = false;
$cfgSources['personal_ldap']['params']['root'] = 'uid=' . $_ldap_uid .
$_ldap_basedn;
$cfgSources['personal_ldap']['params']['scope'] = 'sub';
// check the object classes to make sure we have the required fields
to add a contact
$cfgSources['personal_ldap']['params']['checkrequired'] = false;
$cfgSources['personal_ldap']['params']['checkrequired_string'] = ' ';
$cfgSources['personal_ldap']['params']['checksyntax'] = false;
// set up our own mapping cause the object_pgppublickey field caused
LDAP to complain about "bad filter"
$cfgSources['personal_ldap']['map'] = array(
'__key' => 'dn',
'__uid' => 'uid',
'name' => 'cn',
'email' => 'mail',
'firstname' => 'givenName',
'lastname' => 'sn',
'title' => 'title',
'company' => 'organizationName',
'businessCategory' => 'businessCategory',
'workAddress' => 'postalAddress',
'workPostalCode' => 'postalCode',
'workPhone' => 'telephoneNumber',
'fax' => 'facsimileTelephoneNumber',
'homeAddress' => 'homePostalAddress',
'homePhone' => 'homePhone',
'cellPhone' => 'mobile',
'notes' => 'description',
'office' => 'roomNumber',
'department' => 'ou',
'nickname' => 'displayName',
'website' => 'labeledURI'
);
--
Andy--------------------------------
This message was sent using FanMailPlus Webmail based on Horde Groupware.
More information about the turba
mailing list