Imansible ricevere posta da Gmail

Alcuni giorni fa Gmail ha improvvisamente deciso di smettere di submit le mail al mio server di posta. Sto usando Postfix e Dovecot con un certificato SSL pagato in esecuzione su Debian 7 con tutto aggiornato.

Il mio mail.log mostra il seguente errore:

 Dec 19 11:09:11 server postfix/smtpd[19878]: initializing the server-side TLS engine Dec 19 11:09:11 server postfix/tlsmgr[19880]: open smtpd TLS cache btree:/var/lib/postfix/smtpd_scache Dec 19 11:09:11 server postfix/tlsmgr[19880]: tlsmgr_cache_run_event: start TLS smtpd session cache cleanup Dec 19 11:09:11 server postfix/smtpd[19878]: connect from mail-wi0-x230.google.com[2a00:1450:400c:c05::230] Dec 19 11:09:11 server postfix/smtpd[19878]: setting up TLS connection from mail-wi0-x230.google.com[2a00:1450:400c:c05::230] Dec 19 11:09:11 server postfix/smtpd[19878]: mail-wi0-x230.google.com[2a00:1450:400c:c05::230]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STR ENGTH:!aNULL:!DES:!3DES:!MD5:!DES+MD5:!RC4:!RC4-MD5" Dec 19 11:09:11 server postfix/smtpd[19878]: SSL_accept:before/accept initialization Dec 19 11:09:11 server postfix/smtpd[19878]: SSL_accept:error in unknown state Dec 19 11:09:11 server postfix/smtpd[19878]: SSL_accept error from mail-wi0-x230.google.com[2a00:1450:400c:c05::230]: -1 Dec 19 11:09:11 server postfix/smtpd[19878]: warning: TLS library problem: 19878:error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol:s23_srvr.c:647: Dec 19 11:09:11 server postfix/smtpd[19878]: lost connection after STARTTLS from mail-wi0-x230.google.com[2a00:1450:400c:c05::230] Dec 19 11:09:11 server postfix/smtpd[19878]: disconnect from mail-wi0-x230.google.com[2a00:1450:400c:c05::230] 

estratti dal mio postfix main.cf :

 smtpd_use_tls=yes smtpd_tls_security_level = may smtpd_tls_auth_only = yes smtpd_tls_CAfile = path to CA Bundle smtpd_tls_cert_file= path to cert (pem) smtpd_tls_key_file=path to key (pem) smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1 smtpd_tls_exclude_ciphers = aNULL, DES, 3DES, MD5, DES+MD5, RC4, RC4-MD5 smtpd_tls_protocols=!SSLv2,!TLSv1,!TLSv1.1,!SSLv3 smtpd_tls_mandatory_ciphers = medium smtpd_tls_received_header = yes tls_preempt_cipherlist = yes tls_medium_cipherlist = AES256+EECDH:AES256+EDH 

Non so where sia il problema, perché ricevo regolarmente messaggi da altri. Non ci sono errori che si collegano alla port 25 tramite telnet o port 465 via openssl

Aggiunta: Ho ricevuto questa posta in cambio da Google:

 Delivery to the following recipient failed permanently: <removed> Technical details of permanent failure: TLS Negotiation failed ----- Original message ----- [...] 

Forse è un problema con la mia cifra di cifra?

Risposta alla domanda di masegaloeh:

 openssl s_client -connect localhost:25 -starttls smtp CONNECTED(00000003) depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root verify error:num=19:self signed certificate in certificate chain verify return:0 --- Certificate chain [...] --- Server certificate -----BEGIN CERTIFICATE----- [...] --- No client certificate CA names sent --- SSL handshake has read 6267 bytes and written 477 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: zlib compression Expansion: zlib compression SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384 Session-ID: [...] Session-ID-ctx: Master-Key: [...] Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 3600 (seconds) TLS session ticket: [...] Compression: 1 (zlib compression) Start Time: 1418986680 Timeout : 300 (sec) Verify return code: 19 (self signed certificate in certificate chain) --- 250 DSN 

