Was funktioniert:
- Exim spricht mit Dovecot (Auth-Socket)
- Exim, Dovecot und Roundcube sprechen mit PostgreSQL
- Roundcube spricht mit Dovecot und nutzt dazu STARTTLS
- Ein Mail Client (Claws Mail) auf meinem Rechner spricht mit Dovecot und Exim, jeweils mit STARTTLS
- Exim spricht mit anderen MTAs und nutzt dabei ebenfalls STARTTLS (sowohl bei ein- als auch bei ausgehenden Verbindungen)
Roundcube spricht kein STARTTLS mit Exim; das ganze endet immer in einem wirren Fehler. Hier das Debug Log von Exim:
Code: Select all
57113 SMTP>> 220 mail.my-universe.com ESMTP Exim 4.85 Sun, 27 Sep 2015 09:03:28 +0200
57113 Process 57113 is ready for new message
57113 smtp_setup_msg entered
57113 SMTP<< EHLO webmail.my-universe.com
57113 sender_fullhost = webmail.my-universe.com [192.168.0.3]
57113 sender_rcvhost = webmail.my-universe.com ([192.168.0.3])
57113 set_process_info: 57113 handling incoming connection from webmail.my-universe.com [192.168.0.3]
57113 host in pipelining_advertise_hosts? yes (matched "*")
57113 host in auth_advertise_hosts? yes (matched "*")
57113 host in tls_advertise_hosts? yes (matched "*")
57113 SMTP>> 250-mail.my-universe.com Hello webmail.my-universe.com [192.168.0.3]
57113 250-SIZE 52428800
57113 250-8BITMIME
57113 250-PIPELINING
57113 250-STARTTLS
57113 250 HELP
57113 SMTP<< STARTTLS
57113 openssl option, adding from 1000000: 1000000 (no_sslv2)
57113 openssl option, adding from 1000000: 2000000 (no_sslv3)
57113 openssl option, adding from 3000000: 4000000 (no_tlsv1)
57113 openssl option, adding from 7000000: 20000 (no_compression)
57113 setting SSL CTX options: 0x7020000
57113 Diffie-Hellman initialized from /usr/local/etc/ssl/exim/dhparam.pem with 2232-bit prime
57113 tls_certificate file /usr/local/etc/ssl/exim/cert.pem
57113 tls_privatekey file /usr/local/etc/ssl/exim/key.pem
57113 Initialized TLS
57113 required ciphers: EECDH+AES256:EECDH+AES128:EDH+AES256:EDH+AES128:!SSLv3:!SSLv2:!CAMELLIA:!RC4:!3DES:!IDEA:!SEED:!PSK:!SRP:!DSS:!eNULL:!aNULL
57113 host in tls_verify_hosts? no (option unset)
57113 host in tls_try_verify_hosts? no (option unset)
57113 SMTP>> 220 TLS go ahead
57113 Calling SSL_accept
57113 SSL info: before/accept initialization
57113 SSL info: before/accept initialization
57113 SSL info: SSLv2/v3 read client hello A
57113 LOG: MAIN
57113 TLS error on connection from webmail.my-universe.com [192.168.0.3] (SSL_accept): error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol
57113 LOG: MAIN
57113 TLS client disconnected cleanly (rejected our certificate?)
57113 TLS failed to start
57113 SMTP<<
57113 SMTP>> 554 Security failure
57113 LOG: smtp_connection MAIN
57113 SMTP connection from webmail.my-universe.com [192.168.0.3] closed by EOF
57113 search_tidyup called
57113 close PGSQL connection: 192.168.0.2/mail/exim
56678 child 57113 ended: status=0x0
56678 normal exit, 0
56678 0 SMTP accept processes now running
56678 Listening...
Code: Select all
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Recv: 220 mail.my-universe.com ESMTP Exim 4.85 Sun, 27 Sep 2015 11:08:23 +0200
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Send: EHLO webmail.my-universe.com
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Recv: 250-mail.my-universe.com Hello webmail.my-universe.com [192.168.0.3]
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Recv: 250-SIZE 52428800
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Recv: 250-8BITMIME
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Recv: 250-PIPELINING
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Recv: 250-STARTTLS
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Recv: 250 HELP
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Send: STARTTLS
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Recv: 220 TLS go ahead
[27-Sep-2015 11:08:23 +0200]: <lqkh96ai> Send: RSET
[27-Sep-2015 11:09:23 +0200]: <lqkh96ai> Send: QUIT
[27-Sep-2015 11:09:23 +0200]: <lqkh96ai> Recv: 554 Security failure
Code: Select all
[27-Sep-2015 11:08:23 Europe/Berlin] ERROR: STARTTLS failed ()
[27-Sep-2015 11:09:23 +0200]: <lqkh96ai> SMTP Error: Authentication failure: STARTTLS failed (Code: ) in /local/usr-local/www/roundcube/program/lib/Roundcube/rcube.php on line 1713 (POST /?_task=mail&_unlock=loading1443344886076&_lang=en&_framed=1?_task=mail&_action=send)
Die Konfiguration für TLS sieht in Exim so aus:
Code: Select all
openssl_options = +no_sslv2 +no_sslv3 +no_tlsv1 +no_compression
tls_advertise_hosts = *
tls_dh_max_bits = 2236
tls_require_ciphers = ${if =={$received_port}{25}{\
HIGH:!SSLv3:!SSLv2:!CAMELLIA:!RC4:!3DES:!IDEA:!SEED:!PSK:!SRP:!DSS:!eNULL:!aNULL\
}{\
EECDH+AES256:EECDH+AES128:EDH+AES256:EDH+AES128:!SSLv3:!SSLv2:!CAMELLIA:!RC4:!3DES:!IDEA:!SEED:!PSK:!SRP:!DSS:!eNULL:!aNULL\
}}
tls_certificate = /usr/local/etc/ssl/exim/cert.pem
tls_privatekey = /usr/local/etc/ssl/exim/key.pem
tls_dhparam = /usr/local/etc/ssl/exim/dhparam.pem
tls_on_connect_ports = 465
Zum Vergleich einmal die Konfiguration von Dovecot (nur der Part TLS betreffend):
Code: Select all
ssl_cert = </usr/local/etc/ssl/dovecot/cert.pem
ssl_cipher_list = EECDH+AES256 EECDH+AES128 EDH+AES256 EDH+AES128 !CAMELLIA !RC4 !3DES !IDEA !SEED !PSK !SRP !DSS !eNULL !aNULL !LOW !EXP
ssl_dh_parameters_length = 4096
ssl_key = </usr/local/etc/ssl/dovecot/key.pem
ssl_prefer_server_ciphers = yes
ssl_protocols = !SSLv2 !SSLv3
Code: Select all
$config['default_host'] = 'tls://imap.my-universe.com';
$config['imap_conn_options'] = array(
'ssl' => array(
'verify_peer' => true,
'verify_depth' => 3,
'cafile' => '/usr/local/etc/ssl/ca-bundle.pem',
),
'tls' => array(
'verify_peer' => true,
'verify_depth' => 3,
'cafile' => '/usr/local/etc/ssl/ca-bundle.pem',
),
);
$config['smtp_server'] = 'tls://smtp.my-universe.com';
$config['smtp_port'] = 587;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['smtp_helo_host'] = 'webmail.my-universe.com';
$config['smtp_timeout'] = 0;
$config['smtp_conn_options'] = array(
'ssl' => array(
'verify_peer' => true,
'verify_depth' => 3,
'cafile' => '/usr/local/etc/ssl/ca-bundle.pem',
'ciphers' => 'EECDH+AES256:EECDH+AES128:EDH+AES256:EDH+AES128:!SSLv3:!SSLv2:!CAMELLIA:!RC4:!3DES:!IDEA:!SEED:!PSK:!SRP:!DSS:!eNULL:!aNULL',
),
'tls' => array(
'verify_peer' => true,
'verify_depth' => 3,
'cafile' => '/usr/local/etc/ssl/ca-bundle.pem',
'ciphers' => 'EECDH+AES256:EECDH+AES128:EDH+AES256:EDH+AES128:!SSLv3:!SSLv2:!CAMELLIA:!RC4:!3DES:!IDEA:!SEED:!PSK:!SRP:!DSS:!eNULL:!aNULL',
),
);