técnico · resposta com fontes
STARTTLS: comunicação SMTP segura com TLS oportunista
O STARTTLS é uma extensão de serviço SMTP que permite transformar uma conexão insegura em uma conexão segura com TLS. Ele permite que o cliente e o servidor negociem um canal seguro em uma única porta, garantindo que o conteúdo dos e-mails e as credenciais de autenticação sejam criptografados em trânsito.
Funcionamento técnico
O processo começa com um handshake SMTP padrão em texto simples. O servidor anuncia o suporte a STARTTLS na resposta ao EHLO. Em seguida, o cliente envia o comando STARTTLS. Se o servidor aceitar, as duas partes fazem um handshake TLS para estabelecer a criptografia. Com a camada segura ativa, a sessão continua com os comandos SMTP padrão, mas todos os dados seguintes são criptografados.
Importância para remetentes
O STARTTLS impede a espionagem e ataques man-in-the-middle ao criptografar o caminho de comunicação entre os servidores de e-mail. Sem ele, o tráfego SMTP trafega em texto claro, expondo o corpo de mensagens sensíveis e as credenciais de login a qualquer pessoa que monitore o caminho da rede. A maioria dos servidores receptores modernos prioriza ou exige conexões criptografadas para aceitar e-mails.
Considerações operacionais
Um risco crítico é o ataque de downgrade, em que um atacante remove o comando STARTTLS da resposta do servidor, forçando o cliente a enviar o e-mail em texto simples. Para evitar isso, os administradores podem implementar MTA-STS ou configurar TLS obrigatório. As ferramentas gratuitas do SendHQ (https://sendhq.cc/tools) ajudam a verificar a configuração geral do seu domínio para uma entrega melhor.
Erros comuns de implementação
Um erro frequente é confundir STARTTLS com TLS implícito. O STARTTLS começa em uma porta de texto simples (como a 587) e faz o upgrade, enquanto o TLS implícito (porta 465) exige um handshake seguro antes de qualquer comando SMTP. Configurar a porta errada ou não fornecer um certificado SSL válido causa falhas de conexão ou o fallback para uma transmissão insegura.
Exemplo concreto
Um cliente se conecta à porta 587 e envia EHLO. O servidor responde com 250-STARTTLS. O cliente envia STARTTLS. O servidor responde 220 Ready to start TLS. O cliente e o servidor negociam as chaves e criptografam a sessão. Em seguida, o cliente envia AUTH LOGIN para fornecer as credenciais com segurança, sem expô-las na rede.
Perguntas que as equipes fazem
STARTTLS é a mesma coisa que SSL/TLS?
O STARTTLS é um comando usado para iniciar uma sessão TLS em uma conexão existente em texto simples, enquanto SSL/TLS se refere aos próprios protocolos de criptografia por trás dele.
O que acontece se o STARTTLS falhar?
Por padrão, a maioria dos servidores usa TLS oportunista, ou seja, volta para texto simples se o handshake falhar, a menos que o TLS obrigatório esteja configurado explicitamente.
Qual porta costuma ser usada para STARTTLS?
A porta 587 é a porta de envio (submission) padrão para STARTTLS, embora ele também seja muito usado na porta 25 para relay entre servidores.
Fontes primárias
- RFC 3207: SMTP Service Extension for Secure SMTP over Transport Layer Security — RFC Editor (em inglês)
- RFC 8314: Cleartext Considerations for Post-SMTP Email Protocols — RFC Editor (em inglês)