Entendendo o SMTP – O protocolo por trás da entrega de e-mails

On maio 29, 2023
10min read
Diana Lepilkina Content Specialist @Mailtrap
This is a cover image for an article that explains SMTP Protocol in detail

O SMTP é um protocolo fundamental usado na comunicação via e-mail. Provavelmente, está por trás dos e-mails que enviamos e recebemos todos os dias. Embora seja um protocolo simples, ele envolve vários componentes e detalhes. 

Neste post, vamos dar uma olhada no SMTP e explorar seus principais recursos e funcionalidades.

O que é SMTP? 

SMTP ou Simple Mail Transfer Protocol é um protocolo de camada de aplicação que torna possível transferir e-mails entre diferentes servidores e redes de computadores. Ele faz isso definindo as regras da comunicação.

O modelo original foi introduzido em 1982. De acordo com a RFC 821, o usuário cria o pedido de conexão. Em resposta, o remetente-SMTP inicia uma conexão bidirecional com o receptor-SMTP. Em termos mais modernos, estes são o cliente SMTP e o servidor SMTP, respectivamente. O cliente SMTP e o servidor SMTP se comunicam com comandos e respostas (mais sobre isso logo mais), semelhante às conversas da vida real.

A RFC 821 também definiu o modelo para uso SMTP. Você pode ver o esquema na ilustração abaixo.

Fonte: RFC 821

Uma vez estabelecida a conexão, o cliente SMTP transferirá cabeçalhos, destinatários, mensagens corporais (incluindo anexos) e todos os dados para o servidor SMTP passo a passo. Quando a transmissão estiver concluída, a conexão será fechada. 

Por definição, o formato funcional do SMTP é quando os clientes SMTP suportam retransmissão, filas de e-mail e funções de endereço alternativo. Isso é o chamado de SMTP total. Se essas funções não forem suportadas, o SMTP não será totalmente compatível. Nesse caso, os RFCs relevantes recomendam o uso do protocolo de envio de mensagens. 

Tenha em mente que o SMTP só pode enviar mensagens simples, ou seja, texto simples sem anexos. Usamos um protocolo separado, Multipurpose Internet Mail Extensions, MIME (RFC 2045), para enviar anexos, mensagens que excedem os limites de caracteres impostos pelo SMTP, mensagens em idiomas diferentes do inglês e formatos HTML/CSS.

O MIME é um protocolo de extensão – ele aprimora os recursos do SMTP, mas não opera separado dele. A maioria dos serviços de e-mail modernos suporta MIME.

O que é o ESMTP?

ESMTP ou Extended Simple Mail Transfer Protocol foi introduzido pela primeira vez em 1995 no RFC 1869. O objetivo era criar uma estrutura unificada para todas as extensões futuras. As extensões visam adicionar funcionalidades que o SMTP não possui por padrão. RFC 5321 consolidado e obsoletos documentos anteriores.

O ESMTP usa um novo comando EHLO para iniciar a conexão. Também permite o uso de parâmetros adicionais nos comandos MAIL FROM e RCPT TO do SMTP. Como resultado, o ESMTP remove o limite de 512 caracteres para parâmetros adicionais e o deixa apenas para casos em que parâmetros adicionais não são definidos. 

Ambos ESMTP e SMTP são amplamente utilizados hoje em dia. Se o comando EHLO não for suportado, a conexão voltará para o SMTP e seu comando HELO. 

Por falar em extensões, devemos mencionar também a extensão SMTP-AUTH, que adiciona uma etapa de autenticação ao processo. Isto significa que o cliente de correio deve iniciar sessão no servidor utilizando o seu nome de usuário e senha. Embora a autenticação SMTP não possa proteger contra falsificação, é uma medida de segurança muito importante.

O que é SMTPS? 

SMTPS ou Simple Mail Transfer Protocol Secure é um método que protege o SMTP com a ajuda de protocolos de segurança da camada de transporte (TLS) ou Secure Sockets Layer (SSL). Essas camadas de segurança criptografam mensagens para evitar que spammers ou falsificadores visualizem o conteúdo dos e-mails.Embora o SSL ainda seja amplamente utilizado, o TLS (mais precisamente, sua versão 1.3) é considerado o protocolo mais seguro para criptografia de e-mail. Para mais informações sobre segurança SMTP, leia o nosso blog dedicado.

Types of SMTP

