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 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 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 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.