Redes de Computadores
Grupo de Redes de
Computadores
E-Mail – Correio Electrónico
Arquitectura
 Diferentes cenários possíveis
 Quatro componentes base:
– MUA (Mail User Agent)
 Software cliente que corre do lado do utilizador e permite a gestão do correio electrónico
o Exemplo: Microsoft Outlook, Mozilla Thunderbird, Gmail
– MTA (Mail Transfer Agent)
 Software responsável pela transferência do correio electrónico entre computadores
o Exemplo: Postfix, Exim, Sendmail, Exchange, Qmail
– MDA (Mail Delivery Agent) – tipicamente incluído juntamente com o MTA destino
 Componente responsável pela entrega local do correio do utilizador depois de recebido
pelo MTA.
– MAA (Message Access Agent)
 Permite a um cliente aceder à sua caixa de correio remotamente (servidor POP/IMAP)
ISEL-ADEETC-GRC
2
1º Cenário – Clientes Webmail
Servidor de Mail
Mail
Mail
UA
UA
Interface Webmail
Origem
ISEL-ADEETC-GRC
Destinatário
3
2º Cenário – Clientes de Webmail diferentes
Servidor de Mail
MTA Cliente
Servidor de Mail
MTA Servidor
Mail
Mail
UA
UA
Interface Webmail
Interface Webmail
Destinatário
Origem
ISEL-ADEETC-GRC
4
3º cenário (o mais comum)
MTA Cliente
UA
MAA Cliente
UA
Destinatário
Origem
Mail
Mail
Servidor de Mail
MTA Servidor/Cliente
Mail
ISEL-ADEETC-GRC
Servidor de Mail
MTA Servidor
MAA Servidor
5
E-Mail – Correio Electrónico
Grupo de Redes de
Computadores
User Agent
User agent
 Permite ao utilizador gerir o seu correio electrónico
User Agent
Compor
Mensagens
Ler
Mensagens
Responder a
Mensagens
ISEL-ADEETC-GRC
Reencaminhar
Mensagens
Gerir a Caixa
de Correio
7
Formato do Correio Electrónico
Nuno Cruz
Rua Conselheiro Emídio Navarro, 1
1959-007 Lisboa
Portugal
Google Inc.
1600 Amphitheatre Parkway
Mountain View, CA 94043
USA
Google Inc.
1600 Amphitheatre Parkway
Mountain View, CA 94043
USA
MAIL FROM: [email protected]
RCPT TO: [email protected]
Envelope
From: ―Nuno Cruz‖ <[email protected]>
To: ―Google IPv6‖ <[email protected]>
Date: 21/04/2009
Subject: Acesso IPv6
Cabeçalho
Assunto: Acesso IPv6
Caros,
Pedimos desta forma que nos permitam o acesso através de
IPv6 aos vossos servidores.
Cumprimentos,
Nuno Cruz
Caros,
Pedimos desta forma que nos permitam o acesso através de
IPv6 aos vossos servidores.
Cumprimentos,
Corpo
Nuno Cruz
Mensagem
ISEL-ADEETC-GRC
8
Formato dos endereços
 A partir do domínio é possível através de registos DNS do tipo MX,
obter a lista de servidores de correio electrónico
ISEL-ADEETC-GRC
9
MIME (Multipurpose Internet Mail Extensions)
 Permite o transporte transparente de dados genéricos sobre o
