[horde] Question for Sieve, Ingo, Horde and maybe saslauthd - not sure

Helmut Schiefer Helmut at 4schiefer.de
Tue Sep 10 18:36:06 UTC 2013


Hello Andy,

thanks for your help. I try the configuration with the euser and it  
didn't work.

I found another mistake in my confgiuration. I miss a "$" in front of  
the word backends. So it was a syntax error.

Thanks for Help
Helmut
----- Message from Andy Dorman <adorman at ironicdesign.com> ---------
    Date: Tue, 10 Sep 2013 13:10:32 -0500
    From: Andy Dorman <adorman at ironicdesign.com>
Subject: Re: [horde] Question for Sieve, Ingo, Horde and maybe  
saslauthd - not sure
      To: horde at lists.horde.org


> On 09/10/2013 10:54 AM, Helmut Schiefer wrote:
>>
>> Dear List,
>>
>> I try to setup sieve with cyrus-imap and the current, stable horde/ingo
>> release. Ubuntu 12.04, Imap 2.4.17 (build from source)
>> In case I use Horde without sieve, all runs very well, thanks for
>> creating a great solution.
>>
>> If I enable sieve, I got only a blank login screen and the following
>> error in horde.log
>>
>> 2013-09-09T14:31:44+02:00 ERR: HORDE [imp] Der E-Mail-Server hat einen
>> IMAP-Fehler gemeldet. Mailbox does not exist [pid 11316 on line 566 of
>> "/internet/horde/imp/lib/Imap.php"]
>>
>> Is it possible to point me to an idea, what else can I do to find my
>> mistake?
>>
>> Thanks
>> Helmut
>>
>> hooks.php
>> =========
>> class Ingo_Hooks
>> {
>>      /**
>>       * Returns the username/password needed to connect to the transport
>>       * backend.
>>       *
>>       * @param string $driver  The driver name (array key from
>> backends.php).
>>       *
>>       * @return mixed  If non-array, uses Horde authentication credentials
>>                        (DEFAULT). Otherwise, an array with the
>> following keys
>>       *                (non-existent keys will use default values):
>>       *  - euser: (string; SIEVE ONLY) For the sieve driver, the effective
>>       *           user to use.
>>       *  - password: (string) Password.
>>       *  - username: (string) User name.
>>       */
>>       public function transport_auth($driver)
>>       {
>>          switch ($driver) {
>>          case 'timsieved':
>> //            // Example #1: Use full Horde username for password.
>> //            return array(
>> //                'username' => $GLOBALS['registry']->getAuth(null)
>> //           );
>> //
>> //            // Example #2: Use IMP password/username.
>>              $ob = $GLOBALS['registry']->call('mail/imapOb');
>>              return array(
>>                  'password' => $ob->getParam('password'),
>>                  'username' => $ob->getParam('username')
>>              );
>>          }
>> //
>>          // DEFAULT: Use hordeauth (identical to not defining hook at
>> all).
>> //        return true;
>>      }
>>
>>
>>      /**
>>       * Set the default addresses used for the vacation module.
>>       *
>>       * @param string $user  The username.
>>       *
>>       * @return array  A list of vacation addresses.
>>       */
>> //    public function vacation_addresses($user = null)
>> //    {
>> //        // Example #1: User has 2 vacation addresses.
>> //        return array($user . '@example.com', $user . '@foobar.com');
>> //    }
>>
>> }
>>
>>
>> backends.local.php
>> ====================
>> <?php
>> $backends['imap'] = array(
>>      // ENABLED by default
>>      // Django : 2013-02-04
>>      // default: 'disabled' => false,
>>      'disabled' => true,
>>      'transport' => 'null',
>>      'params' => array(),
>>      'script' => 'imap',
>>      'scriptparams' => array(),
>>      'shares' => false
>> );
>>
>> backends['sieve'] = array(
>>      // Disabled by default
>>      'disabled' => false,
>>      'hordeauth' => 'full',
>>      'transport' => array(
>>          Ingo::RULE_ALL => array(
>>              'driver' => 'timsieved',
>>              'params' => array(
>>                  // Hostname of the timsieved server
>>                  'hostspec' => 'localhost',
>>                  // Login type of the server
>>                  'logintype' => 'PLAIN',
>>                  // Enable/disable TLS encryption
>>                  'usetls' => false,
>>                  // Port number of the timsieved server
>>                  'port' => 2001,
>>                  // Name of the sieve script
>>                  'scriptname' => 'ingo',
>>                  // Enable debugging. The sieve protocol communication
>> is logged
>>                  // with the DEBUG level.
>>                  'debug' => true,
>>              ),
>>     ),
>>       ),
>>       'script' => array(
>>          Ingo::RULE_ALL => array(
>>              'driver' => 'sieve',
>>              'params' => array(
>>                  // If using Dovecot or any other Sieve implementation
>> that
>>                  // requires folder names to be UTF-8 encoded, set this
>>                  // parameter to true.
>>                  'utf8' => true,
>>               ),
>>          ),
>>      ),
>>      'shares' => false
>> );
>>
>> I test: sieveshell   --user=helmut --authname=helmut localhost:2001
>> The sieveshell command worked without any problems
>>
>> Horde Logfile
>> ===================
>> 2013-09-10T08:25:53+02:00 DEBUG: HORDE [ingo] Load config file
>> (conf.php; app: ingo) [pid 7993 on line 409 of "/usr/share/php/Horde.php"]
>> 2013-09-10T08:25:53+02:00 DEBUG: HORDE [ingo] Load config file
>> (hooks.php; app: ingo) [pid 7993 on line 409 of "/usr/share/php/Horde.php"]
>> 2013-09-10T08:26:35+02:00 DEBUG: HORDE [ingo] Load config file
>> (backends.php; app: ingo) [pid 8004 on line 409 of
>> "/usr/share/php/Horde.php"]
>> 2013-09-10T08:26:35+02:00 DEBUG: HORDE [ingo] Hook transport_auth in
>> application ingo called. [pid 8004 on line 1141 of
>> "/usr/share/php/Horde.php"]
>>
>
> Our ingo/backends.local.php set up looks like below.  We manage a  
> cluster of Cyrus servers, so we have to find the specific mailbox  
> server host name which we save in $hostname and use below.
>
> /* Our Cyrus Sieve backend */
> $backends['sieve']['disabled'] = false;
> $backends['sieve']['preferred'] = '';
>
> $backends['sieve']['script'][Ingo::RULE_ALL]['driver'] = 'sieve';
> $backends['sieve']['script'][Ingo::RULE_ALL]['params']['utf8'] = false;
>
> $backends['sieve']['transport'][Ingo::RULE_ALL]['driver'] = 'timsieved';
> $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['hostspec'] =  
> $hostname;
> $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['logintype'] =  
> 'PLAIN';
> $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['usetls'] = true;
> $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['port'] = 4190;
> $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['scriptname'] =  
> 'ingo';
> $backends['sieve']['transport'][Ingo::RULE_ALL]['params']['debug'] = false;
>
> But the above was not enough...we kept getting auth errors.  So we  
> also had to enable the ingo/hooks.php transport_auth function and  
> modify it as shown below.  I commented out the switch in the php  
> code just because I did not believe it necessary for our purposes.   
> It worked fine with & without the switch...BUT the euser value is  
> absolutely critical, at least for Cyrus timesieved.
>
>   public function transport_auth($driver)
>   {
> // I am skipping the switch because we are only doing timsieved
> //     switch ($driver) {
> //     case 'timsieved':
> //         return array(
> //           'username' => $GLOBALS['registry']->getAuth(null)
> //         );
> //
>         $ob = $GLOBALS['registry']->call('mail/imapOb');
>         return array(
>           'euser'    => $ob->getParam('username'),
>           'password' => $ob->getParam('password'),
>           'username' => $ob->getParam('username')
>         );
> //     }
>      // DEFAULT: Use hordeauth (identical to not defining hook at all).
> //      return true;
>   }
>
> Good luck!
>
>
> -- 
> Andy Dorman
> FanMail.com
> Ironic Design, Inc.
> AnteSpam.com, HomeFreeMail.com, ComeHome.net
>
> CONFIDENTIALITY NOTICE: This message is for the named person's use  
> only. It may contain confidential, proprietary or legally privileged  
> information. No confidentiality or privilege is waived or lost by  
> any erroneous transmission. If you receive this message in error,  
> please immediately destroy it and notify the sender. You must not,  
> directly or indirectly, use, disclose, distribute, or copy any part  
> of this message if you are not the intended recipient.
>
> -- 
> Horde mailing list
> Frequently Asked Questions: http://horde.org/faq/
> To unsubscribe, mail: horde-unsubscribe at lists.horde.org


----- End message from Andy Dorman <adorman at ironicdesign.com> -----


-- 
Best Regards
Helmut Schiefer


More information about the horde mailing list