No meu servidor SMTP Postfix voltado para a Internet, executando o Debian Wheezy, gostaria de configurar uma conexão segura com alguns servidores conhecidos. Alguns são meus, executando minha própria PKI / CA, alguns são servidores SMTP públicos, como os servidores do Gmail do Google. Para verificar os certificados nos servidores que estou executando, especifiquei
smtp_tls_CAfile = /usr/local/share/ca-certificates/Gert_van_Dijk_Root_CA_2014.crt
e para garantir que os servidores públicos também possam ser verificados no armazenamento de certificados do sistema interno, eu especifiquei explicitamente
tls_append_default_CA = yes
Para garantir que o Postfix verifique o certificado corretamente, configurei o nível de segurança TLS global como 'seguro'. Eu vou mudar isso de volta para 'may' com alguns domínios para secure
in smtp_tls_policy_maps
assim que terminar de depurar este problema descrito aqui.
smtp_tls_security_level = secure
Ele verifica meus próprios servidores muito bem! Todos eles estão rodando com certificados assinados pelo Gert_van_Dijk_Root_CA_2014.crt
. No entanto, parece que o cliente SMTP realmente não anexa os certificados pela configuração tls_append_default_CA
quando tenta entregar e-mails aos servidores SMTP do Google. Eu esperaria que ele acrescentasse aqueles de /etc/ssl/certs
no Debian.
postfix/smtp[32271]: effective TLS level: secure
[...]
postfix/smtp[32271]: < alt1.gmail-smtp-in.l.google.com[64.233.164.26]:25: 220 2.0.0 Ready to start TLS
[...]
postfix/smtp[32271]: DE6D0403EB: Server certificate not verified
Veja o que tentei:
-
Desabilitando o chroot em master.cf
para o cliente smtp assim:
smtp unix - - n - - smtp
Não ajudou.
-
Adicione registro detalhado. Eu adicionei -v
à linha acima. Tive que desabilitar a limitação da taxa de rsyslog, mas isso não melhorou em nada. A única linha mencionada sobre a verificação de TLS é a linha DE6D0403EB: Server certificate not verified
.
-
Tentando rastrear o processo para ver se ele entra em algum problema ao acessar os certificados de autoridade de certificação. Parece que o cliente SMTP é gerado como um novo processo para cada tentativa de entrega. Isso torna o geral strace -p <PID>
impossível.
-
Procure problemas semelhantes. Eu só pareço encontrar este muito semelhante problema , mas isso é sobre não especificando a configuração smtp_tls_CAfile
, o que eu faço. Com um smtp_tls_CAfile
conjunto, ele deve realmente anexar os certificados de CA do sistema.
-
Revertendo tudo de volta para os padrões do Debian, com exceção de smtp_tls_security_level = secure
. Ele também falha em fornecer ao Google o mesmo erro. Bug no Postfix do Debian então?
-
O mesmo que acima, desabilitando o chroot para o cliente SMTP e, em seguida, defina smtp_tls_CApath = /etc/ssl/certs
explicitamente. Ainda falha na verificação de certificados.
-
Adicionando o nível de depuração TLS. Shows:
postfix/tlsmgr[17486]: write smtp TLS cache entry smtp:64.233.164.26:25:mx.google.com&p=1&c=aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH:!aNULL&l=268439647: time=1421622891 [data 1975 bytes]
postfix/smtp[17485]: alt1.gmail-smtp-in.l.google.com[64.233.164.26]:25: subject_CN=mx.google.com, issuer_CN=Google Internet Authority G2, fingerprint 88:C0:85:C8:CB:96:29:8F:4E:15:11:80:C5:9A:89:0D, pkey_fingerprint=E0:32:29:21:69:38:EA:F9:B6:0C:F6:BD:86:12:16:B9
postfix/smtp[17485]: Untrusted TLS connection established to alt1.gmail-smtp-in.l.google.com[64.233.164.26]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
postfix/smtp[17485]: DE6D0403EB: Server certificate not trusted
-
A verificação manual do OpenSSL no mesmo sistema mostra que tudo deve estar bem.
$ openssl s_client -connect 64.233.164.26:25 -starttls smtp
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
verify return:0
-
Com a desativação do chroot para o tlsmgr, FINALMENTE recebi um Trusted TLS connection established
, mas o postfix ainda acha que a conexão é insegura ( Server certificate not verified
):
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: certificate verification depth=3 verify=1 subject=/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: certificate verification depth=2 verify=1 subject=/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: certificate verification depth=1 verify=1 subject=/C=US/O=Google Inc/CN=Google Internet Authority G2
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: certificate verification depth=0 verify=1 subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=mx.google.com
postfix/smtp[27198]: SSL_connect:SSLv3 read server certificate A
postfix/smtp[27198]: SSL_connect:SSLv3 read server key exchange A
postfix/smtp[27198]: SSL_connect:SSLv3 read server done A
postfix/smtp[27198]: SSL_connect:SSLv3 write client key exchange A
postfix/smtp[27198]: SSL_connect:SSLv3 write change cipher spec A
postfix/smtp[27198]: SSL_connect:SSLv3 write finished A
postfix/smtp[27198]: SSL_connect:SSLv3 flush data
postfix/smtp[27198]: SSL_connect:SSLv3 read server session ticket A
postfix/smtp[27198]: SSL_connect:SSLv3 read finished A
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: aspmx.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt1.aspmx.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt2.aspmx.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt3.aspmx.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt4.aspmx.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: gmail-smtp-in.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt1.gmail-smtp-in.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt2.gmail-smtp-in.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt3.gmail-smtp-in.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt4.gmail-smtp-in.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: gmr-smtp-in.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt1.gmr-smtp-in.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt2.gmr-smtp-in.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt3.gmr-smtp-in.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: alt4.gmr-smtp-in.l.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: mx.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: aspmx2.googlemail.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: aspmx3.googlemail.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: aspmx4.googlemail.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subjectAltName: aspmx5.googlemail.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25 CommonName mx.google.com
postfix/smtp[27198]: gmail-smtp-in.l.google.com[173.194.67.26]:25: subject_CN=aspmx.l.google.com, issuer_CN=Google Internet Authority G2, fingerprint 88:C0:85:C8:CB:96:29:8F:4E:15:11:80:C5:9A:89:0D, pkey_fingerprint=E0:32:29:21:69:38:EA:F9:B6:0C:F6:BD:86:12:16:B9
postfix/smtp[27198]: Trusted TLS connection established to gmail-smtp-in.l.google.com[173.194.67.26]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
postfix/smtp[27198]: DE6D0403EB: Server certificate not verified
Existe uma maneira de depurar o cliente SMTP no Postfix em execução no primeiro plano? Todo o material de depuração parece estar relacionado ao processo do smtpd. : - (
Outra configuração relevante:
# postconf -n | grep -E "^(smtp_|tls_)"
smtp_tls_CAfile = /usr/local/share/ca-certificates/Gert_van_Dijk_Root_CA_2014.crt
smtp_tls_security_level = secure
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
tls_append_default_CA = yes
# /etc/postfix/master.cf:
tlsmgr unix - - n 1000? 1 tlsmgr
smtp unix - - n - - smtp -v