Exim TLS e SMTP seguro

5

Estou no processo de converter um servidor de e-mail existente para oferecer suporte a SMTP criptografado para nossos clientes, mas corri para essa parede de tijolos com poucos dados de log úteis para me ajudar a avançar. Tudo funciona bem quando se usa SMTP normal não criptografado; é apenas quando se tenta usar SMTP criptografado que as coisas vão em forma de pêra.


Meu arquivo de configuração exim contém o seguinte:

# Allow any client to use TLS
tls_advertise_hosts                       =  *

# Specify the location of the Exim server's TLS certificate and private key.
tls_certificate                           =  /etc/exim/exim.crt
tls_privatekey                            =  /etc/exim/exim.key 


Inicialmente, Exim aparece para estar funcionando como esperado, eu sou capaz de se conectar com segurança ao servidor de email e me autenticar, mas logo após eu entrar na seção de destinatário na sessão SMTP, a conexão é descartada. Esse problema não ocorre ao usar uma conexão não criptografada.


Para testar o SMTP seguro, uso o seguinte comando:

openssl s_client -starttls smtp -crlf -connect localhost:25


E esta é a saída que recebo:

CONNECTED(00000003)
depth=0 C = ZA, etc, etc
verify error:num=18:self signed certificate
verify return:1
depth=0 C = ZA, etc, etc
verify return:1
---
Certificate chain
 0 s:/C=ZA/etc,etc
   i:/C=ZA/etc,etc
---
Server certificate
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXX==
-----END CERTIFICATE-----
subject=/C=ZA/etc,etc
---
No client certificate CA names sent
---
SSL handshake has read 1275 bytes and written 444 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Session-ID-ctx: 
    Master-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    TLS session ticket:
    0000 - d0 cd ff b6 0c a2 fb 6c-f6 69 dc 0b a7 aa f3 1a   .......l.i......
    0010 - 10 76 75 05 15 d8 8c 21-cb eb b8 ae ec 34 7d b3   .vu....!.....4}.
    0020 - 7a bf f0 d6 7d df 26 27-41 1e d1 2a 35 bf 2f 0c   z...}.&'A..*5./.
    0030 - 25 6a 32 15 6e 53 d2 30-31 1b d9 60 e6 11 20 73   %j2.nS.01..'.. s
    0040 - 57 e3 76 96 e7 7e dc da-98 f2 cc a7 e5 58 62 b2   W.v..~.......Xb.
    0050 - ec db 58 91 16 14 18 ff-15 64 d6 66 1f 75 92 96   ..X......d.f.u..
    0060 - 65 43 f8 2c 4a 42 81 41-0c 2f 46 84 38 0c c5 e0   eC.,JB.A./F.8...
    0070 - 8d 7b d7 7e 12 0e 28 ca-f0 f9 b5 d0 b2 a6 ab 66   .{.~..(........f
    0080 - f8 c5 33 e3 cb 16 f5 76-8f e7 49 0c 49 69 31 43   ..3....v..I.Ii1C
    0090 - 05 25 dc 75 3a 07 13 91-63 ff 13 fd b0 2c 9f 8b   .%.u:...c....,..

    Compression: 1 (zlib compression)
    Start Time: 1315250595
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
250 HELP
HELO localhost
250 OK
MAIL FROM:[email protected]
250 OK
RCPT TO:[email protected]
RENEGOTIATING
depth=0 C = ZA, etc, etc
verify error:num=18:self signed certificate
verify return:1
depth=0 C = ZA, etc, etc
verify return:1
421 lost input connection
read:errno=0

Substitui os endereços de e-mail e a árvore organizacional por dados ilegíveis na saída acima, pois isso é irrelevante, pois não tenho esse mesmo problema ao usar o SMTP comum. A transação acima ocorre independentemente de eu tentar a conexão do host local ou de uma fonte externa. Também devo observar que estou usando um certificado autoassinado gerado usando o OpenSSL. Além disso, no exemplo acima, não há dados de autenticação, pois estou realizando o teste a partir do host local, o que permite a necessidade de todos os emails sem autenticação.

Como você pode ver na saída acima, o Exim parece quebrar durante / após a emissão da string "RENEGOTIATING".

Como a saída que recebo durante a sessão SMTP não ajuda muito, também tentei executar o Exim no modo debug + all. Por razões de brevidade, não postarei a transação SMTP completa, já que a sessão inteira é normal, até o ponto em que eu especifique o endereço do destinatário. Este é o snippet exato dos dados de depuração do Exim que recebo depois de digitar o endereço do destinatário e pressionar Enter:

21:42:10  7425 SSL info: before accept initialization
21:42:10  7425 SSL info: before accept initialization
21:42:10  7425 SSL info: SSLv3 read client hello A
21:42:10  7425 SSL info: SSLv3 write server hello A
21:42:10  7425 SSL info: SSLv3 write certificate A
21:42:10  7425 SSL info: SSLv3 write server done A
21:42:10  7425 SSL info: SSLv3 flush data
21:42:10  7425 SSL info: SSLv3 read client key exchange A
21:42:10  7425 SSL info: SSLv3 read finished A
21:42:10  7425 SSL info: SSLv3 write session ticket A
21:42:10  7425 SSL info: SSLv3 write change cipher spec A
21:42:10  7425 SSL info: SSLv3 write finished A
21:42:10  7425 SSL info: SSLv3 flush data
21:42:10  7425 SSL info: SSL negotiation finished successfully
21:42:10  7425 SSL info: SSL negotiation finished successfully
21:42:10  7425 Got SSL error 2
21:42:10  7425 SMTP>> 421 lost input connection
21:42:10  7425 tls_do_write(1db4020, 48)
21:42:10  7425 SSL_write(SSL, 1db4020, 48)
21:42:10  7425 outbytes=48 error=0
21:42:10  7425 LOG: lost_incoming_connection MAIN
21:42:10  7425   unexpected disconnection while reading SMTP command from (localhost) [127.0.0.1]
21:42:10  7425 search_tidyup called
21:42:10  7194 child 7425 ended: status=0x100
21:42:10  7194 0 SMTP accept processes now running
21:42:10  7194 Listening...
    
por Richard Keller 05.09.2011 / 21:50

2 respostas

4

Achei isso em 30 segundos pesquisando "openssl s_client RENEGOTIATING" : R "recurso" do s_client

Em resumo - pressionar "R" em uma sessão s_client faz com que openssl renegocie. Tente digitar "rcpt to:" em vez de "RCPT TO".

Você também pode tentar ferramentas mais adequadas para testes específicos de SMTP, como Smtpc de Tony Finch ou swaks .

    
por 09.09.2011 / 03:32
0

Para exigir criptografia para autenticação em exim , defino em /etc/exim/exim.conf :

auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}

Eu também forço tls 1.2 :

openssl_options = +no_sslv2 +no_sslv3 +no_tlsv1 +no_tlsv1_1

Entre dois servidores exim idênticos, notei um usando AES-GCM & o outro usando ChaCha20-Poly1305 para criptografia & não sabia por quê. O esquema de criptografia usado depende se a host tem AES de aceleração de hardware na 'cpu.

    
por 16.05.2017 / 17:46