[Tickets #14110] Re: [ActiveSync] Custom hook breaks send mail functionality

noreply at bugs.horde.org noreply at bugs.horde.org
Wed Sep 16 20:51:01 UTC 2015


Ticket-URL: https://bugs.horde.org/ticket/14110
  Ticket           | 14110
  Aktualisiert Von | hn at axxedia-it.de
  Zusammenfassung  | [ActiveSync] Custom hook breaks send mail functionality
  Warteschlange    | Synchronization
  Version          | FRAMEWORK_5_2
  Typ              | Bug
  Status           | Feedback
  Priorität        | 1. Low
  Milestone        |
  Patch            |
  Zuständige       | Michael Rubinsky

hn at axxedia-it.de (2015-09-16 20:51) hat geschrieben:

I think you mean this piece of code:

      * Return the current user's From/Reply_To address.
      * @return string  A RFC822 valid email string.
     protected function _getIdentityFromAddress()
         global $prefs;

         $ident = $GLOBALS['injector']

         $as_ident = $prefs->getValue('activesync_identity');
         $name = $ident->getValue('fullname', $as_ident == 'horde' ?  
$prefs->getValue('default_identity') :  
         $from_addr = $ident->getValue('from_addr', $as_ident ==  
'horde' ? $prefs->getValue('default_identity') :  
         $rfc822 = new Horde_Mail_Rfc822_Address($from_addr);
         $rfc822->personal = $name;

         return $rfc822->encoded;

 From what I understand here is, that this function does a lookup for  
the full username and the corresponding mail address of the default  
ActiveSync user identity. I checked the user and the ActiveSync  
identity is set to default. Changing it from default does not give a  
different result. I also checked the default user identity on the  
horde web interface, and it shows up populated with the correct values  
for the full user name and the mail address.
Maybe this is not ActiveSync related at all, but I do use custom hooks  
to populate the user identity.

Here are my custom hooks for the default identity:

public function prefs_init($pref, $value, $username, $scope_ob)
        switch ($pref) {

        case 'id':
                 if (is_null($uid)) {
                         $uid = $GLOBALS['registry']->getAuth('bare');
         return $uid;

         case 'from_addr':
         if (is_null($username)) {
                 return ;

         $cmd = 'ldapsearch -H ldaps://my-dc.mylocal.net:636 -x -D  
cn=horde,cn=Users,dc=mylocal,dc=net -w somepassword -b  
dc=mylocal,dc=net samaccountname=' . $username . ' | /bin/grep mail: |  
  /usr/bin/awk \'{print $2}\'';;
         $mails = `$cmd`;
         $mail_array = explode("\n", $mails);
         $mail = $mail_array['0'];
         return empty($mail)
         ? ''
         : $mail;

        case 'fullname':
             // Set the fullname.

             // Set the fullname from the GECOS information in
             // the passwd file.
             if (is_null($username)) {
                 return $value;

             $user = $GLOBALS['registry']->getAuth('bare');

             $array = posix_getpwnam($user);
             $gecos_array = explode(',', $array['gecos']);
             return empty($gecos_array)
                 ? $user
                 : $gecos_array[0];

I could also use ldap to read the fullname from my Active Directory,  
but I was lazy and winbind gives GECOS all the information I need  
here, so I just copied that one from the examples.

So could it be a problem caused by the custom hooks? I think they are  
executed every time a user does a log in, and so the default user  
identity always gets these values set anew.

More information about the bugs mailing list