Ícone do site Mailtrap

Compreendendo o SMTP – O Protocolo por Trás da Entrega de Emails

This is a cover image for an article that explains SMTP Protocol in detail

O SMTP é um protocolo fundamental usado na comunicação de emails. Muito provavelmente, está por trás dos emails que enviamos e recebemos todos os dias. Embora seja um protocolo simples, ele ainda envolve múltiplos componentes e muitos detalhes.

Neste post do blog, vamos dar uma olhada mais detalhada 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 possibilita a transferência de emails entre diferentes servidores e redes de computadores. Ele faz isso definindo as regras de comunicação.

O modelo original foi introduzido em 1982. Segundo o RFC 821, o usuário cria a solicitação de conexão. Em resposta, o remetente-SMTP inicia uma conexão bidirecional com o receptor-SMTP. Em termos modernos, esses 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 depois), semelhante a conversas na vida real.

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

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

Por definição, a forma completa do SMTP é quando os clientes SMTP suportam retransmissão, filas de email e funções de endereço alternativo. Isso é chamado de SMTP totalmente capaz. Se essas funções não forem suportadas, o SMTP não é totalmente capaz. Nesse caso, os RFCs relevantes recomendam usar o protocolo de envio de mensagens.

Lembre-se de 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, corpos de mensagens que excedem os limites de caracteres impostos pelo SMTP, mensagens em idiomas diferentes do inglês e formatos HTML/CSS.

MIME é um protocolo de extensão – ele aprimora as capacidades do SMTP, mas não opera separadamente. A maioria dos serviços de email modernos suporta MIME.

O que é 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. O RFC 5321 consolidou e obsoletou documentos anteriores.

O ESMTP usa um novo comando EHLO para iniciar a conexão. Ele 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 os parâmetros adicionais não são definidos.

Tanto o ESMTP quanto o SMTP são amplamente usados hoje. Se o comando EHLO não for suportado, a conexão deve reverter para o SMTP e seu comando HELO.

Falando em extensões, também devemos mencionar a extensão SMTP-AUTH, que adiciona uma etapa de autenticação ao processo. Isso significa que o cliente de email deve fazer login no servidor de email usando seu nome de usuário e senha. Embora a autenticação SMTP não possa proteger contra spoofing, é uma medida de segurança importante.

O que é SMTPS?

SMTPS ou Simple Mail Transfer Protocol Secure é um método que protege o SMTP com a ajuda dos protocolos Transport Layer Security (TLS) ou Secure Sockets Layer (SSL). Essas camadas de segurança criptografam mensagens para impedir que spammers ou spoofers visualizem o conteúdo dos emails.

Embora o SSL ainda seja amplamente usado, o TLS (mais precisamente, sua versão 1.3) é considerado o protocolo mais seguro para criptografia de emails. Para mais informações sobre a segurança do SMTP, leia nosso post dedicado no blog.

Tipos de SMTP

O RFC 5321 diferencia entre quatro tipos de sistemas SMTP:

Infraestrutura do SMTP

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

Servidor SMTP

O servidor SMTP é uma aplicação para enviar emails. Ele recebe mensagens eletrônicas de clientes de email (Gmail, Yahoo! Apple Mail, AOL, etc.) e as transfere para outros servidores. Esses podem ser outros servidores SMTP ou um servidor de email de entrada.

O servidor de email SMTP pode ser local ou baseado na 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 na maioria dos casos.

Agentes de Email

Existem quatro agentes principais:

Note que as linhas entre as responsabilidades dos agentes podem ser esfumadas às vezes, 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 email.

Relay SMTP

O relay SMTP é o processo de transmitir emails 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 relay SMTP não ocorrerá. 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 localizado o IP, eles encaminharão a mensagem entre um ou vários MTAs (relay SMTP) até que ela 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 Transmission Control Protocol (TCP, às vezes chamada de TCP/IP) com o servidor SMTP. O servidor responde com uma mensagem de abertura, expressa com o código 250. Esse processo é frequentemente chamado de handshake SMTP.

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

Depois disso, a etapa de transferência de email começará. O conteúdo do email será transferido passo a passo com os comandos MAIL FROM (john@gmail.com), RCPT TO (oliver@yahoo.com) e DATA (‘Oi, como você tem estado?’). Se o servidor aceitar a transação, o cliente transferirá os cabeçalhos de email. É 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á a terminação da conexão SMTP com o comando QUIT, e o servidor fechará o canal de transmissão com o código 221.

