Discussion:
[turba] Automatic Add of Recipient To Address Book Fails With ObjectClass violation or "Schema not initialized"
(too old to reply)
Jan Schneider
2015-08-31 21:23:42 UTC
Permalink
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
Entry
'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/
--
turba mailing list
Frequently Asked Questions: http://wiki.horde.org/FAQ
To unsubscribe, mail: turba-***@lists.horde.org
Andy Dorman
2015-09-02 01:22:41 UTC
Permalink
Post by Jan Schneider
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
Entry
'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.
--
turba mailing list
Frequently Asked Questions: http://wiki.horde.org/FAQ
To unsubscribe, mail: turba-***@lists.horde.org
Loading...