Deliverability

Quais são os comandos SMTP e o que você precisa saber sobre eles?

Este artigo abordará o que são comandos SMTP e como você pode entrar em contato com seu servidor SMTP. Em seguida, deixaremos com você alguns comandos SMTP e códigos de resposta essenciais.
Imagem para Quais são os comandos SMTP e o que você precisa saber sobre eles?

Por que precisamos de comandos SMTP e o que eles fazem? Bem, usamos comandos SMTP (Simple Mail Transfer Protocol) para nos comunicarmos com servidores de e-mail. Esses comandos são essenciais para iniciar e gerenciar o processo de envio de e-mails. Ao emitir comandos como “EHLO” (que inicia a conexão), “MAIL FROM” (que especifica o endereço de e-mail do remetente) e outros, podemos instruir os servidores de e-mail sobre como lidar com os e-mails que queremos enviar. Sem esses comandos, o servidor de e-mail não saberia como processar e entregar nossas mensagens.

O que é SMTP?

Antes mesmo de um e-mail chegar à caixa de entrada, muita coisa acontece nos bastidores. Tudo começa com o TLS (Transport Layer Security), que entra em ação para criptografar a conexão e manter seus dados a salvo de olhares curiosos. Depois, o protocolo SMTP assume o controle, definindo as regras de como essa mensagem será entregue. Toda mensagem também carrega um cabeçalho — basicamente quem, o que e quando do seu e-mail. Quer ver o processo em ação? Abra sua linha de comando. Com apenas alguns comandos SMTP, você pode percorrer toda a jornada do remetente ao servidor e identificar problemas de entregabilidade antes que eles se tornem um problema de fato.

Então, o que é SMTP? Simple Mail Transfer Protocol (SMTP) é apenas um conjunto de regras que lida com o envio, o recebimento e a retransmissão de e-mails.

Veja como funciona:

  1. O método SMTP estabelece uma conexão entre o seu cliente de e-mail (do remetente) e o seu servidor SMTP.
  2. O servidor SMTP realiza uma série de verificações.
  3. O servidor SMTP depende do SMTP para transportar seu e-mail até o provedor de caixa de entrada do seu destinatário, como o Microsoft Outlook ou o Gmail.
  4. Em seguida, o SMTP corta a conexão entre o seu cliente de e-mail e o servidor SMTP.

Para concluir o processo de envio e recebimento de e-mail, o cliente de e-mail do seu destinatário usa o IMAP (outro protocolo) para baixar mensagens do servidor de e-mail IMAP de recebimento quando o seu assinante decide verificar seus e-mails. O IMAP ajuda a gerenciar os e-mails para que seus destinatários possam interagir com eles na interface de usuário da caixa de correio.

Quer saber mais sobre o SMTP e como ele funciona? Se você é aficionado por e-mail como a gente, a resposta é sim. Confira nosso post sobre o que é SMTP e como ele funciona para saber mais.

O que é ESMTP?

Aguente firme, só mais uma sigla antes de entrarmos nos comandos. O ESMTP (Extended Simple Mail Transfer Protocol) estende os recursos do SMTP para permitir o compartilhamento de arquivos multimídia, como imagens, arquivos de áudio e vídeos. O ESMTP inclui comandos adicionais que permitem as seguintes funcionalidades:

  • Autenticação de remetente
  • Criptografia de e-mails com SSL
  • Anexo de arquivos multimídia
  • Restrição do tamanho do e-mail com base nas especificações do servidor
  • Transmissão simultânea para vários destinatários

Abaixo, abordaremos os comandos ESMTP e SMTP.

O que é um comando SMTP?

Um comando SMTP é uma instrução específica enviada de um cliente de e-mail para um servidor de e-mail que diz qual ação realizar — como enviar uma mensagem, especificar um remetente ou destinatário, ou iniciar uma conexão segura.

Eu realmente preciso conhecer os comandos SMTP?

Sim: se você atua no desenvolvimento de e-mails, precisa conhecer os comandos SMTP. Mas se você é apenas alguém com uma conta comum do Gmail, provavelmente pode economizar espaço na memória para curiosidades aleatórias de Game of Thrones.

Os comandos SMTP são usados em uma sequência específica para facilitar a comunicação entre dois servidores a fim de entregar um e-mail. Aqui estão alguns cenários nos quais você pode querer conhecer os comandos SMTP:

  • Você deseja configurar o SMTP no seu computador ou na sua rede
  • Você precisa solucionar problemas no seu serviço de e-mail
  • Você precisa entrar em contato com seu servidor SMTP
  • Ok, este é bem específico, mas e se você quiser acessar o e-mail no meio de uma sessão Telnet? O Telnet permite que você acesse virtualmente um computador e implemente um acesso remoto e colaborativo bidirecional
  • Outro caso específico: você está tentando enviar e-mails de dentro de um shell do Linux
  • Você quer executar um teste de SMTP

