O comando DATA é o ponto de virada técnica em uma transação SMTP. Diferente dos comandos anteriores (EHLO, MAIL, RCPT), que são atômicos e curtos, o comando DATA sinaliza ao servidor que o cliente está pronto para iniciar a transferência em massa do conteúdo real do e-mail. Este estágio é onde ocorrem os maiores desafios de integridade de dados e onde as defesas de filtragem de conteúdo (Anti-Spam e Anti-Malware) realizam o seu processamento intensivo.


1. A Transição de Estado e o Código 354 (RFC 5321)

Quando o cliente envia DATA, o servidor SMTP entra no modo de recepção de fluxo.
- Resposta Intermediária: O servidor deve responder com o código 354 Start mail input; end with <CRLF>.<CRLF>.
- Lógica Técnica: A partir deste código, o servidor deixa de interpretar cada linha como um comando individual e passa a ler tudo como um “blob” de dados bruto até encontrar a sequência de término.


2. O Mecanismo de Término e o “Dot-Stuffing”

Como o SMTP sinaliza o fim de um e-mail através de um ponto final sozinho em uma linha (\r\n.\r\n), surge o desafio técnico da transparência: E se o corpo real do e-mail contiver uma linha com apenas um ponto?

Transparência do Protocolo (RFC 5321, Capítulo 4.5.2)

Para evitar que uma mensagem seja cortada prematuramente, o cliente aplica o “Dot-Stuffing”:
1. No Cliente: Antes de enviar cada linha, o cliente verifica se o primeiro caractere é um ponto. Se for, ele insere um segundo ponto (ex: .Texto vira ..Texto).
2. No Servidor: Ao receber uma linha que começa com um ponto, o servidor verifica o próximo caractere. Se for outro ponto, ele o remove, restaurando a mensagem original. Se for apenas um ponto seguido de um fim de linha, o servidor sabe que a mensagem terminou.


3. Anatomia da Carga Útil (Headers vs Body)

Dentro do fluxo de dados do comando DATA, a mensagem é dividida em dois blocos técnicos principais, separados obrigatoriamente por uma linha em branco (CRLF CRLF).

  • Bloco de Cabeçalhos (RFC 5322): Contém metadados como Subject, From, To, Date, MIME-Version. Estes campos são processados pelo MUA do destinatário para exibição.
  • Bloco do Corpo (Body): Contém o texto da mensagem e os blocos MIME codificados em Base64 ou Quoted-Printable.

4. Perspectiva de Cyber Security: Ataques no Estágio DATA

Para um profissional de Cyber Security, o comando DATA é o campo de batalha mais complexo, pois os dados aqui não são estruturados como os comandos.

SMTP Smuggling (Contrabando de SMTP)

Esta vulnerabilidade moderna explora a forma como diferentes MTAs interpretam o fim da mensagem.
- O Ataque: Um atacante usa sequências não padronizadas (ex: <LF>.<LF> em vez de <CRLF>.<CRLF>). Se um gateway de segurança achar que a mensagem continua, mas o servidor de destino achar que ela terminou, o atacante pode “contrabandear” uma segunda mensagem falsa que não passará pelos filtros do gateway.

Header Injection (Injeção de Cabeçalhos)

Ocorre quando o cliente insere deliberadamente sequências de fim de linha e novos cabeçalhos no corpo da mensagem. Isso pode enganar o servidor receptor, fazendo-o acreditar que campos como o Reply-To: ou Bcc: foram gerados pelo sistema legítimo, facilitando ataques de Spear Phishing.

Data Loss Prevention (DLP) no Voo

MTAs modernos realizam o “Deep Content Inspection” durante o recebimento do DATA. O servidor lê o fluxo de bytes, reconstrói anexos em tempo real e os submete a scanners de DLP e antivírus. Se algo proibido for detectado, o servidor pode abortar a conexão imediatamente e retornar um erro 554 Message Rejected.


5. Códigos de Erro e Timeouts Técnicos

O comando DATA possui tempos de espera (timeouts) muito longos definidos nas RFCs para suportar conexões lentas:
- Timeouts: O servidor deve esperar pelo menos 3 minutos pelo início do DATA e 10 minutos para o recebimento do bloco completo.
- Erro 554 (Transaction Failed): O comando DATA foi aceito, mas algo deu errado no processamento final (ex: falha de disco ou falha na validação DKIM de saída).
- Erro 552 (Exceeded Size): O tamanho total dos dados excedeu o limite do servidor informado no SIZE anteriormente.


6. Laboratório Prático: Auditoria de Término de Dados

Para testar como o seu servidor lida com o término de dados e o dot-stuffing:

# Teste de transao DATA
telnet mx.alvo.com 25
HELO emissor.com
MAIL FROM:<remetente@emissor.com>
RCPT TO:<destino@alvo.com>
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: Teste de Dot-Stuffing
Esta e uma linha de teste.
.. (Linha com dois pontos para testar o stuffing)
.
# Se o servidor responder 250 OK, a transacao foi completada com sucesso.

O uso da ferramenta tshark (Wireshark em linha de comando) permite ver o fluxo real de bytes e confirmar se a aplicação cliente está fazendo o stuffing corretamente:
tshark -i eth0 -Y "smtp" -T fields -e smtp.data.fragment


7. Conclusão da Transferência de Conteúdo

O sucesso do comando DATA é o momento em que o servidor recupera o controle da sessão SMTP. Ao responder 250 OK, o servidor declara que a mensagem está agora em posse firme da sua infraestrutura e que os dados foram recebidos de forma íntegra. Este é o estágio de maior consumo de recursos de rede em um servidor de e-mail e sua correta implementação é o pilar da confiabilidade do sistema de correio global.