Post Office Protocol 3 POP3 COMUNICAÇÃO DE DADOS LESI 2012’13 POP3 • Este protocolo permite a transferência de todas as mensagens de uma caixa de correio localizada num determinado servidor online, para um dado cliente de email local, possibilitando ao utilizador fazer a gestão do seu correio eletrónico localmente. COMUNICAÇÃO DE DADOS LESI 2012’13 Este protocolo compreende 4 áreas: 1. Inicialização do serviço 2. Comunicação 3. Respostas 4. Sessão COMUNICAÇÃO DE DADOS LESI 2012’13 1. Inicialização do Serviço • Na fase inicial, o servidor de e-mail inicia o serviço POP3 e começa a ouvir: • Porta TCP 110, • Porta 995 se a ligação utilizar o protocolo SSL. • A conexão feita é sobre TCP, uma vez que interessa ter um feed-back sobre a transferência entre o emissor e o recetor. • Após o estabelecimento da conexão, o servidor POP3 envia uma mensagem de saudação ao cliente a qual confirma a ligação ao servidor. COMUNICAÇÃO DE DADOS LESI 2012’13 2. Comunicação • Enquanto a comunicação não for fechada ou abortada, o cliente de email está constantemente a trocar comandos e respostas com o servidor de POP3. • Os comandos interpretados pelo POP3 são constituídos por palavras-chave, seguidos ou não de um ou mais argumentos em case-insensitive. COMUNICAÇÃO DE DADOS LESI 2012’13 3. Resposta • As respostas no protocolo POP3 são constituídas por um indicador de estado e uma palavra-passe, seguidos ou não de informações adicionais e terminadas por um CRLF. • CRLF -> Mudança de linha • Na versão 3 do protocolo POP, existem dois indicadores de estados: • Positivo: “+OK” • Negativo: “-ERR” COMUNICAÇÃO DE DADOS LESI 2012’13 4. Sessão • Uma sessão no protocolo POP3 é caracterizada por um conjunto de estados durante o seu “tempo de vida”. • Após o envio da saudação ao cliente, o protocolo entra no estado de AUTHORIZATION (Autorização). • Nesta fase o servidor pede a autenticação ao cliente e se esta operação for bem sucedida, estão reunidas as condições para avançar para o estado de TRANSACTION (Transação). • No estado de TRANSACTION , o cliente faz pedidos ao servidor POP3. • Quando o cliente envia o comando QUIT a sessão entra no estado UPDATE (Atualização), liberta os recursos alocados no estado anterior e fecha a conexão TCP. COMUNICAÇÃO DE DADOS LESI 2012’13 COMUNICAÇÃO DE DADOS LESI 2012’13 Com SUCESSO Autorization Ligação bem sucedida: Servidor: +OK POP3 server ready USER: [email protected] PASS: 1234 Estado TRANSACTION Bloqueio caixa de entrada Sem SUCESSO COMUNICAÇÃO DE DADOS LESI 2012’13 Fecha a sessão Transaction • O cliente pode efetuar comandos repetidamente, sendo que a seguir a cada comando, o servidor emite uma resposta. • Comandos exclusivos da sessão TRANSACTION: a) STAT b) LIST c) RETR d) DELE e) NOOP f) RSET COMUNICAÇÃO DE DADOS LESI 2012’13 a) STAT • Este comando não tem argumentos. • Dá uma resposta positiva “+OK” seguido de um espaço, número de mensagens na pasta de entrada, seguido de espaço e tamanho da pasta de entrada em octetos. • Exemplo de um pedido de STAT: CLIENTE: STAT SERVIDOR: +OK 2 320 COMUNICAÇÃO DE DADOS LESI 2012’13 b) LIST • Tem parâmetro (opcional) o número de uma determinada mensagem. • O número não se pode referir a uma mensagem marcada como eliminada. • Se o comando for invocado com argumento, o servidor responde com uma linha que contem a informação sobre a mensagem indicada. Quando o comando é enviado sem parâmetros, o servidor responde com um status positivo seguido do número de mensagens na pasta de entrada e efetua uma listagem em modo multilinha. • Exemplo: CLIENTE: LIST SERVIDOR: +OK 2 messages SERVIDOR: 1 120 SERVIDOR: 2 200 COMUNICAÇÃO DE DADOS LESI 2012’13 c) RETR • O comando RETR tem como argumento (obrigatório) o número da mensagem • O número não se pode referir a uma mensagem marcada como eliminada. • Quando o comando RETR é invocado, o servidor POP3 envia uma resposta positiva seguida da informação relativa à mensagem na forma multilinha (conteúdo da mensagem). COMUNICAÇÃO DE DADOS LESI 2012’13 d) DELE • O comando DELE tem como argumento (obrigatório) o número da mensagem. • o número não se pode referir a uma mensagem marcada como eliminada. • Quando o comando RETR é invocado, o servidor POP3 marca a mensagem como eliminada. • A mensagem só é removida definitivamente quando a sessão passar para o modo UPDATE. • Enquanto não transita para o estado UPDATE, qualquer comando que for invocado sobre o número dessa mensagem, será gerada uma mensagem de erro. • Exemplo: CLIENTE: DELE 1 SERVIDOR: +OK message 1 deleted COMUNICAÇÃO DE DADOS LESI 2012’13 e) NOOP • O comando NOOP não tem argumentos e quando invocado não tem qualquer ação prática, apenas dá uma resposta positiva. COMUNICAÇÃO DE DADOS LESI 2012’13 f) RSET • O comando RSET não tem argumentos; • Quando invocado, desmarca as mensagens; • Informa do número de mensagens desmarcadas. • Exemplo: • C: RSET • S: +OK maildrop has 2 messages COMUNICAÇÃO DE DADOS LESI 2012’13 Update Comando QUIT Estado AUTHORIZATION Estado TRANSACTION Estado UPDATE (remove mensagens marcadas) SEM SUCESSO na autenticação ou inatividade COMUNICAÇÃO DE DADOS LESI 2012’13 Termina sessão Comandos Opcionais • Os comandos opcionais permitem ao cliente uma liberdade maior no tratamento das mensagens, preservando a implementação simples do protocolo POP3. • Existem apenas 4 comandos opcionais: • TOP • UIDL • USER • PASS • APOP COMUNICAÇÃO DE DADOS LESI 2012’13 a) TOP • • • • • O comando TOP tem dois argumentos obrigatórios: • Número da mensagem; • Número de linhas a serem apresentadas. Se o servidor responder positivamente (+OK), então a resposta é multilinha. O servidor envia o cabeçalho da mensagem, seguido de uma linha em branco, fazendo a separação entre o cabeçalho e o corpo da mensagem, e depois o número de linhas do corpo da mensagem. No caso do número de linhas pedidas pelo cliente ser superior ao número de linhas do corpo da mensagem, o servidor retorna a mensagem completa. Exemplo: CLIENTE: TOP 1 10 SERVIDOR: +OK SERVIDOR: <o servidor enviará o cabeçalho, linha em branco, e as 10 primeiras linhas do corpo da mensagem> COMUNICAÇÃO DE DADOS LESI 2012’13 b) UIDL • • • • • • Tem argumento (opcional) o número de uma determinada mensagem. Se for fornecido o argumento e o servidor responder positivamente (+OK), então a linha retornada é chamada “unique-id listing” para a mensagem indicada. Se não for fornecido o argumento e o servidor responder positivamente (+OK), a resposta é multilinha. Após a resposta inicial, para cada mensagem na caixa de correio o servidor responde com uma linha contendo informação dessa mensagem. O identificador único de uma mensagem é uma palavra arbitrária gerada pela servidor. Esta identifica singularmente a mensagem, e que é persistente entre sessões. Exemplo: CLIENTE:UIDL SERVIDOR:+OK SERVIDOR:1 wqtererQ000WBkdjhjd COMUNICAÇÃO DE DADOS LESI 2012’13 c) USER • Tem argumento (obrigatório) o nome da caixa de correio (utilizador). • Para se autenticar utilizando os comandos USER e PASS, o cliente primeiramente fará uso do comando USER. • Se o servidor responder positivamente (+OK), então o cliente poderá utilizar o comando PASS para finalizar o processo de autenticação, ou então utilizar o comando QUIT para terminar a sessão. • Em caso de resposta negativa(-ERR) o cliente poderá tentar nova autenticação ou utilizar o comando QUIT para terminar a sessão. • • Exemplo: CLIENTE: USER silva SERVIDOR: +OK silva is a real hoopy frood COMUNICAÇÃO DE DADOS LESI 2012’13 d) PASS • Tem argumento (obrigatório) uma palavra-chave. • Quando é utilizado o comando PASS, o servidor usa conjuntamente os comandos USER e PASS para determinar se o cliente tem acesso ou não à caixa de correio. • Exemplo: CLIENTE: USER SERVIDOR: +OK CLIENTE: PASS SERVIDOR: +OK COMUNICAÇÃO DE DADOS LESI 2012’13 pires pires is a real hoopy frood secret pires’s maildrop has 2 messages(320 octets) e) APOP • Tem dois argumentos (ambos obrigatórios): • Nome da caixa de correio; • Chave MD5. • Método de autenticação alternativo ao USER/PASS. • O envio da autenticação é encriptada. • Os servidores que tenham implementada a funcionalidade APOP, irão incluir na sua mensagem de boas vindas um “timestamp” (carimbo do tempo), que deverá ser sempre diferente a cada mensagem de boas vindas. • A palavra-chave MD5, é calculada aplicando um algoritmo, definido na RFC1321, ao carimbo do tempo (incluindo os parênteses de ângulo) seguido de uma palavra chave partilhada . • Esta palavra chave é conhecida apenas pelo cliente e servidor POP3. COMUNICAÇÃO DE DADOS LESI 2012’13 e) APOP (cont.) • • • • A chave MD5 é composta por 16 octetos, enviados em hexadecimal, recorrendo ao uso de caracteres minúsculos. Quando o servidor recebe um comando APOP, verifica a chave MD5. Se a chave estiver correta, responde positivamente e passa ao estado de TRANSACTION, senão responde negativamente e continua no estado de AUTORIZATION. Exemplo: SERVIDOR: +OK POP3 server ready<[email protected]> CLIENTE: APOP mrose c4c9334bac560ecc979e58001b3e22fb SERVIDOR: +OK maildrop hás 1 message (369 octets) Neste exemplo, a palavra-chave partilhada é “tanstaff”. O algoritmo MD5 aplicado a esta palavra: <[email protected]>tanstaaf que produz a chave MD5: c4c9334bac560ecc979e58001b3e22fb COMUNICAÇÃO DE DADOS LESI 2012’13 Conclusão • O protocolo POP3 apresenta-se como um protocolo simples e ideal para máquinas com pouca capacidade de processamento. • Como este protocolo está apenas conectado ao servidor durante o tempo necessário para descarregar as mensagens da pasta de entrada, este é recomendado em situações em que o custo da ligação é proporcional ao tempo de uso. COMUNICAÇÃO DE DADOS LESI 2012’13 Trabalho realizado por: #7996 Anthony Cardante #7829 Luís Pereira #7999 Paulo Silva COMUNICAÇÃO DE DADOS LESI 2012’13