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

02 - Envio de E-mails

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

Envio de E-mails (Processo SMTP)

O processo de Envio de Mensagens no ecossistema SMTP é uma operação sequencial de transferência de responsabilidade sobre um objeto de dados (o e-mail). Diferente de protocolos de "Pull" (como HTTP), o SMTP é fundamentalmente um protocolo de "Push", onde o emissor inicia a ação de empurrar a informação para o receptor assim que ela está disponível. A especificação de referência é a RFC 5321 (SMTP) complementada pela RFC 5322 (formato da mensagem) e RFC 4409 (submissão).


1. O Fluxo de Saída: Do MUA ao Primeiro Salto

Tudo começa no MUA (Mail User Agent). Tecnicamente, o "envio" para o usuário é o ato de submeter a mensagem ao seu servidor de confiança.

A Fase de Submissão (RFC 4409)

Em vez de tentar entregar o e-mail diretamente para o destinatário final, o MUA utiliza o protocolo de submissão para falar com o seu MSA (Mail Submission Agent) local.

  • Porta Tecnológica: Geralmente utiliza-se a porta 587, que exige autenticação.
  • Porta Alternativa: A porta 465 (SMTPS) usa TLS implícito desde o início da conexão TCP.
  • Validação Imediata: O servidor de submissão verifica se o remetente tem permissão para enviar e-mails (evitando que máquinas sequestradas enviem SPAM) e se o formato da mensagem respeita as políticas da organização (tamanho máximo de anexo, domínios permitidos).

2. A Mecânica do Transporte entre Servidores (Relay)

Uma vez que o servidor local aceitou a mensagem, ele assume o papel de MTA (Mail Transfer Agent) Emissor. O "Envio" agora torna-se um processo de Relay (Retransmissão).

Resolução de Caminho via DNS MX

Antes de enviar, o MTA precisa descobrir "para onde" enviar:
1. O MTA analisa o domínio do destinatário (ex: @alvo.com).
2. Realiza uma query DNS do tipo MX (Mail Exchanger).
3. O DNS retorna uma lista de servidores ordenados por prioridade (menor número = maior prioridade).
4. O MTA emissor tenta estabelecer uma conexão TCP na porta 25 com o MX de maior prioridade.

Exemplo Prático de Resolução MX

# Consultando registros MX do dominio destino
dig MX gmail.com +short
# Saida tipica:
# 5 gmail-smtp-in.l.google.com.
# 10 alt1.gmail-smtp-in.l.google.com.
# 20 alt2.gmail-smtp-in.l.google.com.
# 30 alt3.gmail-smtp-in.l.google.com.
# 40 alt4.gmail-smtp-in.l.google.com.

Cada MX com prioridade crescente funciona como fallback. O MTA só tenta o próximo se o anterior estiver indisponível.


3. A Máquina de Estados do Envio (SMTP Commands)

O envio propriamente dito ocorre através de um diálogo síncrono e sequencial. Cada comando do cliente recebe uma resposta de três dígitos do servidor.

Comando SMTP Função Resposta Típica
EHLO Saudação estendida + lista de extensões 250-SIZE 35882577 / 250-STARTTLS / 250-AUTH LOGIN PLAIN
STARTTLS Promove conexão para TLS 220 Ready to start TLS
AUTH Autentica o cliente 235 2.7.0 Authentication successful
MAIL FROM: Especifica remetente do envelope 250 2.1.0 Ok
RCPT TO: Especifica destinatário do envelope 250 2.1.5 Ok
DATA Inicia conteúdo da mensagem 354 End data with <CR><LF>.<CR><LF>
RSET Aborta transação atual 250 2.0.0 Ok
NOOP Ping do protocolo (mantém conexão) 250 2.0.0 Ok
QUIT Encerra sessão TCP 221 2.0.0 Bye

Estrutura de Resposta SMTP

  • 1xx: Positivo provisório (raro).
  • 2xx: Positivo definitivo.
  • 3xx: Positivo intermediário (aguardando dados).
  • 4xx: Negativo provisório (tente depois).
  • 5xx: Negativo permanente (não tente novamente).

4. Gestão de Falhas e Confiabilidade no Envio

O SMTP é projetado para ser resiliente a falhas temporárias na rede. O sistema de envio classifica erros em duas grandes categorias técnicas:

Erros Temporários (Classe 4xx)

Se o servidor receptor estiver ocupado, com disco cheio ou passando por uma falha momentânea, ele responde com um código da classe 400:
- 421 4.4.2 Connection timed out
- 450 4.7.1 Greylisted, tente em 5 minutos
- 451 4.3.0 Local error in processing
- 452 4.2.2 Mailbox full

