[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