terça-feira, 26 de julho de 2011

Estudando correio eletrônico - Aula Prática

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 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: \<remetente@remetente.dominio\>
250 2.1.0 Sender OK
rcpt to:  \<carine@localhost\>
250 2.1.5 Recipient OK
data
354 Ok Send data ending with .
Enviando mensagem de teste.
.
250 2.6.0 Message received
quit

 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.
 Varios testes com o James.
 O James esta a servico da Carine.
 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 protocolo POP para ler as mensagens, normalmente, do seu servidor de 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

Um comentário:

Estudando correio eletrônico - Aula Prática

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