Estudando correio eletrônico - Aula Prática
Autor: Carine Rodrigues | Publicado: 2011-07-26T11:39:00-03:00

Vamos estudar o serviço de Correio Eletrônico utilizando o Apache James Server, um rico conjunto de módulos e bibliotecas escritos em Java, que permite à você construir um servidor avançado de correio.

Deixo claro que esta aula prática é destinada à disciplina de Redes, quando você está estudando a camada de aplicação, e obviamente, aos interessados que gostariam de adquirir conhecimento.

Primeiramente, vamos instalá-lo, e utilizaremos o Telnet (Protocolo de Terminal Virtual) para utilizar os serviços de correio eletrônico do James Server. 
O Telnet é um protocolo que permite acesso remoto entre computadores, podendo utilizar os mais diversos protocolos e serviços da camada de aplicação. No Linux, tem a implementação do Telnet, que é o que nós iremos utilizar. Existem vários aplicativos que implementam o protocolo, tais como Putty, Jtelnet, ShellTelnet, entre outros.
Então vamos lá.

Para instalar o James Server. Baixe aqui.
Extraia o arquivo em uma pasta qualquer.
Para inicializar o servidor, entre na pasta /bin.
Execute como root: ./james start
Pronto. O servidor está instalado localmente e as portas 25 (Protocolo SMPT) e 110 (Protocolo POP3) estão&nbsp;alocadas ao seu servidor.

Por padrão o servidor SMTP cria um email no seguinte formato:
nomeDaSuaMaquina@localhost

Para fazer os testes com o telnet, é necessário que você crie um usuário, porque uma vez instalado o servidor, ele não tem usuários locais registrados. 
Para registrar um usuário local, abra o terminal. Logue como root. 
Digite: telnet localhost 4555.
Digite help, e você verá o comando para criar novos usuários. É o passo 5 do tutorial de instalação do James Server. 

Agora sim o JamesServer está pronto para uso.

Vamos enviar e receber um e-mail, para ver como funciona.

1 - Enviar uma mensagem ao servidor de correio utilizando SMTP
Para esta atividade não há necessidade do agente de usuário.
telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 127.0.1.1 SMTP Server (JAMES SMTP Server 3.0-M1) ready Tue, 26 Jul 2011 11:20:25 -0300 (BRT)
HELO remetente.dominio
250 127.0.1.1 Hello remetente.dominio (localhost [127.0.0.1])
mail from: \&lt;remetente@remetente.dominio\&gt;

	<!--
		@page { margin: 2cm }
		P { margin-bottom: 0.21cm }
	-->
	
250 2.1.0 Sender  OK
rcpt to:&nbsp;&nbsp;\&lt;carine@localhost\&gt;
250 2.1.5 Recipient  OK
 data
354 Ok Send data ending with .
Enviando mensagem de teste.
.
250 2.6.0 Message received
 quit

&nbsp;Os comandos SMTP HELO, mail from, rcpt to e data são autoexplicativos.
No comando rcpt to você deve colocar o nome de usuário que você criou.

Pronto! Enviou uma mensagem utilizando o protocolo SMTP.

 2 - Ler mensagens do servidor de correio utilizando o POP3

 telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK 127.0.1.1 POP3 server (JAMES POP3 Server ) ready 
 user carine
+OK 
 pass carine
+OK Welcome carine
 list
+OK 2 617
1 265
2 352
.
 retr 2
+OK Message follows
Return-Path: 
Received: from localhost ([127.0.0.1])
by 127.0.1.1 (JAMES SMTP Server ) with SMTP ID 14
for ;
Mon, 25 Jul 2011 15:50:21 -0300 (BRT)
Ola. Mandando segunda mensagem.
&nbsp;Varios testes com o James. 
&nbsp;O James esta a servico da Carine. 
&nbsp;Sem caracteres especiais.
.
quit


Pronto. É possível ler todos os e-mails.
3 -  Acessar servidores de correios que utilizam SSL
Os servidores de correio eletrônico Google e Hotmail utilizam criptografia via SSL. Por isso, não dá para usar o telnet para verificar Gmail e Hotmail. Para acessá-los, você deve instalar o OpenSSL em seu computador.
Utilize o OpenSSL para abrir uma conexão segura (TCP + SSL) e usar o&nbsp;protocolo POP para ler as mensagens, normalmente, do seu servidor de&nbsp;correio.

 openssl s_client -crlf -connect pop.gmail.com:995
 openssl s_client -crlf -connect pop3.live.com:995

Para fazer login e ler os e-mails, utilize os mesmos comandos acima: user, pass, list, retr.



Eu e Thiago fizemos o tutorial.
Espero que seja útil.
Grande abraço,
Carine