TLDR : seus protocolos TLS são muito restritos porque você permite apenas a conexão TLSv1.2.
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_protocols=!SSLv2,!TLSv1,!TLSv1.1,!SSLv3
O GMAIL envia e-mails para o seu servidor com o protocolo TLSv1 . É por isso que a negociação TLS falha.
A solução óbvia é permitir os protocolos TLSv1 e TLSv1.1 e ainda desabilitar os protocolos SSLv2 e SSLv3 (inseguros).
Explicação
Posso confirmar seu caso quando não receber e-mails do GMAIL e do FACEBOOK por STARTTLS .
Por que apenas o GMAIL que não envia e-mails para o meu servidor
Este é o snippet do maillog quando o GMAIL envia um email
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 este é o trecho do maillog quando o FACEBOOK envia e-mail
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=<[email protected]>
Dec 19 23:11:18 tls postfix/qmgr[3843]: 962C281443: from=<[email protected]>, size=18002, nrcpt=1 (queue active)
Dec 19 23:11:18 tls postfix/local[3850]: 962C281443: to=<[email protected]>, orig_to=<[email protected]>, 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]
Algumas análises
- No primeiro snippet, o GMAIL tentará enviar um email por STARTTLS. Quando a negociação TLS ocorre algum erro, o servidor GMAIL o desconecta. Vamos discutir por que o erro ocorre abaixo.
- No segundo trecho, o FACEBOOK também não envia e-mails por meio de STARTTLS. No processo de fallback, o FACEBOOK reenvia o email com o modo de texto simples. Neste caso, nosso servidor aceita isso com alegria.
Então, isso explica por que apenas o GMAIL não envia e-mails para o seu servidor. O GMAIL não possui mecanismo para fallback se a negociação de TLS falhar . Outro servidor de e-mail pode usar o mecanismo de fallback para garantir que a entrega de e-mail seja bem-sucedida.
Por que o erro de negociação TLS ocorre
Eu vejo uma linha interessante de 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 descubra que você especificou essa configuração em main.cf
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_protocols=!SSLv2,!TLSv1,!TLSv1.1,!SSLv3
Isso significa que o seu servidor aceita apenas conexão TLS quando o TLSv1.2 é usado. Diferentemente do TLSv1.2, seu servidor irá reclamar de erro de negociação TLS.
Se eu alterar smtpd_tls_(mandatory_)protocols
para !SSLv2,!SSLv3,!TLSv1
, o erro ainda ocorrerá. Isso significa que o GMAIL e o FACEBOOK tentarão contatar o seu servidor de e-mail com protocolos diferentes de TLSv1.1 e TLSv1.2.
Se eu alterar smtpd_tls_(mandatory_)protocols
para !SSLv2,!SSLv3
, a negociação TLS será bem-sucedida. Confirme que o GMAIL e o FACEBOOK entrarão em contato com seu servidor com o protocolo 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)
Outras pessoas no fórum do FreeBSD também confirmam este comportamento.
Solução
A solução óbvia é ativar o TLSv1 e o TLSv1.1 no seu postfix. Isso garantirá que alguns servidores de email que não possuam mecanismos de fallback - como o GMAIL - ainda possam se comunicar com o servidor.
Eu não sei o seu motivo para desativar o suporte a TLSv1 e TLSv1.1, deixando apenas o protocolo TLSv1.2. Se for um servidor da web e seu usuário usar apenas o navegador moderno, você poderá desabilitar o TLSv1 em seu servidor. Isso é aceitável porque apenas o navegador mais antigo que não suporta o protocolo TLSv1 .