01 - Protocolo Simples
video: https://youtu.be/... no frontmatter da nota.Protocolo Simples (Simple Mail Transfer Protocol)
O SMTP (Simple Mail Transfer Protocol) é o protocolo padrão de facto para a transferência de correio eletrônico através das redes IP. Apesar do termo "Simples" em seu nome, a evolução do protocolo desde a sua concepção em 1982 reflete a própria evolução da Internet, passando de um sistema de confiança mútua entre servidores acadêmicos para uma infraestrutura crítica que exige camadas massivas de autenticação e criptografia.
1. Por que "Simples"? — O Contexto Histórico
O adjetivo "Simple" no nome SMTP é relativo e histórico. Na década de 1980, existiam protocolos de e-mail muito mais complexos, notadamente o X.400 (definido pelo ITU-T e ISO), que era uma alternativa "completa e rigorosa" ao SMTP.
Comparação com X.400
| Característica | SMTP (RFC 821) | X.400 (CCITT 1984) |
|---|---|---|
| Origem | IETF, comunidade de pesquisa | ITU-T/ISO, organismos formais |
| Modelo | Texto plano, comandos ASCII | Binário, ASN.1, BER encoding |
| Estrutura | Plana, descentralizada | Hierárquica rígida (MTA, MTA) |
| Endereço | user@domain (DNS) | /C=BR/ADMD=.../PRMD=.../O=.../ |
| Extensibilidade | Headers opcionais livres | Esquema fixo com OIDs |
| Tamanho típico msg | Pequeno (texto) | Verboso ( envelopes binários) |
| Implementação | Dias | Meses |
| Adoção | Massiva (Internet) | Setores governamentais isolados |
O X.400 tinha vantagens teóricas (recibos de entrega nativos, controle de conteúdo avançado), mas sua complexidade o tornou inviável para implementações amplas. O SMTP venceu pela simplicidade técnica: era fácil de implementar, fácil de depurar com telnet, fácil de estender.
Outras Alternativas Históricas
- UUCP (Unix-to-Unix Copy): Sistema de "store-and-forward" para links intermitentes (discados). Endereços no formato
host!user. Ainda usado em redes FidoNet e BBS. - DECnet MAIL: Sistema da Digital Equipment Corporation para VMS.
- Banyan VINES: Sistema proprietário com directory service integrado.
- Microsoft Mail / cc:Mail: Sistemas de e-mail corporativo dos anos 1990, com gateways para SMTP.
Todos foram substituídos pelo SMTP nos anos 1990 com a popularização da Internet.
2. Fundamentos Históricos e Evolução (RFC 821 a RFC 5321)
O SMTP foi originalmente padronizado na RFC 821 por Jon Postel em agosto de 1982. O objetivo era criar um protocolo de transporte que fosse independente do subsistema de transmissão, exigindo apenas um canal de fluxo de dados ordenado e confiável (tipicamente o TCP).
Linha do Tempo das RFCs
| Ano | RFC | Marco |
|---|---|---|
| 1982 | 821 | SMTP original (Postel) |
| 1982 | 822 | Formato da mensagem (ARPA Internet Text) |
| 1993 | 1425 | SMTP Service Extensions (ESMTP) |
| 1995 | 1869 | ESMTP consolidado |
| 2001 | 2821 | Atualização completa do SMTP |
| 2008 | 5321 | SMTP moderno (atual) |
| 2008 | 5322 | Formato da mensagem moderno (substitui 822) |
Com o tempo, a necessidade de suportar caracteres não-ASCII, anexos e segurança levou à criação das Extensões de Serviço (ESMTP), padronizadas atualmente na RFC 5321. Esta RFC não apenas define o transporte, mas estabelece as regras de etiqueta para o diálogo entre o Cliente SMTP (emissor) e o Servidor SMTP (receptor).
A Filosofia do "Store-and-Forward"
O projeto técnico do SMTP é baseado no modelo de Armazenamento e Encaminhamento:
- O cliente submete a mensagem a um servidor local.
- O servidor armazena a mensagem em uma fila (Mail Queue).
- O servidor tenta, de forma iterativa, entregar a mensagem ao próximo salto ou destino final.
- Se o destino estiver offline, o protocolo prevê o armazenamento temporário por dias antes da desistência final (típico: 5 dias, configurável).
3. Arquitetura Técnica e Modelo de Comunicação
O SMTP opera na Camada de Aplicação (Camada 7 do modelo OSI) e utiliza o TCP na camada de transporte. A escolha do TCP é vital, pois a perda de um único bit no corpo da mensagem ou no cabeçalho poderia corromper a integridade do e-mail ou impedir o roteamento correto.
Portas SMTP Padronizadas
| Porta | Uso | RFC |
|---|---|---|
| 25 | MTA-to-MTA (relay entre servidores) | RFC 5321 |
| 465 | SMTPS (SMTP implícito sobre TLS) | Histórico, ainda usado |
| 587 | Submission (MUA → MSA com autenticação) | RFC 6409 |
| 2525 | Alternativa não-padrão (alguns provedores) | - |
O Diálogo Baseado em Texto
Diferente de protocolos binários modernos (como HTTP/2), o SMTP clássico é estritamente baseado em texto plano e codificação ASCII de 7 bits. Cada comando enviado pelo cliente recebe uma resposta numérica de 3 dígitos acompanhada de um texto explicativo.
Exemplo de Diálogo em Nível de Pacote:
Cliente: EHLO emissor.com(Sinaliza suporte a extensões)Servidor: 250-mail.receptor.com Hello [IP](Responde com a lista de capacidades: STARTTLS, SIZE, AUTH)
Estados da Transação SMTP
Uma sessão SMTP passa por estados bem definidos:
- Estado de Conexão: Estabelecimento do Handshake TCP.
- Estado de Identificação: Saudação e negociação de capacidades.
- Estado de Transação de Correio: O remetente e o destinatário são definidos.
- Estado de Transferência de Dados: Onde o corpo da mensagem é injetado.
- Estado de Encerramento: Finalização da sessão.
4. Implicações de Segurança e Ataques Modernos
No design original de 1982, o SMTP não possuía mecanismos de autenticação. Qualquer pessoa poderia se conectar a um servidor e fingir ser qualquer remetente. Essa lacuna de design deu origem aos maiores desafios de segurança da rede hoje.
Open Relay (Relays Abertos)
Um servidor mal configurado que aceita e encaminha e-mails de qualquer origem para qualquer destino. Estes são alvos primários de botnets de SPAM. Hoje, a configuração segura exige autenticação para envio externo e aceitação apenas de IPs confiáveis para relay entre MTAs.
Mail Spoofing
A falsificação do comando MAIL FROM no envelope SMTP, permitindo ataques de Spear Phishing. Mitigado hoje por:
- SPF (Sender Policy Framework, RFC 7208): Lista em DNS dos IPs autorizados a enviar pelo domínio.
- DKIM (DomainKeys Identified Mail, RFC 6376): Assinatura criptográfica no header.
- DMARC (RFC 7489): Política que alinha SPF+DKIM com o domínio do From:.
SMTP Smuggling
Uma vulnerabilidade técnica avançada descoberta recentemente envolve a discrepância em como diferentes servidores interpretam a sequência de fim de dados (<CRLF>.<CRLF>). Um atacante pode "contrabandear" uma segunda mensagem dentro de uma conexão legítima, burlando filtros de segurança e fazendo com que a mensagem falsa pareça ter sido enviada por um servidor autorizado.
Defesas e Hardening
Para tornar o "Protocolo Simples" em um meio seguro, a comunidade Cyber utiliza:
- STARTTLS (RFC 3207): Comando que eleva uma conexão de texto plano para uma conexão criptografada (TLS) dinamicamente.
- SMTP-AUTH (RFC 4954): Exige que o cliente prove sua identidade antes de permitir o envio.
- MTA-STS (RFC 8461): Política publicada em DNS que força TLS no transporte MTA-to-MTA.
- TLS-RPT (RFC 8460): Relatórios de falhas TLS para monitoramento.
5. Laboratório e Diagnóstico
Um profissional de Cyber Segurança deve ser capaz de auditar um servidor SMTP sem o uso de clientes gráficos. O uso do Telnet ou Netcat (nc) continua sendo a forma mais pura de testar a conformidade de um servidor.
Comando de Teste Manual:
telnet mx.alvo.com 25
HELO meu.dominio.com
MAIL FROM:<auditor@meu.dominio.com>
RCPT TO:<vitima@alvo.com>
DATA
Subject: Teste de Auditoria de Seguranca
Conteudo tecnico aprofundado aqui.
.
QUIT
Em auditorias modernas, sempre utilize swaks (Swiss Army Knife for SMTP). É uma ferramenta de linha de comando extremamente poderosa que permite testar autenticação, TLS e injeção de cabeçalhos de forma automatizada.
swaks --to vitima@alvo.com --from auditor@auditor.com \
--server mx.alvo.com --auth --auth-user auditor --auth-password '***' \
-tls --header "X-Test: auditoria"
6. Limites e Restrições de Design
- Tamanho da Mensagem: O limite de tamanho não é definido pelo protocolo em si, mas negociado via extensão
SIZE. O padrão de mercado é 10-25 MB. - Latência de Entrega: O SMTP não é um protocolo de mensagens instantâneas. A "entrega imediata" é um efeito da alta largura de banda atual, mas não uma garantia do protocolo.
- Codificação de Binários: Como o protocolo é de 7 bits, arquivos binários precisam ser convertidos para Base64 (RFC 2045) via extensões MIME, o que aumenta o tamanho do e-mail em aproximadamente 33%.
- Mensagem única para múltiplos destinatários: O SMTP suporta múltiplos
RCPT TOpor transação, mas provedores como Gmail limitam para evitar abuso (típico: 100 destinatários por mensagem).
7. Conclusão: Simplicidade que Perdurou
O SMTP é uma das poucas tecnologias da Internet original que permanece essencialmente inalterada em sua filosofia: texto plano, comandos legíveis por humanos, store-and-forward. As "extensões" que adicionamos (ESMTP, STARTTLS, SPF, DKIM, DMARC) são camadas que preservam a base original. O termo "Simples" hoje é irônico, mas ainda precisa: o protocolo continua mais simples que qualquer alternativa já proposta, e essa simplicidade é a razão pela qual ele sobreviveu a 40 anos de evolução da Internet.
| Atributo | Valor |
|---|---|
| RFC atual | 5321 (2008) |
| Porta padrão | 25 (relay), 587 (submission) |
| Transporte | TCP |
| Codificação | ASCII 7-bit (com MIME para binários) |
| Modelo | Store-and-Forward |
| Handshake | EHLO/HELO |
| Término de dados | <CRLF>.<CRLF> |
| Extensões modernas | STARTTLS, AUTH, SIZE, PIPELINING |