Aggiornamento 1: Rilascia il mio certificato SSL. Generato tutto come segue:
openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out server.csr -sha256

Ho quindi creato un nuovo file costituito dal crt e dalla key , dopo di che ho creato il bundle CA:
cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > bundle.crt

Aggiunto tutto al mio wherecot e postfix config e ha riavviato entrambi i servizi.
Google non riesce ancora a submit posta zo il mio server, con conseguente TLS Negotiation failed di TLS Negotiation failed

Ho provato un altro fornitore di posta elettronica (web.de) e la posta viene inviata.
log di web.de:

 Dec 19 17:33:15 server postfix/smtpd[14105]: connect from mout.web.de[212.227.15.3] Dec 19 17:33:15 server postfix/smtpd[14105]: setting up TLS connection from mout.web.de[212.227.15.3] Dec 19 17:33:15 server postfix/smtpd[14105]: mout.web.de[212.227.15.3]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STRENGTH" Dec 19 17:33:15 server postfix/smtpd[14105]: mout.web.de[212.227.15.3]: save session EA1635ED786AFC2D9C7AB43EF43620A1D9092DC640FDE21C01E7BA25981D2445&s=smtp&l=268439647 to smtpd cache Dec 19 17:33:15 server postfix/tlsmgr[14107]: put smtpd session id=EA1635ED786AFC2D9C7AB43EF43620A1D9092DC640FDE21C01E7BA25981D2445&s=smtp&l=268439647 [data 127 bytes] Dec 19 17:33:15 server postfix/tlsmgr[14107]: write smtpd TLS cache entry EA1635ED786AFC2D9C7AB43EF43620A1D9092DC640FDE21C01E7BA25981D2445&s=smtp&l=268439647: time=1419006795 [data 127 bytes] Dec 19 17:33:15 server postfix/smtpd[14105]: Anonymous TLS connection established from mout.web.de[212.227.15.3]: TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits) 

soultion:
Dopo aver abilitato TLSv1 e TLSv1.1 nella sezione smtpd_(mandatory)_protocols tutto funziona bene. Grazie masegaloeh !

 Dec 20 11:44:46 server postfix/smtpd[31966]: initializing the server-side TLS engine Dec 20 11:44:46 server postfix/tlsmgr[31968]: open smtpd TLS cache btree:/var/lib/postfix/smtpd_scache Dec 20 11:44:46 server postfix/tlsmgr[31968]: tlsmgr_cache_run_event: start TLS smtpd session cache cleanup Dec 20 11:44:46 server postfix/smtpd[31966]: connect from mail-wi0-x235.google.com[2a00:1450:400c:c05::235] Dec 20 11:44:46 server postfix/smtpd[31966]: setting up TLS connection from mail-wi0-x235.google.com[2a00:1450:400c:c05::235] Dec 20 11:44:46 server postfix/smtpd[31966]: mail-wi0-x235.google.com[2a00:1450:400c:c05::235]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STRENGTH" Dec 20 11:44:46 server postfix/smtpd[31966]: Anonymous TLS connection established from mail-wi0-x235.google.com[2a00:1450:400c:c05::235]: TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits) 

2 Solutions collect form web for “Imansible ricevere posta da Gmail”

TLDR : I protocolli TLS sono troppo rigidi perché consentono solo la connessione TLSv1.2.

 smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1 smtpd_tls_protocols=!SSLv2,!TLSv1,!TLSv1.1,!SSLv3 

E GMAIL invia e-mail al server con protocollo TLSv1 . Ecco perché la negoziazione TLS non riesce.

La soluzione evidente consiste in protocolli TLSv1 e TLSv1.1 e ancora disabilitando i protocolli SSLv2 e SSLv3 (non sicuri).


Spiegazione

Posso confermare il tuo caso quando non riesco a ricevere email da GMAIL e FACEBOOK su STARTTLS .

