[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