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

Maio 2015

Introdução ao serviço de mensagens electrónicas


O correio electrónico é considerado o serviço mais utilizado na Internet. Assim, a sequência de protocolos TCP/IP oferece uma panóplia de protocolos que permitem gerir facilmente o encaminhamento do correio na rede.

O protocolo SMTP


O protocolo SMTP (Simple Mail Transfer Protocol, que se pode traduzir por Protocolo Simples de Transferência de Correio) é o protocolo standard que permite transferir o correio de um servidor a outro em conexão ponto a ponto.

Trata-se de um protocolo que funciona em modo conectado, encapsulado numa trama TCP/IP. O correio é entregue directamente ao servidor de correio do destinatário. O protocolo SMTP funciona graças a comandos textuais enviados ao servidor SMTP (por defeito, para a porta 25). Cada um dos comandos enviados pelo cliente (validados pela cadeia de caracteres ASCII CR/LF, equivalente a um clique na tecla ENTER) é seguido de uma resposta do servidor SMTP composta de um número e de uma mensagem descritiva.

Eis um cenário de pedido de envio de mail a um servidor SMTP

  • Aquando da abertura da sessão SMTP, o primeiro comando a enviar é o comando HELO seguido de um espaço (notado <SP>) e o nome de domínio da sua máquina (para lhe dizer "bom dia, sou a máquina tal"), seguidamente validar por entrada (notado <CRLF>). Desde Abril de 2001, as especificações do protocolo SMTP, definidas no RFC 2821, impõem que o comando HELO seja substituído pelo comando EHLO.
  • O segundo comando é "MAIL FROM" seguido do endereço de correio electrónico do remetente. Se o comando for aceite, o servidor devolve a mensagem "250 OK"
  • O comando seguinte é "RCPT TO: " seguido do endereço de correio electrónico do destinatário. Se o comando for aceite, o servidor devolve a mensagem "250 OK"
  • AO comando DATA é a terceira etapa do envio. Anuncia o início do corpo da mensagem. Se o comando for aceite, o servidor reencia uma mensagem intermédia numerada 354, que indica que o envio do corpo do mail pode começar e considera o conjunto das linhas seguintes até ao fim da mensagem localizada por uma linha que contém unicamente um ponto. O corpo do mail contém eventualmente alguns dos cabeçalhos seguinte:
    • Date
    • Subject
    • Cc
    • Bcc
    • From

Se o comando for aceite, o servidor devolve a mensagem "250 OK"
Eis um exemplo de transacção entre um cliente (C) e um servidor SMTP (S)
S: 220 smtp.kioskea.net SMTP Ready    
C: EHLO machine1.kioskea.net    
S: 250 smtp.kioskea.net    
C: MAIL FROM:<webmaster@kioskea.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: Petit Bonjour    
C: Salut Meandus,    
C: comment ca va?    
C :    
C: A bientot !    
C: <CRLF>.<CRLF>    

S: 250 OK    
C: QUIT    
R: 221 smtp.kioskea.net closing transmission


As especificações de base do protocolo SMTP exigem que todos os caracteres transmitidos sejam codificados em código ASCII de 7 bits 7 e que o oitavo bit esteja explicitamente a zero. Assim, para enviar caracteres acentuados, é necessário recorrer a algoritmos que integrem as especificações MIMO :

  • base64 para os anexos
  • quoted-printable (de abbréviation QP) para os caracteres especiais contidos no corpo da mensagem



É assim possível enviar um correio graças a um simples Telnet na porta 25 do servidor SMTP :

telnet smtp.kioskea.net 25


(o servidor indicado acima é inexistente de propósito, pode tentar substituindo kioskea.net pelo domínio do seu fornecedor de acesso à Internet)

Eis um sumário dos principais comandos SMTP



ComandoExemploDescrição
HELO (doravanteEHLO)EHLO 193.56.47.125Identificação com a ajuda do endereço IP ou do nome de domínio do computador remetente
MAIL FROM:MAIL FROM: expediteur@domaine.comIdentificação do endereço do remetente
RCPT TO:RCPT TO: destinataire@domaine.comIdentificação do endereço do destinatário
DATADATA messageCorpo do mail
QUITQUITSaída do servidor SMTP
HELPHELPLista dos comandos SMTP suportados pelo servidor



O conjunto das especificações do protocolo SMTP está definido no RFC 821 (desde Abril de 2001, as especificações do protocolo SMTP estão definidas no RFC 2821).

O protocolo POP3


O protocolo POP (Post Office Protocol , que se pode traduzir por "protocolo de posto dos correios") permite, como o seu nome o indica, recuperar o seu correio num servidor distante (o servidor POP). É necessário para as pessoas não ligadas permanentemente à Internet, para poderem consultar os 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 textuais radicalmente diferentes.

