Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

02 - MAIL (Indica o Remetente)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

MAIL FROM (Indica o Remetente)

O comando MAIL FROM é o responsável por iniciar formalmente uma transação de correio eletrônico dentro de uma sessão SMTP já estabelecida. Tecnicamente, este comando define o que chamamos de Remetente do Envelope (Envelope Sender) ou Reverse-Path, uma identidade que é primordial para o roteamento e, principalmente, para o tratamento de erros em toda a malha de e-mail global.


1. Fundamentos Técnicos da Transação (RFC 5321)

O comando MAIL FROM não apenas informa quem enviou o e-mail, mas atua como um "gatilho" para o servidor alocar recursos de memória e processamento para os dados que virão.

Sintaxe e o Reverse-Path

A sintaxe correta deve incluir o endereço entre parênteses angulares: MAIL FROM:<usuario@exemplo.com>.

  • A Função do Reverse-Path: Este endereço é armazenado pelo servidor para que, caso a entrega final falhe, o servidor saiba exatamente para onde enviar o relatório de erro (Bounce).
  • Início Único de Transação: Em uma mesma conexão TCP, o cliente pode enviar múltiplos e-mails, mas cada e-mail deve começar com um novo comando MAIL FROM. Se o cliente tentar enviar dois comandos MAIL FROM seguidos sem um comando RSET ou DATA intermediário, o servidor retornará um erro de sequência.

Estrutura ABNF (RFC 5321)

mail         = "MAIL FROM:" Reverse-path [SP "mail-parameters"] CRLF
Reverse-path = "<" [ Path ] ">"
Path         = Mailbox
Mailbox      = Local-part "@" Domain

Estados da Transação

Estado Anterior Comando Recebido Resultado
Conexão estabelecida MAIL FROM Inicia transação, aloca buffer
Após MAIL FROM aceito RCPT TO Adiciona destinatário
Após RCPT TO aceito DATA Inicia transmissão do corpo
Após DATA ou erro MAIL FROM Nova transação (sem RSET necessário)
Após MAIL FROM aceito MAIL FROM Erro 503 Bad sequence of commands

2. O Caso Especial do Remetente Nulo (Null Reverse-Path)

Uma das características mais importantes (e abusadas) do SMTP é o remetente vazio.

  • Sintaxe: MAIL FROM:<>
  • Uso Legítimo: Este formato é reservado exclusivamente para o envio de Mensagens de Erro (Bounces) e Recibos de Entrega.
  • O Objetivo Técnico: Evitar o temido "Mail Loop". Se o servidor A enviar um erro ao servidor B usando um remetente nulo, o servidor B (ao falhar na entrega desse erro) saberá que não deve responder com outro erro, pois o remetente é vazio.

Cenário de Loop sem Remetente Nulo

Passo Ação
1 Usuário envia e-mail para inexistente@alvo.com
2 Servidor origem retorna bounce para o remetente
3 O próprio remetente não existe mais
4 Servidor origem tenta bounce do bounce
5 Loop infinito esgota recursos

3. Extensões ESMTP no Comando MAIL

Com a evolução para o SMTP Estendido, o comando MAIL FROM passou a carregar parâmetros vitais de negociação.

  • SIZE=[bytes]: Permite ao cliente declarar o tamanho total da mensagem antes mesmo de enviá-la. Se o servidor tiver um limite inferior ao declarado, ele pode rejeitar a mensagem imediatamente (código 552), economizando largura de banda.
  • BODY=[7BIT|8BITMIME]: Indica se o corpo da mensagem contém apenas caracteres ASCII de 7 bits ou se utiliza a extensão de 8 bits.
  • RET=[FULL|HDRS]: Instrução do cliente sobre como o servidor deve retornar a mensagem original em caso de falha (Corpo completo ou apenas cabeçalhos).
  • ENVID=[identificador]: Um ID de envelope único usado para rastrear a mensagem através de múltiplos saltos.
  • AUTH=<mechanism> <token>: Permite repassar identidade autenticada em relay encadeado (raramente usado por segurança).
  • SMTPUTF8: Habilita suporte a endereços Unicode (EAI - Email Address Internationalization).

Tabela de Extensões e Suporte

Parâmetro RFC Função Suporte Típico
SIZE RFC 1870 Pré-declara de tamanho Universal
8BITMIME RFC 6152 Corpo 8-bit Amplo
SMTPUTF8 RFC 6531 Endereços i18n Limitado
DSN (RET/ENVID) RFC 3461 Notificação de entrega Limitado
AUTH RFC 4954 Repasse de auth Raro
REQUIRETLS RFC 8689 Força TLS no próximo salto Emergente

4. Perspectiva de Cyber Security: SPF e Spoofing

Para um analista de Cyber Security, o comando MAIL FROM é o ponto zero da validação de identidade.

Validação SPF (Sender Policy Framework)