Perché solo GMAIL che non riesce a submit email al mio server

Questo è lo snippet maillog quando GMAIL invia e-mail

 Dec 19 23:37:47 tls postfix/smtpd[3876]: initializing the server-side TLS engine Dec 19 23:37:47 tls postfix/smtpd[3876]: connect from mail-wg0-f47.google.com[74.125.82.47] Dec 19 23:37:48 tls postfix/smtpd[3876]: setting up TLS connection from mail-wg0-f47.google.com[74.125.82.47] Dec 19 23:37:48 tls postfix/smtpd[3876]: mail-wg0-f47.google.com[74.125.82.47]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STRENGTH:!aNULL:!DES:!3DES:!MD5:!DES+MD5:!RC4:!RC4-MD5" Dec 19 23:37:48 tls postfix/smtpd[3876]: SSL_accept:before/accept initialization Dec 19 23:37:48 tls postfix/smtpd[3876]: SSL_accept:error in unknown state Dec 19 23:37:48 tls postfix/smtpd[3876]: SSL_accept error from mail-wg0-f47.google.com[74.125.82.47]: -1 Dec 19 23:37:48 tls postfix/smtpd[3876]: warning: TLS library problem: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol:s23_srvr.c:647: Dec 19 23:37:48 tls postfix/smtpd[3876]: lost connection after STARTTLS from mail-wg0-f47.google.com[74.125.82.47] Dec 19 23:37:48 tls postfix/smtpd[3876]: disconnect from mail-wg0-f47.google.com[74.125.82.47] 

E questo è lo snippet maillog quando FACEBOOK invia un'email

 Dec 19 23:11:14 tls postfix/smtpd[3844]: initializing the server-side TLS engine Dec 19 23:11:14 tls postfix/tlsmgr[3846]: open smtpd TLS cache btree:/var/lib/postfix/smtpd_scache Dec 19 23:11:14 tls postfix/tlsmgr[3846]: tlsmgr_cache_run_event: start TLS smtpd session cache cleanup Dec 19 23:11:14 tls postfix/smtpd[3844]: connect from outcampmail003.ash2.facebook.com[66.220.155.162] Dec 19 23:11:14 tls postfix/smtpd[3844]: setting up TLS connection from outcampmail003.ash2.facebook.com[66.220.155.162] Dec 19 23:11:14 tls postfix/smtpd[3844]: outcampmail003.ash2.facebook.com[66.220.155.162]: TLS cipher list "aNULL:-aNULL:ALL:+RC4:@STRENGTH:!aNULL:!DES:!3DES:!MD5:!DES+MD5:!RC4:!RC4-MD5" Dec 19 23:11:14 tls postfix/smtpd[3844]: SSL_accept:before/accept initialization Dec 19 23:11:15 tls postfix/smtpd[3844]: SSL_accept:error in unknown state Dec 19 23:11:15 tls postfix/smtpd[3844]: SSL_accept error from outcampmail003.ash2.facebook.com[66.220.155.162]: -1 Dec 19 23:11:15 tls postfix/smtpd[3844]: warning: TLS library problem: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol:s23_srvr.c:647: Dec 19 23:11:15 tls postfix/smtpd[3844]: lost connection after STARTTLS from outcampmail003.ash2.facebook.com[66.220.155.162] Dec 19 23:11:15 tls postfix/smtpd[3844]: disconnect from outcampmail003.ash2.facebook.com[66.220.155.162] Dec 19 23:11:16 tls postfix/smtpd[3844]: connect from outcampmail004.ash2.facebook.com[66.220.155.163] Dec 19 23:11:17 tls postfix/smtpd[3844]: 962C281443: client=outcampmail004.ash2.facebook.com[66.220.155.163] Dec 19 23:11:18 tls postfix/cleanup[3849]: 962C281443: message-id=<722b2b198d163c43d3bf013bdd396817@www.facebook.com> Dec 19 23:11:18 tls postfix/qmgr[3843]: 962C281443: from=<notification+zj4zc0zzjfac@facebookmail.com>, size=18002, nrcpt=1 (queue active) Dec 19 23:11:18 tls postfix/local[3850]: 962C281443: to=<root@tls.example.net>, orig_to=<zera@tls.example.net>, relay=local, delay=1.6, delays=1.5/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox) Dec 19 23:11:18 tls postfix/qmgr[3843]: 962C281443: removed Dec 19 23:11:24 tls postfix/smtpd[3844]: disconnect from outcampmail004.ash2.facebook.com[66.220.155.163] 

