Os protocolos de serviço de mensagens: SMTP, POP3 e IMAP4

O e-mail é um dos serviço mais utilizados na Internet. Ele possui uma suíte de protocolos TCP/IP, com protocolos de gerenciamento de envio e recebimento de e-mails - IMAP e POP que baixam as mensagens do servidor para os dispositivos e o protocolo SMTP que gerencia o envio de e-mail. Vamos ver o que são e como funcionam este três protocolos na continuidade do texto.

O que é o protocolo SMTP

O protocolo SMTP (Simple Mail Transfer Protocol - Protocolo Simples de Transferência de E-mail) é o protocolo padrão que permite transferir o e-mail de um servidor para outro, em conexão ponto a ponto.

Este é um protocolo que funciona online, encapsulado numa trama TCP/IP. O e-mail é enviado diretamente para o servidor de e-mail do destinatário. O protocolo SMTP funciona com comandos de texto enviados ao servidor SMTP (por padrão, para a porta 25). Cada um dos comandos enviados pelo cliente (validados pela cadeia de caracteres ASCII CR/LF, que equivale a um clique na tecla ‘Enter’) é seguido de uma resposta do servidor SMTP composta de um número e de uma mensagem descritiva.

Veja o caso de um pedido de envio de e-mail para um servidor SMTP:

Ao abrir a sessão SMTP, o primeiro comando a ser enviado é o HELO seguido de um espaço (escrito <SP>) e o nome de domínio do seu dispositivo (para lhe dizer "bom dia, sou a máquina tal") e, depois, validado com a tecla Enter (escrito <CRLF>). Desde Abril de 2001, as especificações do protocolo SMTP, definidas no RFC 2821 determinam que o comando HELO seja substituído pelo comando EHLO.

O segundo comando é MAIL FROM seguido do endereço de e-mail do remetente. Se o comando for aceito, o servidor devolverá a mensagem 250 OK.

O comando seguinte é RCPT TO: seguido do endereço de e-mail do destinatário. Se o comando for aceito, o servidor devolverá a mensagem 250 OK.

O comando DATA é a terceira etapa do envio de um e-mail. Ele anuncia o início do corpo da mensagem. Se o comando for aceito, o servidor reenviará uma mensagem intermédia numerada 354, indicando que o envio do corpo do e-mail pode começar e considera o conjunto das linhas seguintes até o fim da mensagem indicada com uma linha que contém apenas um ponto. O corpo do e-mail contém eventualmente alguns dos seguintes cabeçalhos: Date, Assunto, Cc, Cco e De. Se o comando for aceito, o servidor devolverá a mensagem 250 OK.

Veja um exemplo de transação entre um cliente (C) e um servidor SMTP (S):

S: 220 smtp.CCM.net SMTP Ready    
C: EHLO machine1.CCM.net
S: 250 smtp.CCM.net
C: MAIL FROM:<webmaster@ccm.net>
S: 250 OK
C: RCPT TO:<meandus@meandus.net>
S: 250 OK
C: RCPT TO:<tittom@tittom.fr>
S: 550 No such user here
C: DATA
S: 354 Start mail input; end with <CRLF>.<CRLF>
C: Subject: Pequeno Bom dia
C: Oi Meandus,
C: Como vai?
C :
C: Até logo!
C: <CRLF>.<CRLF>
S: 250 OK
C: QUIT
R: 221 smtp.ccm.net closing transmission

As especificações de base do protocolo SMTP exigem que todos os caracteres transmitidos sejam codificados em ASCII de 7 bits e que o oitavo bit seja explicitamente Zero. Assim, para enviar caracteres acentuados é preciso recorrer a algoritmos que integrem as especificações MIMO:

base64 para os anexos.
quoted-printable (abreviação QP) para os caracteres especiais contidos no corpo da mensagem.

Para isso, é possível enviar um e-mail utilizando um simples Telnet na porta 25 do servidor SMTP:

telnet smtp.ccm.net 25

Atenção! O servidor indicado acima não existe. Tente substituir ccm.net pelo nome do domínio do seu fornecedor de acesso à Internet.

Veja um resumo dos principais comandos SMTP:

Comando Exemplo Descrição
HELO (agora EHLO) EHLO 193.56.47.125 Identificação com a ajuda do endereço IP ou do nome de domínio do computador remetente
MAIL FROM: MAIL FROM: remetente@domínio.com Identificação do endereço do remetente
RCPT TO: RCPT TO: destinatário@ domínio.com Identificação do endereço do destinatário
DATA DATA mensagem Corpo do e-mail
QUIT QUIT Saída do servidor SMTP
HELP HELP Lista dos comandos SMTP suportados pelo servidor

Todas as especificações do protocolo SMTP são definidas no RFC 821 (desde abril de 2001, as especificações do protocolo SMTP estão definidas no RFC 2821).

O que é o protocolo POP3