Quando o servidor recebe o MAIL FROM:<usuario@dominio.com>, ele faz o seguinte:

  1. Extrai o domínio do remetente (dominio.com).
  2. Realiza uma consulta DNS TXT buscando um registro de SPF.
  3. Compara o IP de onde a conexão SMTP partiu com a lista de IPs permitidos no registro SPF.
  4. Se não houver autorização, o servidor pode rejeitar o comando imediatamente com um erro 550 SPF denial.

O Envelope vs O Cabeçalho "From:"

É fundamental distinguir o remetente do envelope (MAIL FROM) do remetente exibido no MUA do usuário (From: Header).

  • Ataque de Spoofing: Atacantes frequentemente usam no envelope um domínio que controle (para passar no SPF) e inserem no cabeçalho From: o e-mail de um banco ou CEO. Profissionais de segurança devem auditar ambos para identificar fraudes de engenharia social.
  • DMARC: Soluciona essa divergência exigindo alinhamento entre o domínio do envelope (SPF) e o domínio do cabeçalho From: (verificado via DKIM).

Tríade de Autenticação de E-mail

Mecanismo O que valida Como funciona
SPF IP do servidor Consulta DNS TXT no domínio do envelope
DKIM Assinatura do corpo Validação criptográfica via chave pública DNS
DMARC Alinhamento dos dois Política declarada no domínio do header From
ARC Cadeia de forwards Preserva resultados em encaminhamentos

5. Códigos de Erro e Diagnóstico

O servidor utiliza códigos específicos para responder a problemas no comando MAIL:

  • 501 Syntax error in parameters or arguments: O endereço de e-mail está malformado.
  • 552 Message size exceeds fixed maximum message size: O parâmetro SIZE excedeu o limite do servidor.
  • 451 Requested action aborted: local error in processing: O servidor teve uma falha temporária no banco de dados de usuários.
  • 550 Access denied: O servidor bloqueou este remetente específico ou o seu domínio.
  • 550 5.7.1 SPF check failed: Falha de política SPF.
  • 451 4.7.1 Greylisting ativo: Recusa temporária para forçar retentativa (defesa anti-spam).

Tabela de Códigos Comuns no MAIL FROM

Código Significado Ação do cliente
250 OK Aceito Prosseguir para RCPT TO
451 Falha temporária Retentar após backoff
452 Sem espaço/recursos Retentar depois
501 Sintaxe inválida Corrigir e reenviar
552 Excedeu tamanho Rejeição permanente
550 Acesso negado Rejeição permanente
530 Requer TLS Negociar STARTTLS

6. Laboratório Prático: Auditoria de Transação

Para auditar se o seu servidor aceita remetentes vazios ou valida corretamente o parâmetro SIZE:

# Teste manual de limite de tamanho
telnet mx.alvo.com 25
HELO emissor.com
MAIL FROM:<teste@emissor.com> SIZE=100000000
# Resposta esperada: 552 Message size exceeds limit

# Teste de remetente nulo
MAIL FROM:<>
# Resposta esperada: 250 OK (para bounces)

# Teste de sintaxe inválida
MAIL FROM:teste@emissor.com
# Resposta esperada: 501 Syntax error (sem os caracteres <>)

O uso da ferramenta swaks permite testar de forma granular o comportamento do servidor com diferentes e-mails e parâmetros:

# Testa SPF de um remetente spoofado
swaks --from "ceo@empresa.com" --to "alvo@empresa.com" --server mx.empresa.com

# Forca autenticacao e testa tamanho
swaks --auth --from usuario@empresa.com --to destino@alvo.com \
      --server smtp.empresa.com:587 --body "Teste de auditoria"

# Testa extensao REQUIRETLS
swaks --to destino@alvo.com --from rem@emissor.com \
      --server mx.alvo.com --server-options REQUIRETLS

Validação de SPF via Linha de Comando

# Consulta direta do registro SPF
dig TXT empresa.com +short | grep v=spf1

# Verifica interpretacao do SPF para um IP
python3 -m spf --ip 192.0.2.10 --sender usuario@empresa.com

7. Boas Práticas de Configuração

Prática Justificativa
Validar sintaxe estrita do endereço Reduz injeções e CRLF injection
Aplicar SPF obrigatório em domínios próprios Bloqueia spoofing
Requerer STARTTLS para submissão (porta 587) Privacidade da credencial
Limitar SIZE máximo a 25-50 MB Evita DoS via buffer esgotado
Validar DMARC com p=reject para domínios de marca Proteção máxima

8. Conclusão da Indicação do Remetente

A aceitação do comando MAIL FROM define o início da responsabilidade transacional do servidor SMTP para um e-mail específico. É o momento em que o servidor abre o "envelope virtual" para começar a receber as instruções de endereçamento. Uma validação rigorosa neste estágio é a forma mais eficaz de impedir a entrada de mensagens fraudulentas e o desperdício de recursos computacionais por ataques de negação de serviço. A combinação correta de validação SPF, controle de sintaxe, limites de tamanho e políticas de alinhamento DMARC constrói uma barreira técnica robusta que protege tanto o servidor quanto o ecossistema de e-mail global contra abuso sistemático.