sieve with tls sasl mech list empty

Andreas Winkelmann ml at awinkelmann.de
Tue Sep 12 07:49:22 EDT 2006


Am Tuesday 12 September 2006 12:03 schrieb Rudy Gevaert:

> >sasl_minimum_layer: 1
> >
> >in imapd.conf.
>
> having put:
> allowplaintext: 0
> sasl_minimum_layer: 1
> sasl_mech_list: PLAIN
>
> still gives me that error.
>
> allowplaintext: 1
> sasl_minimum_layer: 1
> sasl_mech_list: PLAIN
>
> gives it to me too :(
>
>
> I did some test with sivtest and managesieve (output is shown below).
> Summary:
>
> sivtest:
>                                                               no
> tls       tls
> plaintext:1, no sasl_minimum_layer     login ok     login ok
> plaintext:1, sasl_minimum_layer :1      login nok   login ok
> plaintext:0, no sasl_minimum_layer     login nok   login ok
> plaintext:0, sasl_minimum_layer :1      login nok  login ok
>
> I did my test with a script (see below) that calls managesieve too:
>
> plaintext:1, no sasl_minimum_layer      no errors  *
> plaintext:1, sasl_minimum_layer :1       sasl mech list empty
> plaintext:0, no sasl_minimum_layer      sasl mech list empty
> plaintext:0, sasl_minimum_layer :1       sasl mech list empty
>
> (*) How do I know it actually uses tls?  I used  tcpdump  -A port 2000
> and can see this passing by:
> AUTHENTICATE "PLAIN" {88+}.  So this is using tls, otherwise I should
> see the password?

No, the first and only Command of the Client that you would see is STARTTLS. 
This will establish a secure/crypted session. From this moment on, you will 
not see any readable data with tcpdump.

The Data behind the AUTHENTICATE PLAIN is not really crypted. It is only 
base64 encoded. You can decode this at any time with for example mimetools.

Because you see this AUTHENTICATE PLAIN, this is a sign, the TLS-Session is 
not established.

allowplaintext:0 disables Plaintext Authentification completely. This is 
something, you don't want.

sasl_minimum_layer only offers Authentication Support on the given Layer. 0 
means everytime. 1 and above would mean an crypted SSL/TLS-Session. This is 
what you want.

> Thanks in advance!
>
> ------------
>
> allowplaintext: 1
> #sasl_minimum_layer: 1

> ----------------------------------
> allowplaintext: 1
> sasl_minimum_layer: 1
>
> mailadm at chestnut:/tmp$ sivtest  -a rudy.gevaert2 at mail.ugent.be  -u
> rudy.gevaert2 at mail.ugent.be  mail2.ugent.be
> S: "IMPLEMENTATION" "Cyrus timsieved v2.3.7"
> S: "SIEVE" "comparator-i;ascii-numeric fileinto reject vacation
> imapflags notify envelope relational regex subaddress copy"
> S: "STARTTLS"
> S: OK
> Authentication failed. generic failure
> Security strength factor: 0

Fine, no SSL/TLS-Session, no Authentification.

> mailadm at chestnut:/tmp$ sivtest -t ""  -a rudy.gevaert2 at mail.ugent.be  -u
> rudy.gevaert2 at mail.ugent.be  mail2.ugent.be
> S: "IMPLEMENTATION" "Cyrus timsieved v2.3.7"
> S: "SIEVE" "comparator-i;ascii-numeric fileinto reject vacation
> imapflags notify envelope relational regex subaddress copy"
> S: "STARTTLS"
> S: OK

The Server offers no Authentification-Support. Only STARTTLS. That's fine.

> C: STARTTLS
> S: OK "Begin TLS negotiation now"
> verify error:num=20:unable to get local issuer certificate
> verify error:num=27:certificate not trusted
> verify error:num=21:unable to verify the first certificate
> TLS connection established: TLSv1 with cipher AES256-SHA (256/256 bits)

The CLient establishes a SSL/TLS-Session.

> C: CAPABILITY
> S: "IMPLEMENTATION" "Cyrus timsieved v2.3.7"
> S: "SASL" "PLAIN"

And then you can see the SASL-Capabilities.

> S: "SIEVE" "comparator-i;ascii-numeric fileinto reject vacation
> imapflags notify envelope relational regex subaddress copy"
> S: OK
> Please enter your password:
> C: AUTHENTICATE "PLAIN" {88+}
> cnVkeS5nZXZhZXJ0MkBtYWlsLnVnZW50LmJlAHJ1ZHkuZ2V2YWVydDJAbWFpbC51Z2VudC5iZQB
>0ZXN0dXNlcjE= S: OK
> Authenticated.
> Security strength factor: 256

Authentification complete, Server waits for Commands.

Looks fine, as expected.

> managesieve: not ok!

What means that?

> ---------------

> my perl script:
>
> #!/usr/bin/perl -w
>
> use strict;
> use Cyrus::SIEVE::managesieve;
> use Data::Dumper;
>
> my ($server, $username, $password) = ("mail2.ugent.be",
> 'rudy.gevaert2 at mail.ugent.be', "xxxx");
>
> my $handle = sieve_get_handle($server,
>                                   sub {$username},
>                                   sub {$username},
>                                   sub {$password},
>                                   sub {""});
>
> unless (defined $handle) {
>     die "$server: ", sieve_get_global_error();
> }
>
> my %list = ();
> my $res = sieve_list($handle, sub {$list{$_[0]} = $_[1]});
>     die("script_list: ", sieve_get_error($handle))
>     unless $res == 0;
> print Dumper  \%list;
>
> --------------------------------------

Oh, you mean your script does not work with "managesieve not ok"?

Hmm, seems that the Perl-Interface/Lib does not support TLS/SSL. Then it will 
fail with "sasl_minimum_layer: 1" of course.

I don't know if this is on the TODO List. Maybe someone of the Developers can 
say something about that.

-- 
	Andreas


More information about the Info-cyrus mailing list