O protocolo POP (Post Office Protocol - Protocolo dos correios) permite, como seu nome indica, recuperar o seu e-mail num servidor distante (o servidor POP). Ele é necessário para as pessoas não conectadas permanentemente à Internet, para poderem consultar os e-mails recebidos offline.

Existem duas versões principais deste protocolo, o POP2 e o POP3, aos quais são atribuídas, respectivamente, as portas 109 e 110, funcionando com o auxílio de comandos de texto completamente diferentes.

Assim como no caso do SMTP, o protocolo POP (POP2 e POP3) funciona graças a comandos de textos enviados ao servidor POP. Cada um dos comandos enviados pelo cliente (validado pela suíte CR/LF) é composto por uma palavra-chave, eventualmente acompanhada de um ou vários argumentos e seguida de uma resposta do servidor POP, composta por um número e por uma mensagem descritiva.

Veja abaixo um quadro que resume os principais comandos POP2:

Comandos POP2
Comando Descrição
HELLO Identificação através do endereço IP do computador remetente
FOLDER Nome da Caixa de Entrada a ser consultada
READ Número da mensagem a ser lida
RETRIEVE Número da mensagem a ser recuperada
SAVE Número da mensagem a ser salva
DELETE Número da mensagem a ser excluída
QUIT Saída do servidor POP2

Veja um resumo dos comandos POP3:

Comandos POP3
Comando Descrição
USER login Este comando permite a autenticação. Ele deve ser seguido do nome do usuário, ou seja, uma cadeia de caracteres que identificam o usuário no servidor. O comando USER deve preceder o comando PASS
PASS senha O comando PASS, permite indicar a senha do usuário, cujo nome tenha sido especificado por um comando USER prévio
STAT Informação sobre as mensagens contidas no servidor
RETR Número da mensagem a ser recuperada
DELE Número da mensagem a ser excluída
LIST [msg] Número da mensagem a ser exibida
NOOP Permite deixar a ligação aberta no caso de inatividade
TOP <mensagemID> <n> Comando que mostra várias linhas da mensagem, cujo número é dado como argumento. No caso de resposta positiva do servidor, este devolve os cabeçalhos da mensagem, seguido de uma linha em branco e, por último, as primeiras linhas da mensagem
UIDL [msg] Pede ao servidor para reenviar uma linha com informações sobre a mensagem eventualmente dada como argumento. Esta linha contém uma cadeia de caracteres, chamada lista de identificador única, permitindo identificar de maneira única a mensagem no servidor, independentemente da sessão. O argumento opcional é um número correspondente a uma mensagem existente no servidor POP, ou seja, uma mensagem não apagada)
QUIT O comando QUIT pede a saída do servidor POP3. Ele provoca a remoção de todas as mensagens marcadas como apagadas e reenvia o estado desta ação

Assim, o protocolo POP3 gerencia a autenticação com a ajuda de um nome de usuário e de uma senha, porém isso não é seguro porque as senhas, assim como os e-mails, circulam às claras (de maneira não codificada) na rede. Na realidade, de acordo com o RFC1939, é possível codificar a senha que utiliza o algoritmo MD5 e, assim, beneficiar de uma autenticação protegida. Contudo, já que este comando é opcional, poucos servidores o aplicam. Por outro lado, o protocolo POP3 bloqueia a caixa de entrada durante a consulta, o que significa que uma consulta feita, simultaneamente, por dois usuários de uma mesma caixa de e-mail é impossível.

Assim como é possível enviar um e-mail graças à Telnet, também é possível acessar o seu e-mail recebido graças a um simples Telnet na porta do servidor POP (110, por padrão):

telnet mail.ccm.net 110

Atenção! O servidor indicado acima não existe. Tente substituir ccm.net pelo nome do domínio do seu fornecedor de acesso à Internet.

S: +OK mail.ccm.net POP3 service    
S: (Netscape Messaging Server 4.15 Patch 6 (built Mar 31 2001))
C: USER jeff
S: +OK Name is a valid mailbox
C: PASS meu_pass
S: +OK Maildrop ready
C: STAT
S: +OK 2 0
C: TOP 1 5
S: Assunto: Bom-dia
S: Oi Meandus,
S: Como vai?
S :
S: Até logo!
C: QUIT
S: +OK

A exibição dos dados que você introduz depende do cliente Telnet que você usa. Dependendo do seu cliente Telnet, você deverá, talvez, ativar a opção echo local.

O que é o protocolo IMAP

O protocolo IMAP (Internet Message Access Protocol - Protocolo de Acesso à Mensagem de Internet) é um protocolo alternativo ao POP3, que oferece mais possibilidades. Entre outras, ele permite gerenciar vários acessos simultâneos, administrar várias caixas de e-mail e organizar as mensagens de acordo com mais critérios.

Foto: © Solen Feyissa - Unsplash.

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Veja também
Este documento, intitulado 'Os protocolos de serviço de mensagens: SMTP, POP3 e IMAP4 ', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade