Manipulando E-Mail Via Telnet

Introdução

Este documento explica como usar o comando telnet para acessar e "conversar" com diversos protocolos relacionados ao envio e recebimento de e-mail (SMTP, POP3, IMAP4). Objetivo principal aqui é servir de ferramenta de teste. O protocolo SMTP é usado para o envio de e-mails e POP3/IMAP4 são protocolos de recebimento.

SMTP

O protocolo SMTP (Simple Mail Transfer Protocol) é descrito na
RFC 821.

Abrir Conexão

Para abrir uma conexão, use o comando telnet nome-do-host smtp (SMTP é a porta 25).
$ telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 dharma.haxent ESMTP Sendmail 8.12.10/8.12.10; Sat, 17 Jan 2004 14:24:45 -0200
Ok, o servidor que estou conectado roda o Sendmail. Em um outro...
$ telnet nash smtp
Trying 192.168.200.101...
Connected to nash.
Escape character is '^]'.
220 nash.haxent ESMTP Postfix (2.0.9)
este roda Postfix.

Identificando-se

Use o comando HELO seu-host para dizer ao servidor de onde estás conectado. Bom, isso é meio furado, qualquer lixo que se botar ai vai funcionar.
HELO localhost
250 dharma.haxent Hello localhost.localdomain [127.0.0.1], pleased to meet you

Compor Mensagem

Vejamos como compor uma mensagem para o rruddaa@yahoo.com. Eu sou o ruda@haxent, vou deixar um Subject mas é opcional. O texto deve ser passado em ASCII e use o ponto . sozinho em uma linha para indicar o fim da mensagem.
MAIL FROM: ruda@localhost
250 2.1.0 ruda@localhost... Sender ok
RCPT TO: rruuddaa@yahoo.com
250 2.1.5 rruuddaa@yahoo.com... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Subject: Testando 1,2,3
Olah, como vai?
.
250 2.0.0 i0HHjEHS009506 Message accepted for delivery

Desconectar-se

Simplesmente digite QUIT.
QUIT
221 2.0.0 dharma.haxent closing connection
Connection closed by foreign host.

POP3

O protocolo POP3 (Post Office Protocol Version 3) é descrito na RFC 1939.

Abrir Conexão

Para abrir uma nova conexão, use o comando telnet nome-do-host pop3 (POP3 é a porta 110).
$ telnet nash pop3
Trying 192.168.200.101...
Connected to nash.
Escape character is '^]'.
+OK nash.haxent Cyrus POP3 v2.2.2-BETA-Invoca-RPM-2.2.2-2 server ready <1925083136.1075043121@nash.haxent>
Uma resposta positiva do servidor é indicada por +OK e uma resposta negativa é indicada por -ERR.

Identificando-se

Use o comando USER nome e em seguida PASS senha.
USER ruda
+OK Name is a valid mailbox
PASS hackme
+OK Mailbox locked and ready

Descontectar-se

Simplesmente digite QUIT.
QUIT
+OK
Connection closed by foreign host.