SMTP, POP3 e 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.