Correio Eletrônico
E-mail & SMTP
Tópicos em Sistemas de Computação – 2014
Prof. Dr. Adriano Mauro Cansian
adriano@acmesecurity.org
Estagiário Docente: Vinícius Oliveira
viniciusoliveira@acmesecurity.org
E-‐mail…
“Os usuários possuem uma relação
de amor e ódio com o e-‐mail: eles
amam usá-‐lo, e odeiam quando ele
não funciona.”
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
.
• Sistema muito fácil de usar.
• Permite enviar mensagens de texto puro, transferir
programas, fotos, áudio vídeos, ou qualquer outro
arquivo, praticamente de forma instantânea.
• “
off-line
” à não depende da outra ponta estar on-line
.
3
(C) 2014 Adriano Mauro Cansian
Número de contas e usuários de e-‐mail
Email Statistics Report, 2009-2013 Executive Summary www.radicati.com
Worldwide Daily Email Traffic, 2012 – 2016 (*)
(em bilhões de mensagens)
(C) 2014 Adriano Mauro Cansian 5
(*) estimativas THE RADICATI GROUP, INC.
http://www.radicati.com/wp/wp-content/uploads/2012/04/Email-Statistics-Report-2012-2016-Executive-Summary.pdf (17.11.2014)
QuanQdade de contas corporaQvas e pessoais(*)
(em milhões)
(*) estimativas THE RADICATI GROUP, INC.
Mas, nem todo mundo domina...
(C) 2014 Adriano Mauro Cansian 7
.! .! .!
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
.
11
(C) 2014 Adriano Mauro Cansian
Definições dos componentes
• O sistema de e-mail é formado duas entidades principais à MUA e MTAMUA - Mail User Agent
MUAs são quaisquer dos programas utilizados para ler, compor, responder e dispor de 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 a vários usuários e
redirecionar mensagens entre computadores.
Os programas MTAs mais conhecidos são o sendmail e o postfix.
Exemplo: Postfix (http://www.postfix.org) e Sendmail (http://www.sendmail.org) 13
(C) 2014 Adriano Mauro Cansian
MUA (1)
• MUA que normalmente existe em todos os ambientes unix chama-se
mail.
– Geralmente o mail é apenas para os iniciados devido à sua complexidade.
• Existem outros programas tais como mutt, pine e elm que tornam o trabalho com o correio eletrônico extremamente simples para usuários comuns.
• Opções, tanto de domínio público como comerciais, são numerosas. • Interfaces gráficas com suporte a MIME (Multipurpose Internet Mail
Extensions) também são populares. à veremos mais adiante
15
(C) 2014 Adriano Mauro Cansian
MUA (2)
MTA (1)
• O programa
MTA
é necessário
à a entrega de correio
eletrônico em redes raramente é uma tarefa simples.
• Como a tarefa de transportar mensagens frequentemente se
estende além dos domínios da máquina local à aumenta a
necessidade de um MTA separado de um MUA.
–
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/
17
(C) 2014 Adriano Mauro Cansian
MTA (2)
• O MTA implementa o protocolo de transporte de mensagens (SMTP). – Pode enviar mensagens de uma máquina para outra na mesma rede. – Pode também redirecionar mensagens da rede em que se encontra
para outras redes.
– Eventualmente redes de arquitetura radicalmente diferentes.
– Lembrar que não existem somente conexões de e-mail através da Internet! – O MTA também RECEBE as mensagens vindas do protocolo SMTP e eventualmente
outros.
– O MTA não é apenas o SMTP.
• Existem muitas outras redes, com arquiteturas diferentes, além de diferentes camadas de aplicação, que necessitam se comunicar adequadamente.
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);
• Ou redireciona para outro endereço.
19
(C) 2014 Adriano Mauro Cansian
MTA (4)
• Além do roteamento entre programas de
usuário e programas de entrega à o MTA
realiza 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”.
MTA (5)
21
(C) 2014 Adriano Mauro Cansian
SMTP
[RFC 821]
•
Usa TCP para a transferência confiável de mensagens de
correio do cliente ao servidor
(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).
–
Transferência das mensagens.
–
Encerramento.
• Interação comando/resposta
–
Comandos
:
texto ASCII
–
Resposta
:
código e frase de
status
.
SMTP na Internet (1)
• Na Internet à a recepção de e-mail ocorre
na
porta 25/TCP
da máquina destino.
• Ou na 465/TCP ou 587/TCP se for ssl/autenticado.
– (exercício: administração best practice SMTP)–
O processo daemon nesta porta deve
implementar o protocolo SMTP.
• Processo (daemon) aceita as mensagens
que chegam e tenta encaminhá-las à
caixa postal destino, reportando eventuais
erros à máquina origem.
23
(C) 2014 Adriano Mauro Cansian
SMTP na Internet (2)
SMTP na Internet (3)
transmissão via SMTP server intermediário ISP
25
(C) 2014 Adriano Mauro Cansian
Operação do SMTP (1)
• SMTP à todo baseado em texto.
–
Tendo estabelecido uma conexão à porta 25
do servidor, a máquina cliente aguarda uma
resposta do servidor.
– O servidor envia uma linha texto indicando
se está ou não preparado para receber
email.
–
Se o servidor aceita receber email, significa
que o
cliente SMTP
aceita a recepção.
–
Ocorre o “
delivery
”.
Operação do SMTP (2)
(diálogo SMTP)
27
(C) 2014 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) 2014 Adriano Mauro Cansian
SMTP Reply codes
31
(C) 2014 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) 2014 Adriano Mauro Cansian
Computador “B” em destino.dom Computador “A” em origem.dom
Entre computadores
sempre on-‐line
Remetente Editor de Mensagem Agente de Transporte Agente de Distribuição Local Caixa Postal Destinatário Notificador Visualizador de Mensagem SMTP Agente de Transporte De: A@origem.dom Para: B@destino.dom 35(C) 2014 Adriano Mauro Cansian
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 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 envio recepção
Dois computadores via ISP (2)
(C) 2014 Adriano Mauro Cansian 37
Email Gateway / relay
39
(C) 2014 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 SMTPSPAM e relays abertos
Spammer Editor de Mensagem Agente de Transporte Agente de Transporte De: spammer@relay1.dom Para: xxxxxxxxxxxxxx Agente de Transporte De: spammer@relay9.dom Para: xxxxxxxxxxxxxx . . . relay1.dom relay9.dom De: spammer@ilegal.dom Para: xxxxxxxxxxxxxx 41(C) 2014 Adriano Mauro Cansian
Entrega final: MDA e MUA
MAA: Mail Access Agent MDA: Mail Delivery Agent
MDA e MAA (1)
•
Já mencionado: MTA e MUA:
• Agora veremos os outros dois componentes do
sistema de correio eletrônico:
•
MDA: Mail
Delivery
Agent
•
MAA - Mail
Access
Agent
:
43
(C) 2014 Adriano Mauro Cansian
MDA e MAA (2)
• Agora veremos os outros dois componentes do sistema de correio eletrônico:
•
MDA: Mail Delivery Agent
• Entrega no mailbox
• Processamento de filtragem
•
Mais usado: Procmail
•
MAA -
Mail Access Agent:
• Acesso a servidores remotos para recuperação de mensagens (“recebimento”).
– POP (Post Office Protocol) – porta 110
• Transmite mensagens apenas da caixa postal do servidor para a do cliente.
– IMAP (Internet Message Access Protocol) – porta 143 • Sincroniza as caixas postais do servidor e do cliente.
MDA: Mail Delivery Agent
• Agente de
Distribuição Local.
–
Responsável por entregar e arquivar a mensagem
na caixa postal correta.
• Tem capacidade de filtrar mensagens.
–
Alguns tem capacidade de processamento de
retorno (auto-responders).
• Agentes mais conhecidos:
–
Maildrop (default).
–
Procmail.
–
Binmail.
–
Safecat.
45
(C) 2014 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
–
POP3
(Post Office Protocol) ou
Entrega final: MDA e MUA
47
(C) 2014 Adriano Mauro Cansian
Procmail ou outros
MAA: Mail Access Agent
•
SMTP à entrega
(armazena?)
no servidor do receptor.
•
MAA: Mail Access Agent : recupera do servidor.
–
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).
servidor de correio do remetente SMTP SMTP POP3 ou IMAP servidor de correio do receptor agente de usuário agente de usuário
POP3
49
(C) 2014 Adriano Mauro Cansian
Até aqui vimos todos
os componentes do Correio eletrônico
Procmail ou outrosAnatomia de um E-‐mail
Cabeçalho, envelope, body
MIME
Formato de uma mensagem de e-‐mail
RFC 822: padrão para formato
de mensagem de texto:
•
Linhas de cabeçalho, p.ex.,
–
To: (obQdo do ENVELOPE)
–
From:
–
Subject:
•
São diferentes
dos
comandos de smtp!
•
Corpo
–
a “mensagem”, somente de
caracteres ASCII .
–
Termina com um “.” ponto
cabeçalho
corpo
linha em
branco
Envelope e header (2)
(C) 2014 Adriano Mauro Cansian 53
Campos de header (1)
55
(C) 2014 Adriano Mauro Cansian
Exe
m
plo
de
he
ade
r E
-‐m
ai
l
57 Delivered-To: adriano.cansian@sjrp.unesp.br!Received: 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>!
Content-Type: multipart/mixed; boundary=001a11c2c0d4b6de6504e8ba64b6! !
(C) 2014 Adriano Mauro Cansian
Formato MIME
Ou:
enviando mensagens mulQmídia em algo
que foi feito pra enviar texto puro.
MIME
(
MulApurpose 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
.
• Propósito do MIME é acrescentar
regras de codificação para outros tipos
de informação que não sejam texto
puro.
59
(C) 2014 Adriano Mauro Cansian
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
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
Dados codificados
61
(C) 2014 Adriano Mauro Cansian
Tipos MIME
Fomato:
Content-Type: tipo/subtipo; parâmetros
Text
•
sub-‐Qpos: plain, html,
charset=“iso-8859-1”,
ascii
Image
•
sub-‐Qpos exemplos : jpeg,
gif, tiff.
Video
•
sub-‐Qpos exemplos : mpeg,
quicktime, MP4
Audio
•
Sub-‐Qpos exemplos : basic
(8-‐bit codificado mu-‐law),
32kadpcm (codificação 32
kbps), MP3
ApplicaQon
•
Outros dados que precisam
ser processados por um leitor
para serem “visualizados”.
•
subQpos exemplos :
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
base64 encoded data ... ... ...base64 encoded data
--98766789--delimitador
63
(C) 2014 Adriano Mauro Cansian
Tipos e subQpos
65
(C) 2014 Adriano Mauro Cansian
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
–
/usr/lib/aliases
67
(C) 2014 Adriano Mauro Cansian
Aliases (2)
• Sintaxe de configuração /etc/aliasesnome_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
Exemplo /etc/aliases
69
(C) 2014 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.
Esquema geral do e-‐mail
(C) 2014 Adriano Mauro Cansian 71