Hi,
I'm happy to announce the release of perdition 2.0
This is the culmination of the 1.19-rc series of releases. A decision has
been made to name the release 2.0 instead of 1.19 as there are significant
changes since the release of 1.18 including support for a new protocol,
managesieve.
Key changes since v1.19-rc5:
* Correct base64 calculation errors that resulted in managesieve
authentication failing in some circumstances.
* Use "imap" instead of "imap2" as default port for IMAP protocol
A full change log is provided by the Mercurial repository
http://hg.vergenet.net/perdition/perdition/
Perdition 2.0 and the vanessa libraries that it depends on
are available from:
http://horms.net/linux/perdition/download/1.19-rc5/
Debian unstable packages have been uploaded to Debian.Org
and should be available in the Debian archive within 24 hours.
http://packages.debian.org/source/unstable/perdition
Perdition(8) says:
--ssl_outgoing_ciphers STRING:
Cipher list when making outgoing SSL or TLS connections as
per ciphers(1). If empty ("") then openssl's default will
be used. (default "")
However, this is only the case for outgoing connections that do not use
STARTTLS (the perdition terminology is confusing here, since what it
calls "TLS" actually means "start as cleartext, negotiate to encrypted
via STARTTLS" and what it calls "SSL" actually means "start SSL or TLS
session, run service inside that").
Here's the fix:
diff -r 046a7b19cd5b perdition/perdition.c
--- a/perdition/perdition.c Thu Nov 07 21:23:31 2013 -0500
+++ b/perdition/perdition.c Thu Nov 07 21:49:39 2013 -0500
@@ -985,7 +985,7 @@
else if((opt.ssl_mode & SSL_MODE_TLS_OUTGOING) &&
(status & PROTOCOL_S_STARTTLS)) {
server_io=perdition_ssl_client_connection(server_io, opt.ssl_ca_file,
- opt.ssl_ca_path, opt.ssl_listen_ciphers, servername);
+ opt.ssl_ca_path, opt.ssl_outgoing_ciphers, servername);
if(!server_io) {
VANESSA_LOGGER_DEBUG("perdition_ssl_connection outgoing");
VANESSA_LOGGER_ERR("Fatal error establishing SSL connection");
This is a security concern because it means that perdition is not
obeying the specifications of the administrator, and may accept weaker
ciphersuites than instructed on its backhaul connections.
Consider the case where an administrator wants to offer relatively
promiscuous IMAP connections to their end users -- if the user's MUA
only has some weak cipher suite or cleartext IMAP, we want to accept the
weak ciphersuite as better than nothing. However, the admin's backend
IMAP servers are all under her control, and she knows that they are
capable of stronger ciphersuites. in this case, ssl_listen_ciphers will
allow weak ciphers, and ssl_outgoing_ciphers will be strict and require
high security, to at least protect the link between perdition and the
backend IMAP server.
However, if this outgoing connection happens to use IMAP+STARTTLS
instead of IMAPS, the bug described here will offer weak ciphersuites to
the backend IMAP server.
Regards,
--dkg
Hi Perdition folks--
I just noticed that when i operate perdition as a server offering TLS,
clients are unable to select an ephemeral Diffie-Hellman key exchange
mechanism (also known as EDH or DHE). Since DHE is the most
widely-supported TLS key exchange mechanism to provide Perfect Forward
Secrecy (PFS), it seems like something perdition might want.
The patch below enables DHE support for perdition. By default, it looks
for a PEM-encoded DH PARAMETERS section in the server's certificate
file. I've also added a configuration option (--ssl_dh_params_file)
which can be used to specify a separate file for the DH params if
desired.
With the patch and --ssl_dh_params_file explicitly declared, perdition
will throw an error if no DH parameters could be loaded. if
--ssl_dh_params_file isn't declared, it just tries to load DH params
From the cert file and carries on without DHE if no params can be found.
Another alternative could be to embed a default set of DH parameters
into perdition itself, if no parameters can be loaded. I didn't
implement that, but could do so if it is desired. Please let me know.
Also attached is a simple test script (reliant on gnutls-bin for setup)
that can be run from a built perdition source tree; if the built version
of perdition supports DHE, the script will leave the user in an IMAP
session with a test server (no backend attached, basically only LOGOUT
works). If the built version of perdition doesn't work, then the script
will terminate. Either way, copious diagnostic output is produced.
I'd be happy to have this feature adopted by perdition upstream, since i
have users of perdition who actively want to configure their MUAs to use
some PFS-enabled ciphersuite.
The patch is made against changeset 913:384a78e5951a.
Please let me know if there are changes you'd like to see, or if there
is anything that i should update to make the patch more acceptable for
inclusion upstream.
Thanks for perdition,
--dkg