RFC 5321 diferencia entre quatro tipos de sistemas SMTP:

  • O SMTP original é o primeiro sistema que interage com a internet ao introduzir o e-mail;
  • O SMTP de entrega é o sistema que recebe e-mails da internet e os entrega aos destinatários;
  • Relé SMTP retransmite e-mails entre servidores SMTP ou MTAs (mais sobre o agente de transferência significado abaixo) sem modificar a mensagem de forma alguma;

Gateway SMTP ou SMTP gateway também transfere e-mails entre diferentes servidores, mas, ao contrário de retransmissão SMTP, é permitido transformar a mensagem, se necessário. Gateways SMTP são geralmente firewalls que reescrevem endereços ou servidores SMTP intermediários.

Infraestrutura SMTP 

Como vimos acima, os principais componentes do modelo SMTP são Usuário, Sender-SMTP (cliente SMTP) e Receiver-SMTP (servidor SMTP). No entanto, os agentes de correio também participam do processo de envio e recebimento de e-mails. Além disso, o modelo SMTP inclui retransmissão SMTP em cenários específicos. Vamos ver o que cada um deles significa e que função eles têm.

Servidor SMTP

O servidor SMTP é uma aplicação para enviar e-mails. Ele recebe mensagens eletrônicas de clientes de e-mail (Gmail, Yahoo! Apple Mail, AOL, etc.) e os transfere para outros servidores. Estes podem ser outros servidores SMTP ou um servidor de e-mail de entrada. O servidor de e-mail SMTP pode ser local ou baseado em nuvem. Um servidor SMTP local é uma boa opção para aqueles que não querem depender de servidores de terceiros. Por outro lado, um servidor SMTP hospedado na nuvem requer menos esforço e pode ser mais seguro.

Agentes de Mail

Existem quatro agentes principais: 

  • Mua (Mail User Agent) é o cliente de e-mail que mencionamos acima. É um aplicativo ou um site que você usa para enviar e receber mensagens de e-mail.
  •  O MSA (Mail Submission Agent) recebe e-mails do cliente de e-mail, verifica seus cabeçalhos e verifica se os endereços estão indicados corretamente.
  • O MTA (Mail Transfer Agent) é um programa de envio de e-mails que processa e transfere e-mails. Ele recebe mensagens do MSA. A maioria dos MTAs modernos assume as responsabilidades da MSA. Nesse caso, a transferência de mensagens não incluirá MSAs. Os MTAs mais populares são Sendmail, Postfix e Exim.
  • MDA (Mail Delivery Agent) é o agente final antes de seus e-mails serem entregues ao servidor SMTP do destinatário e depois recuperados através de servidores de e-mail de entrada (IMAP ou POP3).

Observe que as linhas entre as responsabilidades dos agentes podem ser confusas, mas ainda são úteis para fins ilustrativos. No mundo real, MUAs, MTAs e servidores SMTP são os componentes mais essenciais da entrega de e-mail. 

SMTP relay 

SMTP relay é o processo de transmissão de e-mails entre servidores SMTP hospedados em diferentes domínios (de @gmail.com para @yahoo.com, por exemplo). 

Os MTAs verificam se os nomes de domínio são os mesmos. Se forem, o SMTP replay não vai operar. Mas se os domínios não forem os mesmos, os MTAs consultarão os registros do Sistema de Nomes de Domínio (DNS) para encontrar o endereço IP do domínio do destinatário. Uma vez que o IP esteja localizado, eles encaminharão a mensagem entre um ou vários MTAs (retransmissão SMTP) até que seja finalmente entregue ao servidor SMTP do destinatário.

Como funciona o SMTP?

Uma sessão SMTP começa quando o cliente abre uma conexão de Protocolo de Controle de Transmissão (conexão TCP, às vezes chamada de TCP/IP) para o servidor SMTP. O servidor responde com uma mensagem de abertura, expressada com o código 250. Este processo é muitas vezes chamado de um aperto de mão entre SMTP.s 

O cliente então envia um comando HELO (EHLO para ESMTP) e se identifica. Muitas vezes, ele segue o comando com o nome de domínio ou endereço IP. Em palavras não técnicas, o cliente diz: “Olá, meu nome é John, o Cliente, estou enviando um e-mail do gmail.com e meu IP é 192.0.2.0”. O servidor responderá com o código 250 novamente.

Depois disso, a fase de transferência de e-mail começará. O conteúdo do e-mail será transferido passo a passo com o⁠MAIL⁠FROM (john@gmail.com), RCPT TO (oliver@gmail.com) e DADOS (‘Ei, como você tem passado?’) disponíveis. Se o servidor aceitar a transação, o cliente transferirá a informação do e-mail. É necessário usar um indicador de fim de linha (ponto ‘.’) uma vez que tudo tenha sido transmitido.

