[Postfix-es] Error al tratar de enviar mail con SSL

Miguel Angel Tormo Alfaro mlists en edicom.eu
Lun Jun 2 16:18:05 CEST 2008


El Lunes, 2 de Junio de 2008 11:42:16 Gorka escribió:
> 
> > -----Mensaje original-----
> > De: Gorka [mailto:gorkapostfix en yahoo.es]
> > Enviado el: lunes, 02 de junio de 2008 11:35
> > Para: 'postfix-es en lists.wl0.org'
> > Asunto: RE: [Postfix-es] Error al tratar de enviar mail con SSL
> > 
> > 
> > 
> > > -----Mensaje original-----
> > > De: postfix-es-bounces en lists.wl0.org [mailto:postfix-es-
> > > bounces en lists.wl0.org] En Nombre de Miguel Angel Tormo Alfaro
> > > Enviado el: viernes, 30 de mayo de 2008 18:32
> > > Para: postfix-es en lists.wl0.org
> > > Asunto: Re: [Postfix-es] Error al tratar de enviar mail con SSL
> > >
> > > El Miércoles, 28 de Mayo de 2008 14:38:24 Gorka escribió:
> > > >
> > > > > -----Mensaje original-----
> > > > > De: postfix-es-bounces en lists.wl0.org [mailto:postfix-es-
> > > > > bounces en lists.wl0.org] En Nombre de Miguel Angel Tormo Alfaro
> > > > > Enviado el: martes, 27 de mayo de 2008 19:27
> > > > > Para: postfix-es en lists.wl0.org
> > > > > Asunto: Re: [Postfix-es] Error al tratar de enviar mail con SSL
> > > > >
> > > > > El Martes, 27 de Mayo de 2008 14:00:16 Gorka escribió:
> > > > > > Hablamos de un servidor tipo ISP de postfix con dovecot.
> > > > > > Me dice “Error al efectuar operación. No se pudo conectar con
> > > > > localhost:
> > > > > > Conexión rehusada”
> > > > > > Lo curioso es que si para este SMTP uso la conexión segura TLS
> > en
> > > > > lugar de
> > > > > > SSL, entonces sí que me deja enviar el correo.
> > > > > >
> > > > > > Tras crear el certificado he repetido por si acaso los comandos
> > > ...
> > > > > > chmod o= /etc/ssl/private/postfix.pem
> > > > > > postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
> > > > > > postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
> > > > > > .... pero sigue dándome el error sólo cuando uso una conexión
> > > segura
> > > > > con
> > > > > > encriptación SSL. Sin encriptación ó con TLS no hay problema.
> > > > > >
> > > > > > ¿Alguna idea?
> > > > > >
> > > > > - Cuando marcas conectar usando TLS en la mayoría de los clientes
> > > de
> > > > > correo, la sesión funciona de la siguiente manera:
> > > > > 	1) Se conecta al puerto 25 (si no lo has cambiado, o no
> > usas el
> > > > > puerto de submission) SIN CIFRADO.
> > > > > 	2) Mediante un comando STARTTLS comienza la negociación del
> > > > > cifrado TLS. A partir de aquí, toda la comunicación va cifrada.
> > > > > - En cambio, cuando conectas usando SSL se entiende que el
> > comando
> > > > > STARTTLS no está soportado (bien por el cliente bien por el
> > > servidor),
> > > > > por tanto se parte de la base que la conexión ya va cifrada de
> > por
> > > sí.
> > > > > Se necesita un puerto distinto para esto, porque el 25 no va
> > > cifrado.
> > > > > Se suele usar el 465 (smtps).
> > > > >
> > > > > Esto último, lo tienes que habilitar explícitamente en tu
> > postfix,
> > > mira
> > > > > si tienes en master.cf una línea como ésta:
> > > > > smtps    inet  n       -       n       -       150      smtpd -v
> > > > >   -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
> > > >
> > > > Gracias Miguel Ángel por contestar. Pongo la línea que me comentas
> > y
> > > ....
> > > > nada. El mismo error ...
> > > >
> > > > “Error al efectuar operación. No se pudo conectar con localhost:
> > > Conexión
> > > > rehusada”
> > > >
> > > > .... en Evolution y uno similar en Outlook desde otra máquina que
> > no
> > > es el
> > > > servidor ...
> > > >
> > > > “La tarea 'Enviando john en example.com' ha notificado el error
> > > (0x800CCC1A) :
> > > > 'El servidor no admite el tipo de cifrado de conexión especificado.
> > > Intente
> > > > cambiar el método de cifrado. Póngase en contacto (...).'”
> > > >
> > > > ¿Por qué no puedo enviar mensajes con encriptación SSL?
> > >
> > > Desde una máquina linux, prueba lo siguiente:
> > > openssl s_client -connect ip:puerto
> > >
> > > Donde ip es la ip del servidor y puerto en el que escucha SSL,
> > > normalmente el 465.
> > 
> > Me dice que hay conexión. Esta es la salida algo resumida:
> > 
> > $ openssl s_client -connect 10.0.0.55:465
> > CONNECTED(00000003)
> > depth=0
> > /C=ES/ST=Madrid/L=Madrid/O=NOMBRE/CN=servidor.mio.es/emailAddres
> > s=postmaster en mio.es
> > verify error:num=18:self signed certificate
> > verify return:1
> > depth=0
> > /C=ES/ST=Madrid/L=Madrid/O=NOMBRE/CN=servidor.mio.es/emailAddres
> > s=postmaster en mio.es
> > verify return:1
> > ---
> > Certificate chain
> >  0
> > s:/C=ES/ST=Madrid/L=Madrid/O=NOMBRE/CN=servidor.mio.es/emailAddress=pos
> > tmaster en mio.es
> > 
> > i:/C=ES/ST=Madrid/L=Madrid/O=NOMBRE/CN=servidor.mio.es/emailAddress=pos
> > tmaster en mio.es
> > ---
> > Server certificate
> > -----BEGIN CERTIFICATE-----
> > HII (...) q==
> > -----END CERTIFICATE-----
> > subject=/C=ES/ST=Madrid/L=Madrid/O=NOMBRE/CN=servidor.mio.es/emailAddre
> > ss=postmaster en mio.es
> > issuer=/C=ES/ST=Madrid/L=Madrid/O=NOMBRE/CN=servidor.mio.es/emailAddres
> > s=postmaster en mio.es
> > ---
> > No client certificate CA names sent
> > ---
> > SSL handshake has read 1456 bytes and written 316 bytes
> > ---
> > New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
> > Server public key is 1024 bit
> > Compression: NONE
> > Expansion: NONE
> > SSL-Session:
> >     Protocol  : TLSv1
> >     Cipher    : DHE-RSA-AES256-SHA
> >     Session-ID:
> > 86923E977B50D7905700F03810D89156283A2E5FC0A552F27775411A430CA176
> >     Session-ID-ctx:
> >     Master-Key: 3F2 (...) E0C
> >     Key-Arg   : None
> >     Start Time: 1212397786
> >     Timeout   : 300 (sec)
> >     Verify return code: 18 (self signed certificate)
> > ---
> > 220 servidor.mio.es ESMTP Postfix (Debian/GNU)
> 
> 
> Perdón, ... al texto anterior he de añadir lo siguiente (ha salido más
> tarde) ...
> 
> 421 4.4.2 servidor.mio.es Error: timeout exceeded
> read:errno=0
> $
No me parece ningún  error, es totalmente normal siempre y cuando hayan pasado 300 segundos (5 minutos), que es el timeout que tiene especificado (lo dice en 'SSL-Session).
Ejecuta el comando así:
time openssl s_client -connect ip:puerto
y cuando dé el error, pulsa enter y revisa el tiempo transcurrido. Solamente te deberías preocupar si es menor a 5 minutos.

Por otro lado, lo que deberías hacer ahora es probar a enviarte un mail, escribe los comandos:
openssl s_client -connect ip:puerto
ehlo yomismo.com
mail from: <mailqexista en dominio.com>
rcpt to: <cuenta en mio.es>
data
Subject: Mail de pruebas
From: Yo
To: Mi
Hola
.

Si llega el mail a 'cuenta en mio.es', entonces es que no tienes ningún problema en el servidor, deberías revisar los logs de las conexiones SSL, puede que haya algún problema con la negociación, pero me parece raro.


Más información sobre la lista de distribución Postfix-es