Re: ActiveSync -> LDAP - addressbook cannot be created because CN is missing
Michael J Rubinsky <[email protected]> Sun, 22 Oct 2017 04:26:56 +0000
| Newsgroups | gmane.comp.horde.turba |
|---|---|
| Message-ID | <20171022042656.Horde.d--Rbx2nprL4lAJuEToiTqr@h4.theupstairsroom.com> |
This message is in MIME format and has been PGP signed. --===============1042423625926780290== Content-Type: multipart/signed; boundary="=_ZelRNFf-i89IOdXOJU08LuP"; protocol="application/pgp-signature"; micalg=pgp-sha1 This message is in MIME format and has been PGP signed. --=_ZelRNFf-i89IOdXOJU08LuP Content-Type: multipart/mixed; boundary="=_TDpW11CcpT060zvLDO2i9zO" MIME-Version: 1.0 This message is in MIME format. --=_TDpW11CcpT060zvLDO2i9zO Content-Type: text/plain; charset=utf-8; format=flowed; DelSp=Yes Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Quoting Jan Schneider <[email protected]>: > Zitat von Michael J Rubinsky <[email protected]>: > >> Quoting Jan Schneider <[email protected]>: >> >>> Zitat von Oliver <[email protected]>: >>> >>>> Hello, >>>> >>>> I am using a few LDAP addressbooks, a few global read only books and >>>> one personal addressbook. =C2=A0 >>>> >>>> The synchronisation from LDAP to ActiveSync devices works fine. >>>> A new entry from the webfrontend to LDAP and the clients works fine. >>>> >>>> If I try to add a new entry on my cell phone, it isn't created in the >>>> LDAP backend, because of a missing cn field.=C2=A0 >>>> >>>> I use the evolution schema=C2=A0 >>>> >>>> My relevant part of backends.local.php:=C2=A0 >>>> >>>> $_ldap_uid =3D $GLOBALS['registry']->getAuth('bare'); >>>> $_ldap_basedn =3D 'dc=3Dkobosix,dc=3Dlan'; >>>> $cfgSources['personal_ldap'] =3D array( >>>> =C2=A0 'disabled' =3D> false, >>>> =C2=A0 'title' =3D> _($_ldap_uid . " addressbook rw"), >>>> =C2=A0 'type' =3D> 'ldap', >>>> =C2=A0 'params' =3D> array( >>>> =C2=A0 'server' =3D> 'MYLDAPSERVER', >>>> =C2=A0 'tls' =3D> false, >>>> =C2=A0 'root' =3D> 'ou=3D' . $_ldap_uid . ',ou=3DPersonal,ou=3Daddress= book,' . >>>> $_ldap_basedn, >>>> =C2=A0 'bind_dn' =3D> 'uid=3D' . $_ldap_uid . ',ou=3DUser,ou=3DPeople,= ' . $_ >>>> ldap_basedn, >>>> =C2=A0 'bind_password' =3D> $GLOBALS['registry']-> getAuthCredent= ial(' >>>> password'), >>>> =C2=A0 'dn' =3D> array('uid'), >>>> =C2=A0 'objectclass' =3D> array('top', >>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0'person', >>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0// 'turbaContact', >>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0'inetOrgPerson', >>>> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0// 'calEntry', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'organizationalPerso= n', >>>> =C2=A0 'evolutionPerson'), >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'scope' =3D> 'one', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'charset' =3D> 'utf-8'= , >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'version' =3D> 3 >>>> =C2=A0=C2=A0=C2=A0=C2=A0), >>>> =C2=A0=C2=A0=C2=A0=C2=A0'map' =3D> array( >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'__key' =3D> 'dn', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'__uid' =3D> 'uid', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0// From horde.schema: >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0// '__type' =3D> 'turb= aType', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0// '__members' =3D> 't= urbaMembers', >>>> 'name' =3D> 'cn',https://bugs.horde.org/ticket/14678 >>>> 'lastname' =3D> 'sn', >>>> 'firstname' =3D> 'givenname', >>>> 'namePrefix' =3D> 'title', >>>> 'title' =3D> 'businessRole', >>>> >>>> 'photo' =3D> 'jpegphoto', >>>> 'birthday' =3D> 'birthdate', >>>> 'anniversary' =3D> 'anniversary', >>>> 'spouse' =3D> 'spouseName', >>>> // 'children' =3D> 'children', // still missing >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'company' =3D> 'o', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'department' =3D> 'ou'= , >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'businessCategory' =3D= > 'businesscategory', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'emails' =3D> 'mail', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'workPhone' =3D> 'tele= phonenumber', >>>> 'fax' =3D> 'facsimiletelephonenumber', >>>> 'companyPhone' =3D> 'companyPhone', >>>> 'homePhone' =3D> 'homephone', >>>> 'cellPhone' =3D> 'mobile', >>>> 'carPhone' =3D> 'carphone', >>>> 'pager' =3D> 'pager', >>>> 'radioPhone' =3D> 'radio', >>>> 'assistant' =3D> 'assistantName', >>>> 'assistPhone' =3D> 'assistantPhone', >>>> 'manager' =3D> 'managerName', >>>> '__tags' =3D> 'categories', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'workAddress' =3D> 'po= staladdress', >>>> 'workStreet' =3D> 'street', >>>> 'workPostalCode' =3D> 'postalcode', >>>> 'workCity' =3D> 'l', >>>> 'workProvince' =3D> 'st', >>>> // 'workCountryFree' =3D> 'c', // no LDAP backend yet >>>> 'homeAddress' =3D> 'homepostaladdress', >>>> 'otherAddress' =3D> 'otherPostalAddress', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'notes' =3D> 'note', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'office' =3D> 'roomNum= ber', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'nickname' =3D> 'displ= ayName', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'website' =3D> 'labele= dURI', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'pgpPublicKey' =3D> 'u= serCertificate', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'smimePublicKey' =3D> = 'userSMIMECertificate', >>>> 'freebusyUrl' =3D> 'freebusyuri', >>>> // no LDAP backend field yet >>>> // 'imaddress1' =3D> 'imAddress', //no LDAP backend yet >>>> // 'yomifirstname' =3D> 'yomiFirstname' // no LDAP backend yet >>>> // 'yomilastname' =3D> 'yomiLastname' // no LDAP backend yet >>>> // NO LDAP and horde backend yet but ActiveSync field >>>> // 'yomicompanyname' =3D> 'yomiCompanyName'=C2=A0 >>>> =C2=A0=C2=A0=C2=A0=C2=A0), >>>> =C2=A0=C2=A0=C2=A0=C2=A0'search' =3D> array( >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'name', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'emails', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'businessCategory', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'title', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'homePhone', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'workPhone', >>>> 'cellPhone', >>>> 'carPhone', >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'homeAddress' >>>> =C2=A0=C2=A0=C2=A0=C2=A0), >>>> =C2=A0=C2=A0=C2=A0=C2=A0'strict' =3D> array( >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'dn', 'uid' >>>> =C2=A0=C2=A0=C2=A0=C2=A0), >>>> =C2=A0=C2=A0=C2=A0=C2=A0'approximate' =3D> array( >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0'cn',=C2=A0 >>>> =C2=A0=C2=A0=C2=A0=C2=A0), >>>> =C2=A0=C2=A0=C2=A0=C2=A0'export' =3D> true, >>>> =C2=A0=C2=A0=C2=A0=C2=A0'browse' =3D> true, >>>> ); >>>> >>>> >>>> In my Driver.php "name" maps to "fileas"=C2=A0 >>>> >>>> The error in the activesync log is the following: >>>> >>>> [55906][2017-10-15T13:45:47+02:00] I:=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0Motojj >>>> [55906][2017-10-15T13:45:47+02:00] ERR: Failed to add an object:=C2=A0 >>>> [65] "Object class violation"=C2=A0 >>>> DN: uid=3D20171015134547.zapb17bqWwoWnbh_kwmbHEZ@..., >>>> =C2=A0 =C2=A0 ou=3Doliver,ou=3DPersonal,ou=3Daddressbook,dc=3Dkobosix,= dc=3Dlan=C2=A0 >>>> =C2=A0 =C2=A0 (attributes: [a:7:s:2:"sn";s:6:"Tester";s:9:"givenname";= s:6 >>>> :"Motojj";s:6:"mobile";s:13:"+491222266644"; >>>> s:4:"note";s:1:"";s:4:"mail";s:2:",,";s:3:"uid"; >>>> s:53:"20171015134547.zapb17bqWwoWnbh_kwmbHEZ@..."; >>>> s:11:"objectclass";a:5:{i:0;s:3:"top";i:1;s:6:"person";i:2;s:13 >>>> :"inetOrgPerson";i:3;s:20:"organizationalPerson";i:4;s:15:"evolutionPe= r >>>> son";}}]) >>>> >>>> >>>> LDAP-Server complains about the missing CN field and indeed, there is >>>> no CN field. >>>> >>>> At the moment I have no idea... >>>> >>>> Thanks and regards >>>> Oliver >>> >>> From Turba's perspective, the 'name' attribute is required and=20=20 >>>=20should always be set. I'd say it's Turba_Driver::fromASContact()'s=20= =20 >>>=20responsibility to set this attribute, if it hasn't been provided=20= =20 >>>=20by the AS message. >>> Please file a bug report. >> >> Yes, it looks like currently the turba 'name' attribute is obtained=20= =20 >>=20from the ActiveSync 'fileas' property. I guess this will have to be=20= =20 >>=20built dynamically, but I'm wondering what the best format for=20=20 >>=20building it is. None of the *name properties from ActiveSync are=20=20 >>=20guaranteed to be populated... > > We do support contacts without names, but limited. > > Thus a best guess should be sufficient. Use fileas, if available,=20=20 >=20and fall back to what the backend provides as a composite name field=20= =20 >=20format, if any, and eventually use [firstname ]lastname. Fixed in master & FW_52 --=20 mike The=20Horde Project http://www.horde.org https://www.facebook.com/hordeproject https://www.twitter.com/hordeproject --=_TDpW11CcpT060zvLDO2i9zO Content-Type: application/pgp-keys Content-Description: PGP Public Key -----BEGIN PGP PUBLIC KEY BLOCK----- Comment: GPGTools - https://gpgtools.org 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 Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBFRyB2ODApLCBxdWFs aXR5ID0gOTAK/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsL DQ4SEA0OEQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0L DRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQU/8AAEQgAUABQAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgME BQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQy gZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RV VldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqy s7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/E AB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQE AAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEX GBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKD hIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A831PR7S5ut8kKsw7 kVbgs0igAQBQOgFQXM5N26+lTRSkpivNN7DxHuB5rh/GvgdPFEyh2wimuzjYliKa Y8u1IZ2/wF8Pr4f8ItbqPkTivXRoyaro/kTwF1PZuBWT8FPDjSaAl1cLtt3PyAj7 2D1r067a2gCoAvPAAWsp15RfubnsYPARqwTqrTseSyeCtM0XBj06CT1G2rukah4b UtHPaJZTr/C+CD9DXT66kcjSZACr7V5D4us3ikdyflJwM965li6tN3buenPKsLOF oR5X5Hpf/CR+HLQcGLj0Wqs3xD0OA/Lz/urXAfDHVNHuNVbQ9biX7RJl7Od+jgDL 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 az3hoEpTEtFUT4UsrAIiat2ZnT5N8SS/qsPHqWJ5r4C2uyQJVMmzcJ5AKKvyKa4a f/txy8eL7/SGtbT3AdGMCc8fE1wW9JWQI9ZPXyuFrSAKvQ1YTh4F23u+NTktpnSJ jUQUA6FTwGXqsb9lnNh8HYAmJR0SGYniyU3lyj1olziMpOJ3R7nV17x1JzI27ZY3 +OsKWXfuWo9fjSJnsPq7Se1aWy6NJZ0rYNtERqmsHe2WZbJHrZr5QFQVCPifAAJp u+nBZP8V6srwFudTtChwvnjZ/Y/VOxPRwmABNHGfW47SANfuxCL+hatsvO0E6T4V +VVyYRRbBofE6BkapGpzoTv5zV2JlTMIsmMmrpFVg5fH8MGsAQl+mnSQeAdqRgZi G+q7IFFOsBEW0KC7t42cVEugBrCc4N+4oWMCoFE+QjpC2UNRUOTGN853jSkyRqwP IK/GkScghKQKEBZA7ZSsk/84SGUm5Yr8fPYM/4m/NlC9b/HB5B4nOf+TufTqT47X jPeqbnXh/CeLEZYOT88mgeQLFaENRnLc/YOwZ6Ru9MV+2GElop4EBPZw83BaDeBu 4rDHs8e7Q8kIhTGg1mlQ4bWPEUXvYQXvR7zDUw3YHYgqLyuYPWdxSdsfVVi/P0de 1ML1s9twVauPVTTetDBNaWNoYWVsIEpvc2VwaCBSdWJpbnNreSA8bWlrZXJ1Ymlu c2t5QGdtYWlsLmNvbT6JAj0EEwEKACcFAlkCGLACGwMFCQlmAYAFCwkIBwMFFQoJ CAsFFgIDAQACHgECF4AACgkQkZKCRtGzFtuyaA//Q22/SHwtSWm24MGgJi0bMqBY CHdyK2IYTH93nyt5oB+MV9oz7fERjjSwwueKJZANer6d6tJz09K1N6DoN3DNUAYS XhFM/Fc3JDUOP5iDdnhKd4Vnpd1qeuXzBJgV9V5gCqJHWX7NRWjIxvNl63XBvc3W W3I7gY1aR1XTL6Ha98w/EbM4NOst8WwxPfLf3wisQK+Bd1HODTPvCp7iamSIxrhg VBxbZUIDfmXIrs+FiKoSLqxTyysW7dXi4KJpnEhn62YHeUCa2QfoHRSemtgudIMC xWzh7sR94tyNvLomzCn3g9QRBmrRUieunWmmKi7eSPw2v6bXxxQvZfGdYiBrV35b Tpb6tzDcKRFpIxCw7rrtMNTZGf+zDpJRYVZl+6YWqpinPRwkyPu90nadOiutqtpK oDmEGFxd7mSF7E6C13Xq8FmD42jpwufqzIkBwpHVYKfHkks+Rt8yLRnL6zXojQ9I SYHuWKe2mnJ1nEjI08V/oZubzqsMqB+qWOO/0sGjP3O9hpV2bbYtvthU4zXIGYKw s8fPlGbS5Y2AlNRdsLWwmtljK4prRWLxps0Mj2hsio8Eq0/nN6EEbGSDl6xxpuSW 8fJpuwqBPseJd4KdMT7DvB20nplyvNkxjHcubl2VUXo6gyEnVQlQWWBVO7cM9yq/ jgCFB/EQ+zmJsndYI065Ag0EWQIYFAEQANbPiNW7YOHgnYiyrPdPcr8L89TxLKnu LOFIW1X2aE7C6CpQdqydLfckwIslEcxQTj4z6G+ESgGVqZmBn6aUqBtGv+tFJo45 QvmGFi5U3QkyJCSTGV9ak/B/7r2wXSm9x2MB94R9GaX+Jiv8QmwQIL0OHsrJgayt ncIFjhx2hUWZeezp8fVUlz4c6tzz3Dkrs/Vd1BCSSW5cJBKey+Thgf/cr+fEUqER kM/FGZTDdPZzoU5U7i2ElVc9tDjltbajPntXLL04L1cPzDqOLqQdPJtU7SxF1+E3 7YzjzlT3YODJCrAkpd76edFfS1WkuK90y9bi3mAYHlCn+eJacLLLTT94LQS6SaIx 7eyv86clsO/mYJL22vYxE/mXK6JWBfz4fuNQb7PwUO6m4lQy09Ac6KPHDSzTIM5O wYSjBCxwaByQu/IdGa+fIPQLvfxzO0o8sKAUfEkYFZ5G9pXHEPLGUehHoOPtBYIz qc26+5cvV+LqiKgllPMrMdXUuj66a/PLga9U+albDThJllREElouTTBcT4OqTHpg X+KwoK3xNqpbc8de43Vex9KHlkTv9g0UR2XznQC1BXBcSBHzLMQeXkY4iN8B4ivd dOek8K7Jah9EpEEXMLrGSVAgyRYhVrcSYt7MQ5jkejQnxLAoaR6aRka6ludYmQmr QJqCL6Z4Ea1DABEBAAGJAiUEGAEKAA8FAlkCGBQCGwwFCQlmAYAACgkQkZKCRtGz FtuXZQ/+IjpYtuf9oUN2cMd5NhzWNFLwTIZhBCeSJp7JsQTxjpW4bNzq+4TQDEDT ITodbqe2kHEe8ezS7MvEXCykBQC0WxxyxKP4OPQJD1HDj+nqXTJIXvnYrGYW8PSG 7oQ+kjEwJHOh+4qxYE5kbulSw+3nAJ4eDqasEjy5UEd48b3xPfXfvQmsdYcC08hq HR2tnq1D90+93lvuvpWrh77/ts9MGSM2q6UkM84evc3FAtNkRM0CEzdH81wvi88Z AyIlcvu5MOipAkKG5p04jrbjvGaHa8/lIIRdqe/0lo7Bl+wT9wrSL+oQvRGifPkN lMlPUPeXIfi35tqDvQrNGtxxZcfysvnpTmC4e/h81JCf+Dp0ncomF3V47jQWtk6A zmg7IyBm/B+FWykVtT1bgUfiTJzqYM12JZyF831PuQJs2hLtjZ55xy+5MIC0LzFv 1IdIYjCb7yZwMej7ive529erFTQF87q+/mOQ5ZNJSyTacM/IFO5vDhOsC6w+eoWq E99wmdr9imqIMTOAc+J0s3OQ75ZH4fg5mQW7msBknMhzCBlKnD/RUJQ1MhOKpFS+ K4WT+tWfOjpwsRByJgAzetSWMRE+516UocT/DUQg8cZJayuqaxMY02WjIW4tDqIY nnlHbwPi/niSQC85dbt5KyYcWUgKQopqyOKkXdOSpJCALTH2oXE= =Tsm0 -----END PGP PUBLIC KEY BLOCK----- --=_TDpW11CcpT060zvLDO2i9zO-- --=_ZelRNFf-i89IOdXOJU08LuP Content-Type: application/pgp-signature Content-Description: PGP Digital Signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4 iQIcBAABAgAGBQJZ7B4RAAoJEJGSgkbRsxbbkssP/0UjbybsFCwtgn64Lg1vlu5f PMOPevbb/bU4w2MFFKOpY2VbgI30ZzHjXqDtusU/zK/2Jh9vUJpE1/4LyJHzlmmC 9hGO3nD8kUvnW2K5J3R7GOT3jJqblpimCZSoOydBb8ACfA30vVP2eAZbzq8oMGZA +nCfUb8qu3+eBF9tN9rSTO3R5eh9zWpGxrP+LWy6tcHxNT0DfMBI5awZoWnFxGGz dHx/Zh5tvSb4sN4D/EvM3fMNvFB2CtzwvqYQyA1ITMdO540a5/c/JvpSDn8+8WJm 1b5nDoLe8Fm74THjpkLaQvh1ymvMaaxXhEsZn/SR3cQA4jdQEJhmfgVWi483WU15 2yJR/VNVmcZDfrHV8NoYHMyJDjknXYQOLrkMPErjEnpNeuHe+oqPOLeHY+BQ5Ioi +VY1E+EtWe112o/d/ZJF1JRSupF1z0IEv2E0a6Ma4g3hy6nw8C4Hw2KOUAf2O5VG bvQVvU9QYJrM2+c963kG1Vt7HRGQo770BhRq12F7oUCfs6jbqEKQKUqfyn/BDvRy 2qW7vY8dhu8gFuRoPDWKoSo7VQbyfvq/HGl0bay34gzd7Nd/tg6PdchPUneQW0Om iUOTxNTw/h1h+ZkUzDWm4ZIlMu61iaCN+YnSFU+S5yY3RJ8EGUB+1as6dHLmPN2B 44hXTF3duZmVFMTm4mR7 =/OCD -----END PGP SIGNATURE----- --=_ZelRNFf-i89IOdXOJU08LuP-- --===============1042423625926780290== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline -- turba mailing list Frequently Asked Questions: http://wiki.horde.org/FAQ To unsubscribe, mail: [email protected] --===============1042423625926780290==--