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