[imp] default identity --> SOLVED

carole gimenez gimenez at cict.fr
Fri Jun 24 07:50:02 PDT 2005


Finally, i solved my problem. In fact, it was necessary that I add a 
ldapbind dn and ldapbind passwd to connect to my ldap directory as 
following:

if (!function_exists('_prefs_hook_from_addr')) {
     function _prefs_hook_from_addr($user = null)
     {
         $ldapServer = 'xxxxx';
         $ldapPort = '389';
         $ldapdn = 'uid=horde,ou=appli,dc=ups-tlse,dc=fr';
         $ldappwd = 'xxxxx';
         $searchBase = 'ou=people,dc=ups-tlse,dc=fr';

         $ds = @ldap_connect($ldapServer, $ldapPort);

         if (is_null($user)) {
             $user = Auth::getAuth();
         }

        if (@ldap_bind($ds, $ldapdn, $ldappwd)) {
                $searchResult = @ldap_search($ds, $searchBase, 'uid=' . 
$user);
        }

         $information = @ldap_get_entries($ds, $searchResult);
         if ($information[0]['mail'][0] != '') {
             $emailname = $information[0]['mail'][0];
         }
        //else {
         //    $emailname = $information[0]['cn'][0];
         //}

        ldap_close($ds);
        return $emailname;
     }
 }


Good week-end.

Carole.

carole gimenez wrote:

>OK, i tried the two methods following but it doesn't work. I have always 
>uid at xxx.fr as default identity:
>
>1. if (!function_exists('_prefs_hook_from_addr')) {
>     function _prefs_hook_from_addr($user = null)
>     {
>         $ldapServer = 'x.x.x.x';
>         $ldapPort = '389';
>         $searchBase = 'dc=ups-tlse,dc=fr';
>
>         $ds = @ldap_connect($ldapServer, $ldapPort);
>
>         if (is_null($user)) {
>             $user = Auth::getAuth();
>         }
>
>         // You will probably need to replace cn= with uid=; this
>         // syntax is for Netware 5.1 nldap.
>         $searchResult = @ldap_search($ds, $searchBase, 'uid=' . $user);
>         $information = @ldap_get_entries($ds, $searchResult);
>         if ($information[0]['mail'][0] != '') {
>             $name = $information[0]['mail'][0];
>         }
>        //else {
>        //     $name = $information[0]['cn'][0];
>        // }
>
>        ldap_close($ds);
>        return (empty($name) ? $user : $name);
>     }
> }
>
>
>2. if (!function_exists('_prefs_hook_from_addr')) {
>     function _prefs_hook_from_addr($user = null)
>     {
>         $ldapServer = 'x.x.x.x';
>         $ldapPort = '389';
>         $searchBase = 'dc=ups-tlse,dc=fr';
>
>         $ds = @ldap_connect($ldapServer, $ldapPort);
>
>         if (is_null($user)) {
>             $user = Auth::getAuth();
>         }
>
>        $uid = Auth::getBareAuth();
>        $binddn = 'uid=' . $uid . ',' . $searchBase;
>        $bindpw = Auth::getCredential('password');
>
>        if (@ldap_bind($ds, $binddn, $bindpw)) {
>                $searchResult = @ldap_search($ds, $searchBase, 'uid=' . 
>$uid);
>        }
>
>         // You will probably need to replace cn= with uid=; this
>         // syntax is for Netware 5.1 nldap.
>        // $searchResult = @ldap_search($ds, $searchBase, 'uid=' . $user);
>         $information = @ldap_get_entries($ds, $searchResult);
>         if ($information[0]['mail'][0] != '') {
>             $emailname = $information[0]['mail'][0];
>         }
>        //else {
>         //    $emailname = $information[0]['cn'][0];
>         //}
>
>        ldap_close($ds);
>        return $emailname;
>     }
> }
>
>
>I have well modified horde/config/prefs.php to add 'hook' => true
>
>
>Is there another things or files to be modified?
>
>
>Carole.
>
>
>Nicolas Schmitz wrote:
>
>  
>
>>One of the great thing of imp : custom hook. Edit horde/config/hooks.php
>>and configure something like that :
>>
>>if (!function_exists('_prefs_hook_from_addr')) {
>>    function _prefs_hook_from_addr($user = null)
>>    {
>>    $ldapServer = 'XXX';
>>    $ldapPort = '389';
>>   $ldapUser = 'XXX';
>>   $ldapPass = 'XXX';
>>   $searchBase = 'XXX';
>>     $ldapconn = ldap_connect($ldapServer, $ldapPort);
>>    $ds = ldap_bind($ldapconn, $ldapUser, $ldapPass);
>>        $searchResult = ldap_search($ldapconn, $searchBase, 'uid=' . 
>>$user);
>>           $information = ldap_get_entries($ldapconn, $searchResult);
>>           $name = $information[0]['mail'][0];
>>                  ldap_close($ldapconn);
>>      return (empty($name) ? $imp['user'] : $name);
>>    }
>>}
>>
>>then edit horde/config/prefs.php :
>>
>>// user preferred email address for From: line
>>// If you lock this preference, you must specify a value or a hook for it in
>>// horde/config/hooks.php.
>>$_prefs['from_addr'] = array(
>>   'value' => '',
>>   'locked' => true,
>>   'shared' => true,
>>   'type' => 'text',
>>   'desc' =>  _("Your From: address:"),
>>    'hook' => true
>>);
>>
>>
>>You can do that for a lot of prefs.
>>
>>
>>
>>carole gimenez a écrit :
>>
>> 
>>
>>    
>>
>>>Hi,
>>>
>>>I installed horde-3.0.3 and imp-h3-4.0.2 on a linux server.
>>>
>>>The authentification is realized through the cyrus-imap server which 
>>>questions our ldap directory.
>>>
>>>The user gives as login his uid, unique ldap attribute, for example 
>>>'vrc4952a'.
>>>
>>>The problem is that when this user wants send a mail, his default 
>>>identity is uid at domain, here for example vrc4952a at xxx.fr.
>>>
>>>However we would like rather than his default identity is his mail 
>>>attribute in ldap directory, here verdon at xxx.fr.
>>>
>>>Is that possible to do? and if yes, how?
>>>
>>>
>>>Can someone help me on this subject, please?
>>>
>>>
>>>Thanks for advance.
>>>
>>>
>>>Carole.
>>>
>>>
>>>
>>>   
>>>
>>>      
>>>
>> 
>>
>>    
>>
>
>  
>



More information about the imp mailing list