Se algum desses casos de uso parece familiar, continue lendo!

Como deve ser o fluxo de uma sessão SMTP?

Pense em uma sessão SMTP como um diálogo entre o seu cliente e um servidor SMTP. Você envia comandos com caracteres alfabéticos, e o servidor responde com códigos numéricos.

O que é um cliente, você pergunta? Os clientes podem ser o seu cliente de e-mail, como o Gmail, que emite comandos em seu nome. Ou eles podem ser um terminal que você usa para emitir comandos.

Normalmente, as sessões SMTP seguem uma sequência padrão:

  1. Handshake: O cliente e o servidor estabelecem uma conexão Transmission Control Protocol (TCP)
  2. Transferência de e-mail: O cliente repassa sua mensagem de e-mail para o servidor SMTP, e o servidor realiza verificações de autenticação
  3. Encerramento: O cliente e o servidor fecham a conexão TCP

Quais são alguns comandos SMTP essenciais?

Agora que sabemos como é uma sessão SMTP, vamos analisar alguns comandos SMTP e ESMTP essenciais. Nós os listamos na sequência em que podem ser usados:

  1. O comando HELO ou EHLO
  2. O comando AUTH
  3. O comando MAIL FROM
  4. O comando RCPT TO
  5. O comando DATA
  6. O comando BDAT
  7. O comando VRFY
  8. O comando RSET
  9. O comando QUIT
  10. O comando HELP

1. O comando HELO ou EHLO

O primeiro comando que você precisa conhecer é o comando HELO. O HELO inicia a sessão SMTP e permite que o cliente cumprimente o servidor e se apresente. O comando usa o nome de domínio ou endereço IP do cliente SMTP como argumento, como mostrado abaixo.

                                

                                    HELO mailgun.net
                                
                            

O comando HELO é considerado amplamente obsoleto, mas os clientes e mecanismos SMTP devem ter suporte a ele como fallback para conversar com implementações mais antigas.

Lembra que dissemos acima que o ESMTP estende o SMTP? Sendo assim, o ESMTP às vezes possui comandos diferentes do SMTP. EHLO é a alternativa do ESMTP ao HELO do SMTP para servidores com suporte ao ESMTP. O servidor SMTP responderá com um código de erro SMTP se não tiver suporte a ESMTP. Nesse caso, você terá que iniciar o processo de handshake tudo de novo. Confira o exemplo de comando ESMTP abaixo.

                                

                                    EHLO mailgun.net
                                
                            

2. O comando AUTH

O comando AUTH é um comando ESMTP que autentica o cliente SMTP no servidor SMTP. Ele pode usar diferentes palavras-chave, dependendo do nível de segurança e do método de login: PLAIN, LOGIN e CRAM-MD5. Sua sessão é autenticada quando o servidor fornece uma resposta positiva. Confira o comando AUTH abaixo.

                                

                                    AUTH CRAM-MD5
                                
                            

Saiba mais sobre Palavras-chave do comando AUTH .

3. O comando MAIL FROM

Depois de iniciar o handshake cliente-servidor com um comando HELO ou EHLO, você pode usar o comando MAIL FROM para iniciar uma transferência de e-mail. Especificamente, você (como remetente) declara o endereço de e-mail do remetente no campo “from”. O comando MAIL FROM usa o endereço de e-mail “from” como argumento, conforme mostrado no código de exemplo SMTP abaixo.

                                

                                    MAIL FROM "test@mailgun.net"
                                
                            

4. O comando RCPT TO

Use o comando RCPT TO para especificar o destinatário como um argumento. Se houver mais de um destinatário, use o RCPT TO para especificar cada destinatário separadamente. Confira o exemplo de comando RCPT TO abaixo.

                                

                                    RCPT TO "subscriber@recipientsinbox.com"
                                
                            

5. O comando DATA

O comando DATA é como o cliente SMTP pede permissão ao servidor SMTP para transferir sua mensagem de e-mail (os dados). Quando o servidor responder com um código 354 para conceder permissão, o cliente entrega o conteúdo do seu e-mail linha por linha. Use uma linha final com um ponto final (“.”) para encerrar a transferência de dados.

Confira o exemplo de comando DATA abaixo.

                                

                                    DATA
354 (server response code)
Date: Wed, 30 July 2022 06:04:34
From: test@mailgun.net
Subject: SMTP session tutorial
To: subscriber@recipientsinbox.com
Body text
.
                                
                            

6. O comando BDAT