Tal como no caso do protocolo SMTP, o protocolo POP (POP2 e POP3) funciona graças a comandos textuais enviados ao servidor POP. Cada um dos comandos enviados pelo cliente (validado pela sequência 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.

Eis um quadro que recapitula os principais comandos POP2 :


Comandos POP2
Commande
Descrição
HELLOIdentificação através do endereço IP do computador remetente
FOLDER Nome da caixa a consultar
READNúmero da mensagem a ler
RETRIEVENúmero da mensagem a recuperar
SAVENúmero da mensagem a salvaguardar
DELETENúmero da mensagem a suprimir
QUITSaída do servidor POP2



Eis um sumário dos comandos POP3 :


EComandos POP3
Commande
Descrição
USER identifiantEste comando permite a autenticação. Deve ser seguido do nome do utilizador, quer dizer, uma cadeia de caracteres que identificam o utilizador no servidor. O comando USER deve preceder o comando PASS.
PASS mot_de_passeO comando PASS, permite indicar a palavra-passe do utilizador, cujo nome foi especificado aquando de um comando USER prévio.
STATInformação sobre as mensagens contidas no servidor
RETRNúmero da mensagem a recuperar
DELENúmero da mensagem a suprimir
LIST [msg]Número da mensagem a afixar
NOOPPermite deixar a ligação aberta no caso de inactividade
TOP <messageID> <n> Comando que afixa n linhas da mensagem, cujo número é dado em argumento. No caso de resposta positiva do servidor, este devolve os cabeçalhos da mensagem, seguidamente uma linha virgem e por último as n primeiras linhas da mensagem.
UIDL [msg]Pede ao servidor para enviar de novo uma linha que contém informações sobre a mensagem eventualmente dada em 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 que corresponde a uma mensagem existente sno servidor POP, quer dizer uma mensagem não apagada)
QUITO comando QUIT pede a saída do servidor POP3. Provoca a supressão de todas as mensagens marcadas como apagadas e reenvia o estado desta acção.



O protocolo POP3 gere assim a autenticação com a ajuda de um nome de utilizador e de uma palavra-passe, em contrapartida não é seguro porque as senha, assim como os mails, circulam às claras (de maneira não codificada) na rede. Na realidade, de acordo com o RFC1939, é possível codificar a palavra-passe que utiliza o algoritmo MD5 e assim beneficiar de uma autenticação protegida. Contudo, sendo este comando opcional, poucos servidores o aplicam. Por outro lado, o protocolo POP3 bloqueia a caixa de correio aquando da consulta, o que significa que uma consulta simultânea por dois utilizadores de uma mesma caixa de correio é impossível.

Tal como é possível enviar um correio electrónico graças à Telnet, é igualmente possível aceder ao seu correio recebido graças a um simples Telnet na porta do servidor POP (110, por defeito) :

telnet mail.kioskea.net 110

(o servidor indicado acima é voluntariamente inexistente, pode tentar substituindo kioskea.net pelo domínio do seu fornecedor de acesso à Internet)
S: +OK mail.kioskea.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 mon_pass    
S: +OK Maildrop ready    
C: STAT    
S: +OK 2 0    
C: TOP 1 5    
S: Subject: Bom-dia    
S: Salut Meandus,    
S: comment ca va?    
S :    
S: A bientot !    
C: QUIT    
S: +OK


A afixação dos dados que introduz depende do cliente Telnet que utiliza. De acordo com o seu cliente Telnet, poderá talvez ter de activar a opção echo local.

O protocolo IMAP


O protocolo IMAP (Internet Message Access Protocol) é um protocolo alternativo ao protocolo POP3 mas que oferece muitas mais possibilidades:

  • IMAP permite gerir vários acessos simultâneos
  • IMAP permite gerir várias caixas de correio
  • IMAP permite triar o correio de acordo com mais critérios

Mais informações


Para mais informações sobre o protocolo SMTP, deve consultar o RFC 821 que explica de maneira detalhada o protocolo :

Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Os-protocolos-de-servico-de-mensagens-smtp-pop3-e-imap4 .pdf

A ver igualmente


Messaging protocols (SMTP,POP3 and IMAP4)
Messaging protocols (SMTP,POP3 and IMAP4)
Protocolos de mensajería (SMTP, POP3 e IMAP4)
Protocolos de mensajería (SMTP, POP3 e IMAP4)
Die Mail Protokolle (SMTP, POP3, IMAP4)
Die Mail Protokolle (SMTP, POP3, IMAP4)
POP3, SMTP, IMAP - Protocoles de messagerie
POP3, SMTP, IMAP - Protocoles de messagerie
I protocolli di messaggeria (SMTP, POP3, IMAP4)
I protocolli di messaggeria (SMTP, POP3, IMAP4)
Este documento, intitulado « Os protocolos de serviço de mensagens (SMTP, POP3 e IMAP4) »a partir de Kioskea (pt.kioskea.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.