Comportamento do Emissor: O MTA de origem mantém o e-mail na Mail Queue e agenda uma nova tentativa. As tentativas ocorrem em intervalos crescentes (5 min, 15 min, 1h, 4h...) por até 5 dias (configurável no Postfix via maximal_queue_lifetime).

Erros Permanentes (Classe 5xx)

Se o destinatário não existe ou o domínio é inválido, o código retornado é da classe 500:
- 550 5.1.1 User unknown
- 551 5.7.1 Relay access denied
- 552 5.3.4 Message too big
- 553 5.1.8 Sender address rejected
- 554 5.7.1 Spam detected

Comportamento do Emissor: O MTA remove a mensagem da fila imediatamente e gera um DSN (Delivery Status Notification), comumente chamado de "Bounce", avisando o remetente original sobre a falha.


5. Diferenças Cruciais entre SMTP e Protocolos de Leitura

É um erro comum para iniciantes em redes confundir o envio com o recebimento.

Característica SMTP (Envio) POP3 (Leitura) IMAP (Leitura)
Direção do dado Push (empurra) Pull (puxa) Pull (puxa)
Porta padrão 25 (MTA), 587 (MSA), 465 (SMTPS) 110 / 995 143 / 993
RFC de referência RFC 5321 RFC 1939 RFC 9051
Persistência Apaga do servidor após entrega Apaga após baixar (default) Mantém no servidor
Estado Stateless entre transações Stateful durante sessão Stateful + sincronizado

6. Análise de Performance e Escalabilidade

Em infraestruturas de alta volumetria (como Provedores de E-mail em Nuvem), o envio de e-mails não é um processo linear:

  • Paralelismo: MTAs modernos abrem centenas de conexões SMTP simultâneas para diferentes destinos.
  • Rate Limiting: Servidores de destino impõem limites de envio por IP/hora. O MTA emissor deve ser "inteligente" para não ser bloqueado, gerenciando o ritmo de envio de acordo com a reputação do IP.
  • Conexões Persistentes: Se um servidor tem mil e-mails para o Gmail, ele não abre e fecha mil conexões TCP. Ele utiliza o mesmo canal para enviar vários "envelopes" em sequência, otimizando o overhead do handshake TCP e TLS.
  • Connection Reuse (RFC 1854): Permite múltiplas transações MAIL FROM/RCPT TO/DATA em uma mesma conexão TCP.

7. Autenticação e Reputação do Remetente

Para evitar que o e-mail enviado seja marcado como SPAM pelo destinatário, três mecanismos de autenticação de domínio são obrigatórios:

Mecanismo RFC Função
SPF RFC 7208 Lista IPs autorizados a enviar pelo domínio
DKIM RFC 6376 Assinatura criptográfica do corpo da mensagem
DMARC RFC 7489 Política de alinhamento SPF+DKIM e relatórios
# Verificando configuracoes de autenticacao de um dominio
dig TXT _dmarc.empresa.com +short
dig TXT empresa.com +short | grep -i spf
dig TXT selector._domainkey.empresa.com +short

8. Perspectiva de Cyber Segurança no Envio

Do ponto de vista de um atacante ou auditor:
- Mail Bombing: Saturar a capacidade de envio de um MTA legítimo usando-o como relay aberto.
- Injeção de Cabeçalhos (Header Injection): Manipular os campos From:, To: e Subject: durante o comando DATA para enganar sistemas de filtro. MTA deve sanitizar entradas CRLF.
- Evasão de Sandbox: Técnicas para enviar e-mails maliciosos que só "armam" após passarem pela verificação do MTA gateway (ex: anexos que mudam de comportamento em ambiente de produção).
- Open Relay: Servidor configurado para aceitar relay de qualquer origem é o vetor mais comum de abuso. Deve aceitar relay somente de clientes autenticados ou de hosts em mynetworks.


9. Conclusão Técnica

O envio de e-mails, embora pareça simples ao usuário, é uma coreografia de múltiplos atores (MUA, MSA, MTA, MDA) que se comunicam por meio de estados bem definidos. A resiliência do SMTP vem justamente da sua máquina de estados tolerante a falhas temporárias. Para o administrador de redes, dominar o fluxo de envio significa configurar corretamente autenticação (SPF/DKIM/DMARC), monitorar filas de saída, observar reputação de IP e isolar o servidor contra relay aberto. É a base sobre a qual toda comunicação eletrônica corporativa se sustenta há mais de quatro décadas.