Correio Eletrônico
E-mail & SMTP
Redes de Computadores II
Tópicos em Sistemas de Computação
Prof. Dr. Adriano Mauro Cansian
adriano@acmesecurity.org
E-mail…
“Os usuários possuem uma relação
de amor e ódio com o e-mail:
e
les
amam usá-lo, e odeiam quando ele
não funciona.”
– Craig Hunt
Sistema de E-mail
Apesar das redes sociais...
O Correio Eletrônico ainda é uma das aplicações
mais difundidas da Internet.
• Facilidade de uso, velocidade e amplo poder de
troca de informações.
•
Muitas aplicações críticas usam e-mail
.
• “
off-line
”: não depende da outra ponta estar on-line.
3
(C) 2016 Adriano Mauro Cansian
Número de contas e usuários de e-mail
Email Statistics Report, 2013-2015 Executive Summary
http://www.radicati.com/wp/wp-content/uploads/2015/02/ Email_Market_2015-2019,_Executive_Summary.pdf
Mercado associado ao correio eletrônico
2016 - 2020
(C) 2016 Adriano Mauro Cansian 5
http://www.radicati.com/wp/wp-content/uploads/2016/01/Email_Market_2016-2020_Executive%20Summary.pdf
Worldwide Daily Email Traffic,
2015 – 2019
(*)
(em bilhões de mensagens)
(C) 2016 Adriano Mauro Cansian 7
(*) http://www.radicati.com/wp/wp-content/uploads/2015/02/Email_Market_2015-2019,_Executive_Summary.pdf
QuanUdade de contas corporaUvas e pessoais(*)
(em milhões)
(*) estimativas THE RADICATI GROUP, INC.
Mas, nem todo mundo domina...
(C) 2016 Adriano Mauro Cansian 9
...nem um pouco.
. . .
Received: from edutec.unesp.br (edutec.unesp.br [IPv6:2801:88:1000:ead::66]) by ceti.nead.unesp.br (Postfix) with ESMTP id 81204EE16D
for <adriano@ibilce.unesp.br>; Fri, 14 Nov 2014 16:30:01 -0200 (BRST) Date: Fri, 14 Nov 2014 16:30:01 -0200
To: adriano@ibilce.unesp.br
From: Root User <root@localhost.acmesecurity.org>
Reply-To: no_reply@nead.unesp.br
Subject: Informe: Ambientes Virtuais de Aprendizagem Message-ID: e261931cbe32f90066829a84298ba3a8@edutec.unesp.br .
Conceitos e fundamentos
E-mail e SMTP
Componentes do Correio eletrônico
MUA: Mail User Agent
MTA: Mail Transfer Agent
MDA: Mail Delivery Agent
Componentes
•
Veremos inicialmente o dois principais
componentes à
MUA
e o
MTA
.
•
Depois entenderemos o protocolo SMTP.
•
Em seguida veremos os outros dois
componentes à
MDA
e
MAA
.
13
(C) 2016 Adriano Mauro Cansian
Definições dos componentes
• O sistema de e-mail é formado duas entidades principais à MUA e MTAMUA - Mail User Agent
• Aplicações para ler, compor, responder mensagens eletrônicas.
• Exemplos: pine, mail, Mail, elm, Pegasus Mail, Eudora, etc...
MTA - Mail Transport Agent (em alguns textos Mail Transfer Agent)
• MTAs são programas que se encarregam de entregar
mensagens, e redirecionar mensagens entre computadores.
• MTAs mais conhecidos: sendmail e o postfix.
• Postfix (http://www.postfix.org) e Sendmail (http://www.sendmail.org)
15
(C) 2016 Adriano Mauro Cansian
Exemplo de MUA
17
(C) 2016 Adriano Mauro Cansian
Exemplo de um MUA com interface gráfica no sistema Mac OS X
MTA (1)
• O programa
MTA é necessário
à a entrega de correio
eletrônico em redes raramente é uma tarefa simples.
–
Transportar mensagens frequentemente se estende além dos
domínios da máquina local.
–
MTAs mais usados:
• No Unix: Postfix e Sendmail.
• No Windows: Windows SMTP server(*) e hMailServer(**)
(*) não instalado por Default no Windows 7 e Windows 8 (**) https://www.hmailserver.com/
MTA (2)
O MTA implementa o protocolo de transporte de
mensagens (SMTP).
– Envia mensagens de uma máquina para outra na mesma rede. – Redirecionar mensagens de uma rede para outras redes.
– Eventualmente redes de arquitetura radicalmente diferentes.
(MTA não é apenas o SMTP)
19
(C) 2016 Adriano Mauro Cansian
MTA (3)
• O MTA roteia a mensagem recebida do programa do usuário, com base no endereço eletrônico do destino.
– Toma decisão do que fazer.
Para as mensagens em SAÍDA:
• O MTA recebe a mensagem vinda do programa do usuário (MUA); • Interpreta o endereço eletrônico;
• Re-escreve o endereço das maneira apropriada para a entrega; e • Roteia a mensagem através do método correto.
Para as mensagens em ENTRADA:
• O MTA interpreta o endereço;
• Envia para o módulo de entrega ao usuário
– (MDA à visto mais adiante);
MTA (4)
• O MTA realiza ainda mais
duas funções
:
–
Implementa o protocolo SMTP
• Simple Mail Transfer Protocol
• Padrão para mensagens na Internet à RFC-821.
–
Permite criação de “
aliases
”.
• Sinônimos de endereços.
21
(C) 2016 Adriano Mauro Cansian
SMTP
[RFC 821]
• Porta 25/TCP.
• Transferência direta
– servidor remetente envia direto ao servidor receptor.
• Três fases da transferência
(do SMTP / não confunda com TCP!):
–
Handshaking (cumprimento)
à
não confunda com TCP!
–
Transferência das mensagens.
–
Encerramento.
• Interação comando/resposta
–
Comandos
:
texto ASCII
– Resposta
:
código e frase de
status
.
• Mensagens precisam ser em ASCII de 7-bits.
23
(C) 2016 Adriano Mauro Cansian
SMTP na Internet (1)
•
Servidor: Porta 25/TCP
do destino.
–
Ou na 465/TCP ou 587/TCP se for
ssl/autenticado
.
– Exercício: administração best practice SMTP
»
https://tools.ietf.org/html/rfc2505
»
https://tools.ietf.org/html/rfc7525
• Processo (daemon) aceita as
mensagens que chegam e tenta
encaminhá-las à caixa postal destino,
reportando eventuais erros à máquina
origem.
SMTP na Internet (3)
transmissão via SMTP server intermediário ISP
25
(C) 2016 Adriano Mauro Cansian
Operação do SMTP (1)
• SMTP à todo baseado em texto.
–
Uma vez estabelecida conexão, a máquina
cliente aguarda uma
resposta do servidor
.
– O servidor envia uma linha de texto
indicando se está ou não preparado para
receber email.
Operação do SMTP (2)
(diálogo SMTP)
27
(C) 2016 Adriano Mauro Cansian
Exemplo de diálogo e interação SMTP
S:
220
doces.br
C: HELO consumidor.br
S:
250
Hello consumidor.br, pleased to meet you
C: MAIL FROM: <ana@consumidor.br>
S:
250
ana@consumidor.br... Sender ok
C: RCPT TO: <bernardo@doces.br>
S:
250
bernardo@doces.br ... Recipient ok
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: Voce gosta de chocolate?
C: Que tal sorvete?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 doces.br closing connection
29
(C) 2016 Adriano Mauro Cansian
Observe a linha em branco terminando com um “ . ” S : servidor
SMTP Reply codes
31
(C) 2016 Adriano Mauro Cansian
SMTP
• SMTP usa conexões persistentes.
• SMTP requer que a mensagem (cabeçalho e corpo)
sejam em ASCII de 7-bits
à já mencionado.
•
Portanto,
algumas cadeias de caracteres não
são permitidas numa mensagem.
–
Por exemplo:
<CR/LF>.<CR/LF>
• Uma vez que é usado pelo servidor SMTP para reconhecer
o final da mensagem.
–
Assim, em alguns casos, a mensagem necessita ser
codificada.
–
Geralmente em base-64 ou “quoted printable
”.
33
(C) 2016 Adriano Mauro Cansian
Computador “B” ISP ISP Computador “A”
Dois computadores via ISP (1)
Remetente Editor de Mensagem Agente de Transporte Agente deDistribuição Local Caixa Postal
Destinatário Visualizador de Mensagem SMTP Agente de Transporte De: A@origem.dom Para: B@destino.dom Agente de Transporte SMTP Caixa Postal . . . POP ou IMAP Agente de Transporte Agente de Transporte envio recepção 35
(C) 2016 Adriano Mauro Cansian
empresa.dom dep1.empresa.dom dep2.empresa.dom
Mail Relay ou “bounce”
Remetente “A” Editor de Mensagem SMTP Agente de Transporte Agente de Distribuição Local Remetente “B” Editor de Mensagem Agente Transporte RELAY Agente de Distribuição Local Caixa Postal Caixa Postal . . . Caixa Postal Caixa Postal . . . . De: A@dep1.empresa.dom Para: xxxxxxxxxxxxx De: B@dep2.empresa.dom Para: xxxxxxxxxxxxx SMTP 37(C) 2016 Adriano Mauro Cansian
SPAM e relays abertos
Spammer Editor de Mensagem Agente de Transporte Agente de Transporte De: spammer@relay1.dom Para: xxxxxxxxxxxxxx Agente de De: spammer@relay9.dom . . . relay1.dom De: spammer@ilegal.dom Para: xxxxxxxxxxxxxxEntrega final: MDA e MUA
MAA: Mail Access Agent MDA: Mail Delivery Agent
39
(C) 2016 Adriano Mauro Cansian
MDA e MAA (1)
• Os outros dois componentes do sistema:
•
MDA:
Delivery
Agent
MDA: Mail Delivery Agent
• Agente de
Distribuição Local.
–
Responsável por entregar e arquivar a mensagem na
caixa postal correta do usuário.
• Tem capacidade de filtrar mensagens.
–
Alguns tem capacidade de processamento de retorno
(auto-responders).
• Agentes mais conhecidos:
–
Maildrop (default).
–
Procmail.
–
Binmail.
–
Safecat.
41
(C) 2016 Adriano Mauro Cansian
MAA - a “entrega final”
• Os mecanismos apresentados até aqui
funcionam em máquinas capazes de enviar
ou receber e-mail.
–
Na maior parte dos casos, essa premissa é falsa.
•
Usuário tem o seu PC conectado a uma LAN.
•
A LAN é que tem os servidores de email.
• A transferência do email numa caixa postal para o
PC do usuário é feita através dos protocolos
Entrega final: MDA e MUA
43
(C) 2016 Adriano Mauro Cansian
• Maildrop • Procmail. • Binmail. • Safecat.
POP3 e IMAP
–
POP3
:
Post Office Protocol
[RFC 1939]
•
Mecanismo simples cliente–servidor de transferência.
–
IMAP
:
Internet Message Access Protocol
[RFC 1730]
•
Mais comandos e mais opções (mais complexo).
•
Acesso a mensagens armazenadas no servidor.
•
Atua como uma montagem de diretórios.
Até aqui vimos todos
os componentes do Correio eletrônico
45
(C) 2016 Adriano Mauro Cansian
Procmail ou outros
Anatomia de um E-mail
Cabeçalho, envelope, body
Formato de uma mensagem de e-mail
RFC 822: padrão para formato
de mensagem de texto:
•
Linhas de cabeçalho, p.ex.,
–
To: (obUdo do ENVELOPE)
–
From:
–
Subject:
•
São diferentes
dos
comandos de smtp!
•
Corpo
–
a “mensagem”, somente de
caracteres ASCII .
–
Termina com um “.” ponto
Envelope e cabeçalho corpolinha em
branco
47(C) 2016 Adriano Mauro Cansian
Envelope e header (2)
(C) 2016 Adriano Mauro Cansian 49
Campos de header (2)
51
(C) 2016 Adriano Mauro Cansian
Exe
m
plo
de
he
ade
r E
-m
ai
l
Delivered-To: adriano.cansian@sjrp.unesp.brReceived: by 10.70.38.201 with SMTP id i9csp238353pdk; Mon, 14 Oct 2014 14:46:10 -0700 (PDT)
X-Received: by 10.58.207.15 with SMTP id ls15mr3600453vec.17.1381787170131; Mon, 14 Oct 2014 14:46:10 -0700 (PDT)
Return-Path: xxxa@gmail.com
Received: by angel.acmesecurity.org (Postfix)
id 217BCDEBAC; Mon, 14 Oct 2014 18:46:07 -0300 (BRT)
Delivered-To: adriano@acmesecurity.org
Received: by angel.acmesecurity.org (Postfix, from userid 65534) id 1FC24DEBAF; Mon, 14 Oct 2014 18:46:07 -0300 (BRT)
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on angel.acmesecurity.org
X-Spam-Level:
X-Spam-Status: No, score=0.9 required=4.0 tests=FREEMAIL_FROM,HTML_MESSAGE,
RCVD_IN_DNSWL_LOW,SUBJ_ALL_CAPS,T_FREEMAIL_DOC_PDF autolearn=no version=3.3.2
Received: from mail-qe0-f49.google.com (mail-qe0-f49.google.com [209.85.128.49]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits))
(No client certificate requested)
by angel.acmesecurity.org (Postfix) with ESMTPS id CD606DEBAC for <adriano@acmesecurity.org>; Mon, 14 Oct 2014 18:46:00 -0300 (BRT)
Received: by mail-qe0-f49.google.com with SMTP id a11so639104qen.8
for <adriano@acmesecurity.org>; Mon, 14 Oct 2014 14:45:58 -0700 (PDT)
Mon, 14 Oct 2014 14:45:58 -0700 (PDT)
Received: by 10.49.35.137 with HTTP; Mon, 14 Oct 2014 14:45:57 -0700 (PDT) Date: Mon, 14 Oct 2014 18:45:57 -0300
Message-ID: <CAEEv5YB=fTMxeUaj=Ht4PrfEFvfT5hVotipuWF0qXJdRWjsr5g@mail.gmail.com> Subject: NADA COMO SER FAMOSO ;-)
From: Otavio Cunha <xxxa@gmail.com>
To: Adriano Cansian <adriano@acmesecurity.org>
Formato MIME
Ou:
enviando mensagens mulUmídia em algo
que foi feito pra enviar texto puro.
MIME
(Mul@purpose Internet Mail Extension)
Além de texto, pode ser necessário enviar e
receber outros tipos de informação, tais como:
–
Mensagens em linguagens com caracteres especiais.
–
Mensagens em outros alfabetos.
–
Mensagens em linguagens pictográficas (ex. chinês).
–
Mensagens com outras mídias
.
Evolução
•
RFC-821
: Protocolo SMTP (1982)
•
RFC-822
: Standard for the Format ofARPA
Internet Text Messages (1982)
•
RFC-2045 e RFC-2046
-
Multipurpose Internet Mail
Extensions
(MIME) Part-I e Part-II (1996)
•
RFC-2822
: Internet Message Format
(2001)
–
Revisa e atualiza o RFC-822
• (torna este obsoleto).
(C) 2016 Adriano Mauro Cansian 55
Formato de uma mensagem MIME
• MIME: multimedia mail extension: RFC 2045 e 2046
•
Linhas adicionais no cabeçalho da mensagem. declaram tipo
do conteúdo MIME.
From: ana@consumidor.br To: bernardo@doces.br
Subject: Imagem de uma bela torta MIME-Version: 1.0
Content-Transfer-Encoding: base64 Content-Type: image/jpeg
base64 encoded data ... ... ...base64 encoded data
tipo, subtipo de
dados multimídia,
declaração parâmetros
método usado
para codificar dados
versão MIME
Tipos MIME
Fomato:
Content-Type: tipo/subtipo; parâmetros
Text
•
sub-Upos: plain, html,
charset=“iso-8859-1”,
ascii
Image
•
sub-Upos exemplos : jpeg,
gif, tiff.
Video
•
sub-Upos exemplos : mpeg,
quicktime, MP4
Audio
•
Sub-Upos exemplos : basic
(8-bit codificado mu-law),
32kadpcm (codificação 32
kbps), MP3
ApplicaUon
•
Outros dados que precisam
ser processados por um leitor
para serem “visualizados”.
•
subUpos exemplos :
msword, octet-stream
57(C) 2016 Adriano Mauro Cansian
Delimitador MIME
From:
ana@consumidor.br
To:
bernardo@doces.br
Subject:
Imagem de uma bela torta
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789
--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain
caro Bernardo,
Anexa a imagem de uma torta deliciosa. --98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
MIME
59
(C) 2016 Adriano Mauro Cansian
Aliases
Aliases (1)
• “Aliases” são sinônimos de endereços de e-mail
–
à
muito importantes para o servidor MX.
• São usados para:
–
Criar nomes “falsos” ou apelidos para contas de usuários
verdadeiros.
–
Redirecionar (
forward
) e-mail para outros
hosts
ou endereços.
–
Criar listas de distribuição de mensagens.
• Os aliases são definidos no arquivo
–
/etc/aliases (ou equivalente no seu sistema).
• Em alguns sistemas este arquivo de aliases pode ser
Aliases (2)
• Sintaxe de configuração /etc/aliases
nome_do_alias: destinatario [, destinatario, ...]
• Nome_do_alias à é o nome para onde o e-mail é endereçado (o endereço para o qual ele chega).
• recipient à é o nome verdadeiro para onde o e-mail deve ser entregue.
• O recipient pode ser à um username válido, o nome de outro alias, ou um endereço de e-mail completo, contendo username e
hostname.
– Vários recipients podem ser associados a um único alias à forma-se uma lista de distribuição.
63
(C) 2016 Adriano Mauro Cansian
.forward
• Em adição ao redirecionamento fornecido pelo /etc/
aliases o sistema de e-mail permite definir endereços de
redirecionamento
pessoal
(forward).
–
Usuário pode definir o redirecionamento desejado em seu
arquivo ~/.forward (no seu
home-
dir pessoal).
–
O MDA verifica este arquivo
após
verificar os aliases do
sistema
, e antes de realizar a entrega final para o usuário.
• Se o .forward
existe
para o usuário, ele realiza a
entrega conforme a configuração deste arquivo.
• A sintaxe é a mesma usada no /etc/aliases.
(C) 2016 Adriano Mauro Cansian 65
(C) 2016 Adriano Mauro Cansian 67
Esquema geral
do e-mail
Resumo
Neste tópico vimos:
1. Todos os fundamentos importantes sobre e-mail.
–
Todos os componentes: MUA, MTA, SMTP, MDA,
MAA, …
2. Funcionamento detalhado do e-mail e do SMTP.
–
Interações para envio de uma mensagem, headers e
envelope.
3. Anatomia de um email.
4. Formato MIME.
Créditos e orientações para estudo
•
Créditos - este material foi baseado parcialmente a partir do livro:Hunt, Craig – “TCP/IP Network Administration”
Edit. O’Reilly & Associates, Inc. - 1.a Edição - Capítulo 10.
• E outros materiais em:
http://computernetworkingsimplified.com/application-layer/overview-email-works/
Figuras e textos de outros autores utilizados com finalidade didática.
(C) 2016 Adriano Mauro Cansian 69