O servidor responderá com o código 250 se a transação for bem-sucedida. O cliente iniciará o término da conexão SMTP com o comando QUIT e o servidor fechará o canal de transmissão com o código 221. Este é, obviamente, um exemplo simplificado sem um SMTP relay, encaminhamento, gateways ou códigos de erro. Para mais informações nestes casos, consulte a RFC 5321.

E a fila SMTP? 

A fila de SMTP é um conjunto de e-mails que estão à espera de serem entregues. Os e-mails geralmente são colocados na fila quando o servidor SMTP não está pronto para aceitar e-mails ou você está enviando grandes volumes de uma só vez. Quando o servidor responder, os e-mails serão entregues um a um. A fila SMTP é uma espécie de buffer entre você e o servidor receptor.

Comandos e respostas SMTP

Mencionamos alguns dos comandos e respostas SMTP no exemplo acima. Mas, ao enviar e-mails com SMTP, você pode encontrar outros comandos e respostas. 

Em geral, os comandos são cadeias de caracteres alfabéticos que terminam com<CRLF>. Se seguirem parâmetros adicionais, os caracteres encerrarão com<SP>.

Respostas (ou respostas) são códigos de conclusão numéricos que podem ser positivos ou negativos. Normalmente, eles são seguidos por uma cadeia de texto. 

Comandos e respostas são compostos por um conjunto de caracteres ASCII.

Comandos

  • HELO/EHLO – inicia o começo da sessão SMTP.

    Sintaxe: "EHLO" SP ( Domínio / endereço-literal ) <CRLF> ou "HELO" SP Domínio <CRLF>
  • MAIL FROM – inicia a transação de e-mail e inclui o caminho reverso e, às vezes, parâmetros opcionais.

    Sintaxe: MAIL FROM:<reverse-path> [SP<mail-parameters>] <CRLF>
  • RCPT TO – indica o (s) destinatário(s) e inclui seu endereço de e-mail (também conhecido como caminho direto) como um assunto.

    Sintaxe: RCPT TO:<forward-path> [ SP<rcpt-parameters>] <CRLF>
  • DADOS – solicita a permissão do servidor para transferir dados e o faz assim que recebe uma resposta positiva.

    Sintaxe:  "DATA" <CRLF>
  • VRFY – solicita ao servidor que verifique se a caixa de mail no assunto existe no host local.

    Sintaxe: "VRFY" SP String <CRLF>
  • EXPN – faz o mesmo que VRFY, mas para a lista de discussão.

    Sintaxe: "EXPN" SP String <CRLF>
  • NOOP – verifica a capacidade do servidor de responder.

    Sintaxe: "NOOP" [ SP String ] <CRLF>
  • QUIT – inicia o fim da conexão.

    Sintaxe: "QUIT" <CRLF>
  • HELP – pede ao servidor para verificar quais comandos ele suporta. Pode incluir um comando específico como argumento.

    Sintaxe: "HELP" [ SP String ] <CRLF>
  • RSET – redefine a conexão SMTP e apaga todos os buffers e tabelas de estado. A conexão SMTP será revertida para o estado inicial.

    Sintaxe: "RSET" <CRLF>

O protocolo SMTP também pode suportar alguns comandos ESMTP, como STARTTLS, AUTH e outros.

Respostas

Respostas positivas comuns 

  • 250 – a ação solicitada está ok ou concluída 
  • 211 – status do sistema ou resposta à HELP
  • 220 – <domain> serviço está pronto
  • 221 – <domain> fechamento do canal de transmissão
  • 354 – iniciar entrada de e-mail (geralmente responde ao comando DATA) 

Respostas negativas ou códigos de erro

  • 500 – erro de sintaxe ou comando não pôde ser reconhecido 
  • 503 – sequência incorreta de comandos
  • 252 – o servidor não pode verificar o usuário. Ele ainda aceitará a mensagem e tentará a entrega (responde ao comando VRFY)
  • 450 – e-mail indisponível 
  • 510 – endereço de e-mail inválido

Portas SMTP

