Postfix STARTTLS somente na porta 25

4

Eu quero ativar o STARTTLS na porta 25, mas, por razões desconhecidas, ele só funciona na porta 465.

master.cf:

smtp      inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtp
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
#submission inet n       -       -       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       -       -       -       smtpd
#  -o syslog_name=postfix/smtps
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=no
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

main.cf:

smtp_tls_loglevel = 1
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname
smtpd_recipient_limit = 25
smtpd_tls_CAfile = /root/chain.pem
smtpd_tls_auth_only = no
smtpd_tls_cert_file = /root/cert.pem
smtpd_tls_key_file = /root/key.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
tls_random_prng_update_period = 3600s
tls_random_source = dev:/dev/urandom

Agora, quando tento verificar o certificado com openssl s_client -connect hostname:25 , recebo este erro:

CONNECTED(00000003)
write:errno=104
no peer certificate available
No client certificate CA names sent
SSL handshake has read 0 bytes and written 308 bytes

Na porta 465 tudo funciona bem, então o certificado e a cadeia CA estão corretos.

O log diz:

postfix/smtp/smtpd[2623]: SSL_accept error
postfix/smtp/smtpd[2623]: warning: TLS library problem: 2623:error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol:s23_srvr.c:649:

A ajuda é muito apreciada!

    
por JohnnyFromBF 19.03.2015 / 16:38

1 resposta

9

SMTPS significa SMTP sobre TLS, como com HTTPS. Portanto, primeiro, uma conexão TLS é estabelecida (sem fallback) e, em seguida, o STMP é iniciado. Assim como ninguém espera HTTPS na porta HTTP 80, você não deve esperar que qualquer pessoa que se conecte ao seu serviço STMP envie solicitações TLS. Assim, todas as conexões com o servidor na porta 25 provavelmente falharão, se você aplicar o TLS!

O STARTTLS torna a criptografia opcional. Primeiro, uma conexão SMTP normal e não criptografada é estabelecida e, em seguida, o Servidor anuncia que pode atualizar para o STARTTLS (usando a chamada extensão STMP). Se o servidor também suportar STARTTLS (e estiver ativado para uso), o cliente solicitará a atualização para o TLS.

SMTPS (SMTP sobre TLS) é ativado no Postfix via smtpd_tls_wrappermode=yes , você define isso para o serviço smtp, portanto, na porta 25. Como foi escrito acima, isso é não recomendado.

Eu quero citar partes do documento Bettercrypto sobre o endurecimento de criptografia aplicada nesta questão para master.cf e main.cf . Você também pode consultá-lo, pois você provavelmente tem algumas configurações em main.cf que estão atrapalhando a configuração adequada do uso de TLS.

main.cf :

# enable opportunistic TLS support in the SMTP server and client
smtpd_tls_security_level = may
smtp_tls_security_level = may
# if you have authentication enabled, only offer it after STARTTLS
smtpd_tls_auth_only = yes

master.cf :

smtp      inet  n       -       -       -       -       smtpd
submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt

Não definimos nada de novo para o TLS na porta 25, pois os padrões em main.cf são tudo o que precisamos.

    
por 21.03.2015 / 09:04