02 - MAIL (Indica o Remetente)
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 comandosMAIL FROMseguidos sem um comandoRSETouDATAintermediá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:
- Extrai o domínio do remetente (
dominio.com). - Realiza uma consulta DNS TXT buscando um registro de SPF.
- Compara o IP de onde a conexão SMTP partiu com a lista de IPs permitidos no registro SPF.
- 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âmetroSIZEexcedeu 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.