Este é, claro, um exemplo simplificado sem relay SMTP, encaminhamento, gateways ou códigos de erro. Para mais informações sobre esses, consulte o RFC 5321.

E quanto à fila SMTP?

A fila SMTP é um conjunto de emails que estão esperando para serem entregues. Os emails geralmente são colocados na fila quando o servidor SMTP de recebimento não está pronto para aceitar emails, ou você está enviando grandes volumes de uma vez. Quando o servidor responde, os emails serão entregues um por um. A fila SMTP é uma espécie de buffer entre você e o servidor de recebimento.

Comandos e respostas SMTP

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

Em geral, os comandos são strings de caracteres alfabéticos terminando com <CRLF>. Se parâmetros adicionais seguirem, os caracteres serão terminados por <SP>. 

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

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

Comandos

Syntax: "EHLO" SP ( Domain / address-literal ) CRLF ou "HELO" SP Domain CRLF

Syntax: MAIL FROM:<reverse-path> [SP <mail-parameters> ] <CRLF>

Syntax: RCPT TO:<forward-path> [ SP <rcpt-parameters> ] <CRLF>

Syntax:  "DATA" CRLF

Syntax: "VRFY" SP String CRLF

Syntax: "EXPN" SP String CRLF

Syntax: "NOOP" [ SP String ] CRLF

Syntax: "QUIT" CRLF

Syntax: "HELP" [ SP String ] CRLF

Syntax: "RSET" CRLF

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

Respostas 

Respostas positivas comuns

Respostas negativas ou códigos de erro

Portas SMTP

Portas SMTP são endpoints 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.

Comparando SMTP, IMAP e POP3

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

IMAP é um Protocolo de Acesso a Mensagens da Internet que se conecta ao servidor e baixa mensagens sob demanda. As mensagens não serão excluídas uma vez que a conexão seja terminada. Com o IMAP, os usuários podem acessar seus emails de qualquer computador ou dispositivo.

POP3 ou Protocolo de Agência dos Correios 3 também se conecta ao servidor, mas baixa todas as mensagens recebidas. Uma vez que isso é concluído, ele excluirá todos os emails 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 bem como em nosso vídeo dedicado.

Como enviar emails com SMTP

Um dos principais benefícios do SMTP é que ele facilita o envio de emails a partir de diferentes aplicativos ou dispositivos. A maioria das linguagens de programação permite que os usuários encaminhem emails de saída por meio do SMTP, seja nativamente ou com a ajuda de diferentes bibliotecas. Ao contrário da Web API (ou API de Email), a integração do 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 a linguagem de programação relevante para completar essa tarefa. Você pode conferir nosso post recente no blog para mais detalhes sobre isso.

Serviço SMTP – testar e enviar emails

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

Em termos de teste, serviço SMTP implica em um servidor SMTP falso que captura emails de saída. Dessa forma, os emails não chegam a caixas de entrada reais, criando um ambiente seguro para testes.

Quando se trata de envio de email, o serviço SMTP é sinônimo de serviço de relay SMTP. Os provedores de email têm seus próprios servidores SMTP que permitem aos usuários enviar emails de marketing ou transacionais.

Idealmente, esses dois serviços SMTP podem ser combinados em uma ferramenta robusta, como o Mailtrap.

Mailtrap é uma Plataforma de Email Delivery que combina Email Testing e Email API/SMTP. É uma infraestrutura completa de email que permite aos usuários testar o servidor SMTP, enviar emails com ele e monitorar seu desempenho com análises acionáveis.

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

Email API/SMTP é uma infraestrutura com altas taxas de entregabilidade de email por design. Com seu Email API e serviço SMTP, a integração é suave e sem esforço. Tudo o que você precisa fazer é verificar seu domínio e escolher o método preferido de integração. Uma vez feito isso, você pode alcançar as caixas de entrada dos destinatários em questão de segundos.

Email API/SMTP também possui análises aprofundadas e práticas com relatórios detalhados e painéis de visão geral que mantêm você no controle das suas métricas de entregabilidade.

Sair da versão mobile