As portas SMTP são pontos de extremidade de comunicação que ajudam a identificar a localização exata dos endereços da Internet. As portas mais comuns usadas com SMTP são 25, 465, 587 e 2525. 

  • 25 é a porta SMTP mais antiga, mas ninguém mais á usa para envio de e-mail. Como não possui mecanismos de segurança, os spammers abusam muito dela. Por esse motivo, os provedores de serviços de Internet (ISPs) geralmente bloqueiam a porta número 25. Recomenda-se usá-la apenas como uma porta de retransmissão. 
  • A⁠ 465 é mais segura em comparação com a 25, mas não é uma porta SMTP oficial e agora está obsoleta. Suporta encriptação SSL. Ainda assim, é recomendável evitar usá-la sempre que possível. 
  • 587 é a porta SMTP padrão recomendada com STARTTLS. Quase todos os provedores de serviços de e-mail a suportam. 
  • 2525 é uma alternativa á 587. Pode ser usado quando a 587 estiver bloqueado ou indisponível. 2525 nunca foi reconhecido como uma porta SMTP oficial. Independentemente disso, a maioria dos ISPs permite transações através desta porta.

Comparando SMTP, IMAP e POP3

Além do SMTP, os protocolos de e-mail mais comuns são IMAP e POP3. SMTP é um servidor de e-mail de saída usado para enviar e entregar e-mails. IMAP e POP3 são protocolos de acesso a mensagens usados para recuperar mensagens recebidas do servidor de e-mail. 

O IMAP é um protocolo de acesso a mensagens da Internet que se conecta ao servidor e baixa mensagens mediante solicitação. As mensagens não serão excluídas assim que a conexão for encerrada. Com o IMAP, os usuários podem aceder aos seus e-mails a partir de qualquer computador ou dispositivo. 

O POP3 ou Post Office Protocol 3 também se conecta ao servidor, mas baixa todas as mensagens recebidas. Quando isso for concluído, ele excluirá todos os e-mails do servidor. Ao contrário do IMAP, o POP3 é dependente do dispositivo. 

Mais informações sobre as diferenças entre esses protocolos estão disponíveis aqui.

Como enviar e-mails com SMTP 

Um dos principais benefícios do SMTP é que ele facilita o envio de e-mails de diferentes aplicativos ou dispositivos. A maioria das linguagens de programação permite que os usuários roteiem e-mails de saída através do SMTP nativamente ou com a ajuda de diferentes bibliotecas. Ao contrário da Web API (ou Email API), a integração SMTP não requer habilidades avançadas de codificação. 

Você precisará de credenciais SMTP funcionais (como host, porta, nome de usuário, senha e criptografia) e da linguagem de programação relevante para concluir essa tarefa. Você pode verificar o nosso post no blog para mais detalhes sobre isso.

SMTP como serviço – teste e envio 

O SMTP (ou, mais precisamente, o servidor SMTP) é fornecido aos usuários como um serviço para dois propósitos principais – teste e envio. 

Em termos de testes, o serviço SMTP usa um servidor SMTP falso que captura as mensagens enviadas. Dessa forma, os e-mails não chegam às caixas de entrada reais, criando um ambiente seguro para testes. 

Quando se trata de envio de e-mail, o serviço SMTP é sinônimo de serviço de retransmissão SMTP. Os provedores de e-mail têm seus próprios servidores SMTP que permitem aos usuários enviar e-mails de marketing ou transacionais. 

Idealmente, esses dois serviços SMTP podem ser combinados em uma ferramenta robusta, como o Mailtrap. Mailtrap é uma plataforma de entrega de e-mail que combina testes de e-mail e envio de e-mail. É uma infraestrutura de e-mail completa que permite aos usuários testar o servidor SMTP, enviar e-mails com ele e monitorar seu desempenho com análises acionáveis.

O teste de e-mail é um Sandbox que captura todo o tráfego SMTP em uma caixa de entrada virtual e elimina as chances de enviar spam aos usuários. Você pode facilmente inspecionar e depurar seus e-mails em testes com verificações de HTML/CSS ou spam, visualizar informações técnicas ou usar recursos de encaminhamento manual/automático. O Email Testing fornece várias caixas de entrada para diferentes projetos e estágios do produto.

Mailtrap Email Testing Inbox

O Email Sending é uma infraestrutura com altas taxas de entrega de e-mail por design. Com sua API de e-mail e serviço SMTP, a integração é suave e sem esforço. Tudo o que você precisa fazer é verificar o seu domínio e escolher o método preferido de integração. Feito isso, você pode entrar em contato com as caixas de entrada dos destinatários em questão de segundos.

O Envio de e-mail também possui análises detalhadas acionáveis com relatórios detalhados e painéis de visão de helicóptero que o mantêm no topo de suas métricas de entregabilidade.

Article by Diana Lepilkina Content Specialist @Mailtrap