[turba] Automatic Add of Recipient To Address Book Fails With ObjectClass violation or "Schema not initialized"

Andy Dorman AndyDorman at comehome.net
Wed Sep 2 01:22:41 UTC 2015


Quoting Jan Schneider <jan at horde.org>:

> Zitat von Andy Dorman <AndyDorman at comehome.net>:
>
>> 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'
>> );
>
> What happens if you add a contact from an open message?
>
> -- 
> Jan Schneider
> The Horde Project
> http://www.horde.org/
>

I just tried to add your address by clicking on the From address in  
this email and selecting "Add to Address Book" and I got the same  
Object Class violation error.

I am going to feel very stupid when I find out what I have done wrong.

Andy Dormn

-- 
Andy--------------------------------
This message was sent using FanMailPlus Webmail based on Horde Groupware.



More information about the turba mailing list