SMTP, POP3 e IMAP4

  1. SMTP
  2. ESMTP
  3. POP3
  4. IMAP4

Nesse tutorial, vamos ver os protocolos SMTP, POP3 e IMAP4. Enquanto o primeiro é usado para envio de e-mails, os dois últimos são usados para receber e-mails.

Como essa série de tutoriais de TCP/IP é voltada para desenvolvedores, serão mostrados detalhes dos comandos usados para enviar e-mails usando SMTP, mas não serão mostrados detalhes de como usar os protocolos POP3 e IMAP4, pois no dia-a-dia da maioria dos desenvolvedores, trabalhar com o protocolo SMTP para envio de e-mails é uma necessidade muito mais comum do que trabalhar com protocolos para receber e acessar e-mails.

SMTP

Os comandos suportados pelo SMTP podem ser divididos em duas categorias principais: os comandos básicos e os comandos estendidos (ESMTP). Os comandos básicos são suportados por todos os servidores SMTP, e os comandos estendidos são suportados pela maioria deles. Vamos começar vendo os principais comandos básicos:

HELP
Exibe um lista dos comandos SMTP.
HELO
Serve para que o remetente se apresente ao servidor SMTP. Geralmente, é o primeiro comando usado. Exemplo: HELO IP / domínio.
MAIL FROM
Especifica o remetente de um e-mail. Exemplo: MAIL FROM:<email@exemplo.com>.
RCPT TO
Especifica um destinatário de um e-mail. Pode ser usado várias vezes para especificar múltiplos destinatários. Exemplo: RCPT TO:<email@exemplo.com>.
DATA
Esse comando serve para especificar o conteúdo da mensagem. Ele pode ser usado tanto para especificar seu corpo, como também o cabeçalho e os anexos. Primeiramente, você deve digitar apenas DATA para informar ao servidor que você quer enviar o conteúdo do e-mail. Há um detalhe importante que você pode não entender na resposta do servidor. Ele fala que você deve encerrar a mensagem com <CRLF>.<CRLF>. O <CRLF> que ele menciona é uma quebra de linha. Assim, quando você terminar de enviar o conteúdo da mensagem, você deve quebrar uma linha, colocar um ponto, e quebrar uma linha novamente.
RSET
Esse comando cancela a transação de e-mail atual, de forma que a sessão possa voltar ao seu estado inicial.
QUIT
Encerra a conexão com o servidor SMTP.

Você pode usar o protocolo telnet para enviar e-mails usando SMTP:

telnet exemplo.com 25

Vamos ver um exemplo de envio de e-mail usando os comandos básicos do SMTP (o cliente é identificado com C e o servidor é identificado com S):

C: HELO 230.197.93.108
S: 250 Hello 230.197.93.108
C: MAIL FROM:<remetente@exemplo.com>
S: 250 OK
C: RCPT TO:<destinatario@exemplo.com>
S: 250 OK
C: DATA
S: 354 Send message content; end with <CRLF>.<CRLF>
C: Subject: Assunto
C:
C: Corpo da mensagem.
C: .
S: 250 OK
C: QUIT
S: 221 Bye

O SMTP tem duas versões alternativas: o SMTPS (SMTP com SSL), que funciona na porta 465, por padrão; o SMTP TLS (SMTP com TLS), que funciona na porta 587, por padrão.

ESMTP

Os comandos estendidos do SMTP podem ser usados quando você usa o comando EHLO (Extended Hello) ao invés do HELO para se apresentar ao servidor. A sintaxe é a mesma. A diferença é que além de se apresentar, os comandos do ESMTP ficam disponíveis. O servidor geralmente responde mostrando uma lista dos comandos estendidos que podem ser usados.

Dois comandos estendidos bem comuns são o AUTH e o SIZE. O AUTH serve para se autenticar no servidor, como o nome indica. Você pode usar os tipos de autenticação suportados pelo seu servidor, como PLAIN e LOGIN. Exemplo: AUTH LOGIN. Já o SIZE é informado juntamente com o remetente, depois que o remetente é informado:

MAIL FROM:<remetente@exemplo.com> SIZE=1000

O tamanho é especificado em bytes. Ele também pode ser informado pelo servidor. Enquanto o cliente usa o SIZE para informar o tamanho da mensagem, o servidor usa para informar o tamanho máximo que a mensagem deve ter.

POP3

O POP3 é um protocolo usado para acessar e-mails. Ele é usado na porta 110, por padrão. Ele também tem uma versão segura, que criptografa os dados que trafegam nele, que é o POP3S, que usa SSL / TLS para criptografar os dados.

O POP3 também funciona com comandos de texto, assim como o SMTP. Assim, você também pode usar o Telnet para usar esse protocolo:

telnet exemplo.com 110

IMAP4

O IMAP4 também é usado para acessar e-mails como o POP3, só que ele tem várias melhorias em relação ao POP3, como a administração de várias caixas de e-mail. Ele funciona por padrão na porta 143 e também tem uma versão com criptografia, que é o IMAPS. Essa versão usa SSL / TLS e funciona na porta 993, por padrão.