Alcune analisi

  • Nel primo snippet, GMAIL cercherà di submit e-mail su STARTTLS. Quando la negoziazione TLS si verifica, si verifica un errore, quindi il server GMAIL scollegarlo. Discuteremo perché l'errore che si verifica in seguito.
  • Nel secondo snippet, anche FACEBOOK non è in grado di submit e-mail su STARTTLS. Nel process di fallback, FACEBOOK restituisce l'email con la modalità di text normale. In questo caso il nostro server accetta felicemente.

Quindi, spiega perché solo GMAIL non riesce a submit email al tuo server. GMAIL non dispone di un meccanismo di fallback se la negoziazione TLS non riesce . Un altro server di posta può utilizzare il meccanismo di riserva per assicurare che la consegna dei messaggi di posta elettronica sia rioutput.

Perché si verifica l'errore di negoziazione TLS

Posso vedere una linea interessante da web.de maillog

 Dec 19 17:33:15 foxdev postfix/smtpd[14105]: Anonymous TLS connection established from mout.web.de[212.227.15.3]: TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits) 

E scopri che specifichi questa configuration in main.cf

 smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1 smtpd_tls_protocols=!SSLv2,!TLSv1,!TLSv1.1,!SSLv3 

Ciò significa che il server accetta solo la connessione TLS quando TLSv1.2 è stato utilizzato. Tranne TLSv1.2, il server si lamenterà di errore di negoziazione TLS.

Se cambiano i smtpd_tls_(mandatory_)protocols a !SSLv2,!SSLv3,!TLSv1 , si verifica ancora l'errore. Ciò significa che GMAIL e FACEBOOK tentano di contattare il proprio server di posta con protocolli diversi da TLSv1.1 e TLSv1.2.

Se cambiano i smtpd_tls_(mandatory_)protocols a !SSLv2,!SSLv3 , la negoziazione TLS sarà un successo. Conferma che GMAIL e FACEBOOK contatteranno il server con protocollo TLSv1

 Dec 20 00:21:46 tls postfix/smtpd[4261]: Anonymous TLS connection established from outmail038.prn2.facebook.com[66.220.144.165]: TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits) Dec 20 00:23:00 tls postfix/smtpd[4261]: Anonymous TLS connection established from mail-wi0-f174.google.com[209.85.212.174]: TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits) 

Altre persone nel forum FreeBSD confermano anche questo comportmento.

Soluzione

La soluzione evidente è l'abilitazione TLSv1 e TLSv1.1 nel tuo postfix. Ciò garantirà che un server di posta elettronico che non abbia un meccanismo di backup (come il GMAIL) possa comunque comunicare con il server.

Non so la tua ragione per distriggersre il supporto TLSv1 e TLSv1.1, lasciando solo il protocollo TLSv1.2. Se è un webserver e il tuo utente userà solo il browser moderno, allora puoi distriggersre TLSv1 nel tuo server. Questo è accettabile perché solo browser più vecchio che non support il protocollo TLSv1 .

Un potenziale problema che vedo è l'uso apparente di un certificato auto-firmato come riportto da OpenSSL:

 Verify return code: 19 (self signed certificate in certificate chain) 

Se stai utilizzando un certificato SSL a pagamento, non dovresti utilizzare un certificato autofirmato.

Verificherei che il tuo file PEM contenga il tuo certificato pagato e verificare anche che contiene la catena completa del certificato.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.