O comando BDAT é a versão ESMTP do comando DATA que transfere o conteúdo do e-mail. O BDAT usa dois argumentos:

  • O comprimento do bloco de dados (em octetos)
  • Um indicador de que o bloco de dados está sendo encerrado

Confira o exemplo de comando BDAT abaixo.

                                

                                    BDAT 67 LAST
To: subscriber@recipientsinbox.com
From: test@mailgun.net
Subject: SMTP session tutorial
250 Message OK, 67 octets received
                                
                            

O BDAT é usado no Microsoft Exchange Server.

7. O comando VRFY

Emita o comando VRFY para solicitar ao servidor que confirme se um nome de usuário ou caixa de correio específica existe no localhost. Note que alguns servidores de e-mail SMTP ignoram o comando VRFY , pois ele pode ser uma brecha de segurança que invasores exploram para roubar endereços de e-mail. Dê uma olhada no exemplo de comando VRFY abaixo.

                                

                                    VRFY user2
250 Jada Jonesjadaj@mailgun.net
                                
                            

8. O comando RSET

Tudo pronto para redefinir sua conexão SMTP para o estado inicial sem cortar sua conexão? Use o comando RSET. Este comando não usa argumentos. Confira o comando de exemplo abaixo.

                                

                                    RSET
                                
                            

9. O comando QUIT

Ok, digamos que você tenha terminado sua sessão SMTP. Você deseja limpar os dados e encerrar sua sessão. Basta usar o comando QUIT. Quando o servidor responder com um código 221, seu cliente fechará a conexão. Confira o exemplo de comando QUIT abaixo.

                                

                                    QUIT
                                
                            

10. O comando HELP

Este é provavelmente o comando mais útil. Precisa de ajuda, mas não sabe a quem recorrer? Tente o comando HELP primeiro. Este comando exibe uma lista de possíveis comandos com suporte do servidor SMTP. Você pode fornecer comandos específicos como um argumento para o comando HELP para obter ajuda com comandos específicos. Confira o exemplo de comando HELP abaixo.

                                

                                    HELP
                                
                            

Quais são os códigos de resposta SMTP?

Se os comandos SMTP são a forma como você se comunica com um servidor SMTP por meio de um cliente de e-mail, como o servidor SMTP fala com você? Isso é fácil: por meio dos códigos de resposta SMTP.

Os códigos de resposta SMTP são sequências numéricas de três dígitos. Cada dígito informa algo diferente. Considere um código de resposta 250:

  • O primeiro dígito (“2”) indica se o seu comando foi bom, ruim ou incompleto
  • O segundo dígito (“5”) informa que tipo de resposta foi enviada
  • O terceiro dígito (“0”) fornece informações adicionais sobre o seu comando

Como você pode imaginar, o primeiro dígito é o mais importante, pois dá uma ideia se o seu comando funcionou ou não. Confira a tabela a seguir do RFC 5321 (Simple Mail Transfer Protocol) que apresenta o que vários primeiros dígitos significam:

Código de resposta Significado
2.y.z O comando que foi enviado foi concluído com sucesso no servidor remoto. O servidor remoto está pronto para o próximo comando.
3.y.z O comando foi aceito, mas o servidor remoto precisa de mais informações antes que a operação possa ser concluída. O servidor de envio precisa enviar um novo comando com as informações necessárias.
4.y.z O comando não foi aceito pelo servidor remoto por um motivo que pode ser temporário. O servidor de envio deve tentar se conectar novamente mais tarde para ver se o servidor remoto consegue aceitar o comando com sucesso. O servidor de envio continuará a tentar a conexão até que uma conexão bem-sucedida seja concluída (indicada por um código 2.y.z) ou falhe permanentemente (indicada por um código 5.y.z). Um exemplo de erro SMTP temporário é o pouco espaço de armazenamento no servidor remoto. Quando mais espaço for disponibilizado, o servidor remoto deverá conseguir aceitar o comando com sucesso.
5.y.z O comando não foi aceito pelo servidor remoto por um motivo que não é recuperável. O servidor de envio não tentará a conexão de novo e enviará um relatório de falha na entrega de volta ao usuário que enviou a mensagem. Um exemplo de erro irrecuperável é uma mensagem enviada para um endereço de e-mail que não existe.

Conclusão

Simples assim! Sabemos, é uma informação super leve e fácil. Não importa se você está procurando por uma solução de servidor SMTP para impulsionar o envio de seus e-mails, ou se estiver procurando detalhes sobre exatamente qual porta SMTP usar (25? 587? 2525?), o Mailgun resolve para você.

Como sempre, não hesite em entrar em contato. Deixe-nos ajudar você a começar seus envios ainda hoje.