correio electrónico – é uma metadata que descreve o formato do
conteúdo
– O protocolo que permite o envio de mensagens (SMTP) só permite o uso de
caracteres ASCII a 7 bits (sem acentos e caracteres ―printáveis‖)
Utilizador
• UA
MIME
MTA
MTA
• Ascii 7-bit
• Ascii 7-bit
ISEL-ADEETC-GRC
MIME
Utilizador
• UA
10
Cabeçalhos MIME
Cabeçalho do Email
MIME-Version: ―versão do MIME‖
Content-Type: ―tipo/subtipo‖
Content-Transfer-Encoding: ―tipo de codificação‖
Cabeçalhos MIME
Corpo do Email
Date: Tue, 21 Apr 2009 22:12:10 +0100
From: Rui Santos <[email protected]>
To: Nuno Cruz <[email protected]>
Subject: Vê lá se te interessa
MIME-Version: 1.0
Content-Type: text/plain;
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Cabeçalhos MIME
Programa da conferência …
ISEL-ADEETC-GRC
11
Content-Type (Tipos e subtipos)
Tipo
Subtipo
Descrição
Texto
Plain
Não Formatado
HTML
HTML
Mixed
Diferentes partes ordenadas com tipos de dados diferentes
Alternative
As diferentes partes são diferentes formas de representar o mesmo
conteúdo
RFC822
O corpo é uma mensagem encapsulada
Partial
Parte de uma mensagem fragmentada
JPEG
Imagem no formato JPEG
GIF
Imagem no formato GIF
Video
MPEG
Vídeo em MPEG
Application
Octet-Stream
Tipo genérico de dados a 8 bits (usado na maioria dos anexos)
Multipart
Message
Image
ISEL-ADEETC-GRC
12
Content-Transfer-Encoding (Tipos de codificação)
Tipo
Descrição
7bit
Ascii ―printável‖
8bit
Caracteres não ASCII formatados com linhas (CRLF)
O servidor tem de suportar a extensão 8BITMIME
Binary
Qualquer sequência de octetos
O servidor tem de suportar a extensão BINARYMIME
Base64
Usado para codificar sequências de octetos que satisfaçam a regra dos
7bits
Quoted-printable
Como o anterior mas de forma legível, desde que se use um código de
página dos EUA, os restantes caracteres não são legíveis (codificados
como um sinal de ―=― seguido do código do caracter
ISEL-ADEETC-GRC
13
Base64
 Converte dados genéricos para sequências de caracteres
―printáveis‖
 Divide a sequência de bits em blocos de 6 bits, codifica esses 6 bits
em ASCII ―printável‖
 A sequência de caracteres ISEL resulta em ―SVNFTA==―
ISEL-ADEETC-GRC
14
Base64 - Tabela
Valor
Char
Valor
Char
Valor
Char
Valor
Char
Valor
Char
Valor
Char
0
A
11
L
22
W
33
h
44
s
55
3
1
B
12
M
23
X
34
i
45
t
56
4
2
C
13
N
24
Y
35
j
46
u
57
5
3
D
14
O
25
Z
36
k
47
v
58
6
4
E
15
P
26
a
37
l
48
w
59
7
5
F
16
Q
27
b
38
m
49
x
60
8
6
G
17
R
28
c
39
n
50
y
61
9
7
H
18
S
29
d
40
o
51
z
62
8
I
19
T
30
e
41
p
52
0
63
9
J
20
U
31
f
42
q
53
1
10
K
21
V
32
g
43
r
54
2
ISEL-ADEETC-GRC
/
15
Quoted-printable
 Todos os caracteres que não sejam ―printáveis‖ são representados
pelo sinal de igual seguido do código ASCII do carácter em
hexadecimal.
 O próprio sinal de igual é representado pelo seu código ASCII
(decimal 61/hexadecimal 3D) ―=3D‖
 O carácter ―ó‖ é representado pela sequência ―=F3‖
 Exemplo:
– Comiss=E3o Pedag=F3gica do DEETC
ISEL-ADEETC-GRC
16
E-Mail – Correio Electrónico
Grupo de Redes de
Computadores
Mail Transfer Agent
SMTP (Simple Mail Transfer Protocol)
SMTP
SMTP
Origem
Destinatário
LAN/WAN
LAN/WAN
INTERNET
Servidor de Mail
Servidor de Mail
Tipicamente o MTA está à escuta no porto 25 sobre TCP
ISEL-ADEETC-GRC
18
Comandos e Respostas
Comandos
MTA
Cliente
Respostas
MTA
Servidor
 Formato dos comandos
Comando: Parâmetros
ou
Comando
 Formato das respostas
XXX ―Descrição Textual‖
XXX = Código de Erro de 3 Dígitos
ISEL-ADEETC-GRC
19
Comandos
Comando
Descrição
HELO <domínio>
Identificar o MTA cliente
MAIL FROM: <origem>
Identifica o remetente
RCPT TO: <destino>
Identifica o destinatário
DATA
Inicia a transmissão da mensagem
QUIT
Termina a sessão
RSET
Limpa o envelope no servidor
NOOP
Keep-alive da ligação
HELP
TURN
Inverter o sentido da entrega
ISEL-ADEETC-GRC
20
Respostas (1/2)
Código
Descrição
Respostas positivas
211
Estado do sistema
214
Resposta ao comando HELP
220
Serviço pronto
250
Comando completo
251
O utilizador não é local, a mensagem vai ser encaminhada
Respostas positivas intermédias
354
Iniciar o envio do e-mail
Resposta negativa temporária
421
Serviço não disponível
450
Caixa de correio indisponível
451
Comando abortado: erro local ao processar
452
Espaço em disco insuficiente
ISEL-ADEETC-GRC
21
Respostas (2/2)
Código
Descrição
Respostas negativas finais
500
Erro de sintaxe, comando não reconhecido
501
Erro de sintaxe nos parâmetros ou argumentos
502
Comando não implementado
503
Sequência de comandos errada
504
Parâmetro do comando não implementado
550
Caixa de correio indisponível
551
O utilizador não é local
552
Foi excedido o espaço em disco disponível para a transacção
553
Nome da caixa de correio não permitido
554
A transacção falhou
ISEL-ADEETC-GRC
22
Estabelecimento da ligação
MTA
Cliente
MTA
Servidor
220 smtp2.net.ipl.pt ESMTP Exim 4 IPLNet09
HELO pc1.net.local
250 smtp2.net.ipl.pt Hello net.ipl.pt [10.100.255.198]
ISEL-ADEETC-GRC
23
Transferência das mensagens
MTA
Cliente
MTA
Servidor
250 OK
RCPT TO: [email protected]
ENVELOPE
MAIL FROM: [email protected]
250 OK
DATA
From: Nuno Cruz <[email protected]>
To: Teste <[email protected]>
Date: Tue, 21 Apr 2009 22:12:10 +0100
CABEÇALHO
354 start mail input
Subject: Teste 123
“Linha em branco”
Isto é um teste.
.
CORPO
Bom dia,
250 OK
ISEL-ADEETC-GRC
24
Fecho da ligação
MTA
Cliente
MTA
Servidor
QUIT
221 smtp2.net.ipl.pt closing connection
ISEL-ADEETC-GRC
25
ESMTP
 O ESMTP adiciona novas funcionalidades ao SMTP
 Os clientes usam o EHLO para indicarem ao servidor que querem e
suportam ESMTP (após o servidor anunciar suporte deste)
 Novas funcionalidades
–
–
–
–
–
–
–
–
–
–
–
8BITMIME — Transmissão de dados a 8 bits, RFC 1652
ATRN — Inversão da entrega de correio electrónico autenticada, RFC 2645
SMTP-AUTH —SMTP autenticado, RFC 2554
CHUNKING — Permite a transferência de dados em binário, o cliente indica o
tamanho à cabeça, RFC 3030
DSN — Notificação do estado da entrega, RFC 3461
ETRN — Turn expandido, RFC 1985
HELP — Ajuda, RFC 821
PIPELINING — Enviar mais que um comando por pacote, RFC 2920
SIZE — Declarar o tamanho da mensagem, RFC 1870
STARTTLS — Iniciar um canal cifrado, RFC 3207 (2002)
UTF8SMTP — Permitir codificação em UTF-8 no nome das caixas de correio e
cabeçalhos, RFC 5336
ISEL-ADEETC-GRC
26
E-Mail – Correio Electrónico
Grupo de Redes de
Computadores
Message Access Agent
Modelos de funcionamento
 Offline (POP3 - Post Office Protocol)
– O cliente liga-se ao servidor e obtém todo o correio electrónico existente neste
– Tudo é guardado no cliente
 Online (IMAP4 - Internet Message Access Protocol)
– Cliente liga-se ao servidor
– Todos os e-mails são mantidos no servidor
 Disconnected (IMAP4)
– O cliente está síncrono com o servidor
– O servidor é quem tem a autoridade sobre os e-mails
ISEL-ADEETC-GRC
28
POP3 e IMAP4
SMTP
SMTP
POP/IMAP
Origem
Destinatário
LAN/WAN
LAN/WAN
INTERNET
Servidor de Mail
Servidor de Mail
Tipicamente o MAA está à escuta no porto 110 (POP3) ou 143 (IMAP4)
ISEL-ADEETC-GRC
29
POP3
MAA/POP3
Cliente
O comando LIST
obtém o tamanho em
bytes de uma
mensagem individual,
se não indicarmos a
mensagem obtém de
todas.
MAA/POP3
Servidor
+OK IPLNet IMAP/POP ready. <3d07.1cb.4RQ==@ribble>
USER [email protected]
+OK
Enviar o utilizador
PASS 123xpto456
+OK
Enviar a password
STAT
+OK 3 1500
LIST 2
+OK 2 500
DELE 2
+OK 2
O comando STAT
obtém o numero de
mensagens e o
tamanho destas em
bytes
Apaga as mensagens
QUIT
+OK
ISEL-ADEETC-GRC
Terminar a sessão
30
Comandos







USER name
PASS password
APOP name digest - (opcional)
STAT - saber quantas mensagens que existem e tamanho total
LIST - saber o tamanho de cada mensagem existentes
RETR msg - Ler uma mensagem
DELE msg - Apagar uma mensagem
 RSET <CRLF>
 NOOP <CRLF>
 QUIT <CRLF>
 TOP msg lines <CRLF>
 UIDL
ISEL-ADEETC-GRC
31
IMAP
 Permite dividir o email por pastas
 Diferentes modos de operação
 Próximo do POP em termos de funcionamento
 Lista muito extensa de comandos
 Mais complexo que o POP
ISEL-ADEETC-GRC
32
IMAP – Exemplo 1/3
* OK IPLNet IMAP/POP ready.
Obtém as capacidades do servidor
1 capability
* CAPABILITY IMAP4rev1 SORT IDLE CHILDREN QUOTA STARTTLS D AUTH=CRAM-MD5
1 OK Capability completed.
2 authenticate CRAM-MD5
+ OTcyMzU2TI0Mjk5OTc0OEByaWJibGU+
Autenticação segura
cHJpYmVpcm9AbmV0LmAMDhkNjI2NmY2NDdkN2RkNzM3NzhiZg==
2 OK Logged in.
Lista as pastas subscritas no servidor
3 lsub "" "*"
* LSUB () "/" "INBOX"
* LSUB () "/" "Drafts"
* LSUB () "/" "Sent"
* LSUB () "/" "ISEL"
* LSUB () "/" "DEETC―
* LSUB () "/" "Junk―
3 OK Lsub completed.
Legenda:
Respostas do servidor
Comandos do cliente
ISEL-ADEETC-GRC
33
IMAP – Exemplo 2/3
Selecciona a pasta ―INBOX‖
5 select "INBOX"
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $Forwarded Junk NonJunk)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $Forwarded Junk NonJunk \*)] Flags permitted.
* 22 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1193263575] UIDs valid
* OK [UIDNEXT 24658] Predicted next UID
5 OK [READ-WRITE] Select completed.
6 getquotaroot "INBOX"
Obtém o estado de ocupação em disco da
* QUOTAROOT "INBOX" "User quota"
pasta
* QUOTA "User quota" (STORAGE 3756841 5120000)
6 OK Getquotaroot completed.
7 UID fetch 1:* (FLAGS)
Obter as FLAGS para todas as mensagens
* 1 FETCH (UID 24084 FLAGS (\Flagged \Seen))
INBOX
* 2 FETCH (UID 24356 FLAGS (\Flagged \Seen))
* 3 FETCH (UID 24358 FLAGS (\Flagged \Seen))
* 4 FETCH (UID 24380 FLAGS (\Seen))
* 5 FETCH (UID 24390 FLAGS (\Answered \Flagged \Seen NonJunk))
* 6 FETCH (UID 24421 FLAGS (\Flagged \Seen NonJunk))
7 OK Fetch completed.
Legenda:
Respostas do servidor
Comandos do cliente
ISEL-ADEETC-GRC
34
na
IMAP – Exemplo 3/3
Impedir que a ligação feche por inactividade
8 IDLE
+ idling
DONE
8 OK Idle completed.
Obter a mensagem com o identificador
9 UID fetch 24653 (UID RFC822.SIZE BODY.PEEK[])
24653
* 21 FETCH (UID 24653 RFC822.SIZE 1275 BODY[] {1275}
Date: Fri, 22 May 2009 10:25:02 GMT
To: [email protected]
From: [email protected]
Subject: Set Daylight Saving Time.
Content-Type: text/plain; charset=iso-8859-1
Mensagem
Name : AP7952-PSW2-IPLNet
Location : Datacenter IPL campus ISEL - Bastidor 6H
Contact : Pedro Ribeiro / Nuno Cruz
System: Set Daylight Saving Time.
Desligar a sessão
9 OK Fetch completed.
10 logout
* BYE Logging out
10 OK Logout completed.
ISEL-ADEETC-GRC
Legenda:
Respostas do servidor
Comandos do cliente
35
SIEVE
 Linguagem usada para criar filtros de correio electrónico
– Os filtros são executados directamente pelo MDA durante a entrega do correio
 Define também o protocolo (ManageSieve) usado para transporte
dos scripts de SIEVE
 O script é enviado para o servidor através de uma ligação TCP no
porto 2000
 O ManageSieve ainda está em draft (draft-ietf-sieve-managesieve09 de 17 de Janeiro de 2009)
ISEL-ADEETC-GRC
36
SIEVE - Exemplo de um script
# example script
require ["fileinto", "reject"];
# Messages bigger than 100K will be rejected with an error message
if size :over 100K {
reject "I'm sorry, I do not accept mail over 100kb in size.
Please upload larger files to a server and send me a link.
Thanks.";
}
# Mails from a mailing list will be put into the folder "mailinglist"
elsif address :is ["From", "To"] "[email protected]" {
fileinto "INBOX.mailinglist";
}
ISEL-ADEETC-GRC
37
Sumário
 Princípios de funcionamento do email
 Protocolo SMTP
 Protocolo POP3 e IMAP
 Filtros SIEVE
 Slides realizados pelo docente Nuno Cruz em 03/2012
ISEL-ADEETC-GRC
38
Download

Redes de Computadores