47
Correio eletrônico Adriano Mauro Cansian d ad[email protected] ______________________________ Tópicos em Sistemas de Computação

Correio eletrônico - ACME! Cybersecurity Researchangel.acmesecurity.org/~adriano/tcpip/2009/adr-tcpip-2009-email.pdf · Os programas MTAsmais conhecidos são o sendmaile o postfix

  • Upload
    lykhue

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Correio eletrônico

Adriano Mauro [email protected]

______________________________Tópicos em Sistemas de Computação

Sistema de correio eletrônico

“Os usuários possuem uma relação de p çamor e ódio com o e‐mail: eles amam 

usá‐lo, e odeiam quando ele não funciona.” – Craig Hunt

Correio EletrônicoCorreio Eletrônico

– O Correio Eletrônico é uma dasaplicações da Internet mais difundidasp çdevido à sua facilidade de uso e aoamplo poder de troca de informaçõesamplo poder de troca de informaçõesque permite através de uma simplestroca de mensagens enviar textostroca de mensagens, enviar textos,transferir programas, fotos, planilhas, ouqualquer outro arquivo.

Funcionamento do Correio eletrônico

MUA: Mail User AgentMTA: Mail Transfer AgentMDA M il D li A tMDA: Mail Delivery AgentMAA: Mail Access Agent

DefiniçõesDefinições• O sistema de e mail é formado basicamente por duas entidades MUA eMTA• O sistema de e‐mail é formado basicamente por duas entidades  MUA e MTA

MUA ‐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

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. Este material trata o sendmail, por ser o mais utilizado. Entretanto, todos os conceitos são aplicáveis diretamente ao postfix e a outros programas.

Exemplo: Postfix (http://www.postfix.org) e sendmail (http://www.sendmail.org)

MUAMUA• MUAmais usado um programa que normalmente existe em todos os• MUAmais usado  um programa que normalmente existe em todos os 

ambientes unix chama‐se mail.

• Geralmente omail é apenas para os iniciados devido à sua complexidade.Geralmente o mail é apenas para os iniciados devido à sua complexidade. (É recomendável entretanto que todos os administradores de sistemas saibam como 

utilizar pelo menos suas funções básicas, devido à sua universalidade. O mail pode ser encontrado em praticamente todas as variantes de sistemas Unix.)

• Existem outros programas tais como mutt, pine e elm que tornam o trabalho com o correio eletrônico extremamente simples para os usuários comuns. 

• As opções, tanto de domínio público como comerciais são numerosas.

• Interfaces gráficas com suporte aMIME (Multipurpose Internet Mail Extensions)Interfaces gráficas com suporte a MIME (Multipurpose Internet Mail Extensions) estão também popularizadas.

MTA (1)MTA (1)• O programaMTA é necessário porque a entrega de correio eletrônico em redes raramente é• O programa MTA é necessário, porque a entrega de correio eletrônico em redes raramente é 

uma tarefa simples. 

• Como a tarefa de transportar mensagens freqüentemente se estende além dos domínios da á i l l t id d d MTA d d MUAmáquina local  aumenta a necessidade de um MTA separado de um MUA. 

• MTAs mais usados: Postfix e Sendmail (em ambientes Unix)

• O MTA implementa o protocolo de transporte de mensagens e pode enviar mensagens de uma máquina para outra na mesma rede, e pode também redirecionar mensagens da rede em que se encontra para redes de arquitetura radicalmente diferentes.

• Atenção: Lembre‐se que não existem somente conexões de e‐mail através da Internet ! Existem muitas outras redes, com arquiteturas diferentes, além de diferentes camadas de aplicação, que necessitam se comunicar adequadamente.aplicação, que necessitam se comunicar adequadamente.

MTA (2)MTA (2)• OMTA roteia a mensagem recebida do programa do usuário com base no• O MTA roteia a mensagem recebida do programa do usuário, com base no 

endereço eletrônico conhecido.

Para as mensagens que saem:Para as mensagens que saem:

• OMTA recebe a mensagem vinda do programa do usuário; • Interpreta o endereço eletrônico;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 que chegam:

• O MTA interpreta o endereço;p ç• Envia para o programa de e‐mail do usuário;• Ou redireciona para outro endereço.

fila demensagens MTA (3)

agente de

á

caixa de correio do usuário

mensagens de saídaMTA (3)

servidor de correio

usuárioagente de usuário

SMTP

SMTP

servidor de correio

SMTP

SMTP

agente gde usuário

servidor de correio

agente de usuárioagente

de de usuário

MTA (4)MTA (4)

E di ã t t t d• Em adição ao roteamento entre programas de usuário e programas de entrega o MTA realiza mais duas funções:mais duas funções:

– Envia e recebe mensagens SMTP (Simple Mail– Envia e recebe mensagens SMTP (Simple Mail Transporte Protocol), ou seja, mensagens Internet RFC‐821.

– Permite criação de “aliases” (sinônimos) de endereçosendereços.

SMTP [RFC 821]SMTP [RFC 821]

U TCP f ê i fiá l d d• Usa TCP para a transferência confiável de mensagens de correio do cliente ao servidor. (Usa porta 25/TCP)

• Transferência direta: servidor remetente ao servidor receptor

• Três fases da transferência:H d h ki ( i t )– Handshaking (cumprimento).

– Transferência das mensagens– EncerramentoEncerramento

• Interação comando/resposta– Comandos: texto ASCII– Resposta: código e frase de status

• Mensagens precisam ser em ASCII de 7-bits.

SMTP

• Na Internet, o envio e recepção de e‐mail são f é d ã dfeitos através de uma conexão na porta 25 da máquina destino.

• O processo daemon que escuta essa porta deve implementar o protocolo SMTP (Simple Mail Transfer Protocol).

• Esse processo daemon aceita as mensagens que p g qchegam e tenta encaminhá‐las à caixa postal destino, reportando eventuais erros à máquina , p qorigem.

SMTP

• O SMTP é inteiramente 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 indicandoO servidor envia uma linha texto indicando se está ou não preparado para receber emailemail 

• Se o servidor está disposto a receber email, o cliente aceita a recepçãoo cliente aceita a recepção.

• Desenvolve‐se o “delivery”. 

SMTP

Interação SMTPInteração SMTPS: 220 doces.brC HELO id bC: HELO consumidor.br S: 250 Hello consumidor.br, pleased to meet you C: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected]> S: 250 [email protected] ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Voce gosta de chocolate? C: oce gosta de c oco ate?C: Que tal sorvete? C: . S: 250 Message accepted for deliveryS: 250 Message accepted for delivery C: QUIT S: 221 doces.br closing connection

Códigos de operação [RFC 2821]Códigos de operação [RFC 2821]500 Syntax error503 B d f d503 Bad sequence of commands220 Service ready221 Service closing transmission channel250 Requested mail action okay, completed450 Requested mail action not taken550 Requested action not taken

SMTPSMTP

• SMTP usa conexões persistentes.

• SMTP requer que a mensagem (cabeçalho e corpo) sejam em ASCII d 7 bitASCII de 7‐bits.

• Algumas cadeias de caracteres não são permitidas ( )numa mensagem (p.ex., CRLF.CRLF). 

• Assim, a mensagem pode ter que ser codificada (normalmente em base‐64 ou “quoted printable”).

• Servidor SMTP usa “CRLF.CRLF“ para reconhecer o final da mensagem.

Exemplos de interação

Dois computadores sempre on lineDois computadores sempre on‐line

Remetente Destinatário

Editorde

NotificadorVisualizadorde

MensagemCaixa Postal

Visualizadorde

MensagemDe:A@origem dom

Agentede

Agentede

Agentede

[email protected]:[email protected]

Computador “B”Computador “A”

deTransporte

deDistribuição LocalSMTP

deTransporte

pem destino.dom

pem origem.dom

Dois computadores via ISPDois computadores via ISPRemetente

Editor Agente

De:[email protected]:[email protected]

Agente

ISP

deMensagem

gde

TransporteSMTP

deTransporte Caixa Postal. . .

Agentede

Distribuição LocalCaixa Postal

Agentede

Transporte SMTP

. .

ISP

Computador “A”

Transporte SMTPAgente

deTransporte

DestinatárioVisualizador

deMensagem

POP ou

IMAPAgentede

Transporte

Computador “B”

Mensagem Transporte

Mail RelayMail RelayD

empresa.dom

Editor Agente Agente

De:[email protected]:xxxxxxxxxxxxx

Remetente “A”Editor

deMensagem SMTP

Agentede

Transporte

Agentede

Transporte

De:B@dep2 empresa dom

SMTP

Agentede

Remetente “B”Editor

deMensagem

Caixa Postal

[email protected]:xxxxxxxxxxxxx

Distribuição LocalAgente

deDistribuição Local

. . . . . .

Caixa Postal. .

dep1.empresa.dom dep2.empresa.dom

Caixa Postal

. .

Caixa Postal

. .

SPAMSPAM

Agente De:spammer@relay1 dom

relay1.dom

Spammer deTransporte

[email protected]:xxxxxxxxxxxxxx. . .

Editorde

Mensagem

Agentede

Transporte

. . . . . . .

Agente De:@ l 9 d

. . . . .De:[email protected]:xxxxxxxxxxxxxx g

deTransporte

[email protected]:xxxxxxxxxxxxxx

relay9.dom

Protocolos de MensagensProtocolos de Mensagens

Já i d MTA• Já mencionado: MTA:– SMTP (Simple Mail Transfer Protocol)– Transmissão imediata entre agentes de transporte;– Transmissão imediata entre agentes de transporte;– Não faz uso de caixa postal.

• Mail Access Agente (MAA):– POP (Post Office Protocol)

• Transmite mensagens apenas da caixa postal do servidor para a do cliente.

– IMAP (Internet Mail Agent Protocol)• Sincroniza as caixas postais do servidor e do cliente.

Lembrando: Funcionamento do Correio eletrônico

MUA: Mail User AgentMTA: Mail Transfer AgentMDA M il D li A tMDA: Mail Delivery AgentMAA: Mail Access Agent

MDA: Mail Delivery AgentMDA: Mail Delivery Agent

A t d Di t ib i ã L l• Agente de Distribuição Local• Responsável por arquivar a mensagem na caixa postal corretapostal correta.

• Pode filtrar mensagens.

Agentes mais conhecidos:• Procmail• Procmail• Binmail• Maildrop• Maildrop• Safecat

A “entrega final”g• Os mecanismos apresentados até aqui funcionam em máquinas capazes de enviar ou receber emailem máquinas capazes de enviar ou receber email. 

• Na maior parte dos casos, essa premissa é falsa: um usuário doméstico tem o seu PC conectado aum usuário doméstico tem o seu PC conectado a uma rede local e esta é que tem os seus servidores de emailservidores de email.

• A transferência do email numa caixa postal para o PC do usuário é feita através do protocolo POP3PC do usuário é feita através do protocolo POP3(Post Office Protocol) ou IMAP (Internet Mail Access Protocol). )

MDA: Mail Delivery AgentMDA: Mail Delivery Agent

SMTP SMTP POP3 ouagente nt POP3 ouIMAP

agente de usuário

agente de usuário

• SMTP: entrega/armazenamento no servidor do receptor.

servidor de correio do remetente

servidor de correiodo receptor

g / p• MDA: Mail Delivery Agent : recupera do servidor.

– POP: Post Office Protocol [RFC 1939]• Autorização (agente <‐‐>servidor) e transferência

– IMAP: Internet Mail Access Protocol [RFC 1730]• Mais comandos e mais opções (mais complexo).• Manuseio de msgs armazenadas no servidor

• Através de HTTP: Hotmail , Yahoo! Mail, Webmail, etc. (não é exatamente um “protocolo”  de e‐mail e sim 

i )um mecanismo)

POP / IMAPPOP / IMAP

Formato

Cabeçalho, envelope, bodyCabeçalho, envelope, body

MIME

Formato de uma mensagem de e mailFormato de uma mensagem de e‐mail

lSMTP: protocolo para trocar mensagens de correio

RFC 822: padrão para formato de 

cabeçalholinha em b np p

mensagem de texto:

• Linhas de cabeçalho, p.ex.,T ENVELOPE

branco

– To: ENVELOPE

– From:

– Subject:

corpo

diferentes dos comandos de smtp!

• CorpoCorpo– a “mensagem”, somente de 

caracteres ASCII .

T i “” t– Termina com um “.” ponto

Mensagens

Formato das Mensagens

Formato das Mensagens

Cabeçalhos de E‐mailCabeçalhos de E mailReturn-Path: <[email protected]>Delivered-To: [email protected]: from localhost (localhost [127.0.0.1])

by xxxxxxxxxxxxxxg (Postfix) with ESMTP id DD62D10342for <[email protected]>; Tue, 25 Sep 2008 11:59:59 -0300 (BRST)

Received: from xxxxx.xxxxxxx.xxx ([127.0.0.1])by localhost (xxxxx [127.0.0.1]) (amavisd-new, port 10024) with ESMTPid 26751-02 for <[email protected]>;Tue, 25 Sep 2008 11:59:56 -0300 (BRST)

Received: from xxxxxxxxxx.xxx (unknown [192.168.xx.xx])by xxxxx.xxxxxxxxx.xxx (Postfix) with ESMTP id 6A39310341for <[email protected]>; Tue, 25 Sep 2008 11:59:56 -0300 (BRDT)

Message-ID: <[email protected]>Date: Tue, 25 Sep 2008 11:59:44 -0300From: XXXXXXXXXXXXXXXXXXXX <[email protected]>User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 D bi /1 5 3Debian/1.5-3X-Accept-Language: enMIME-Version: 1.0To: [email protected]: Mesnagem de textX Enigmail Ve sion 0 82 6 0X-Enigmail-Version: 0.82.6.0X-Enigmail-Supports: pgp-inline, pgp-mimeContent-Type: text/plain; charset=ISO-8859-1; format=flowedContent-Transfer-Encoding: 8bit

MIME(Multipurpose Internet Mail Extension)(Multipurpose Internet Mail Extension) 

Além de texto pode ser necessário enviar e receberAlém de texto, pode ser necessário enviar e receber outros tipos de informação, como:– mensagens em linguagens que usam caracteresmensagens em linguagens que usam caracteres especiais.

– mensagens em outros alfabetos.– mensagens  em linguagens para as quais não existe um alfabeto (ex. chinês).

ã té t t– mensagens que não contém texto

• A idéia básica do MIME é acrescentar ao d ã 821 l d difi ãpadrão 821, algumas regras de codificação 

para outros tipos de informação. 

Formato de uma mensagem: extensões para multimídiaFormato de uma mensagem: extensões para multimídia

• MIME: multimedia mail extension, RFC 2045, 2056

• Linhas adicionais no cabeçalho da mensagem declaram tipo do conteúdo MIME.

From: [email protected] To: [email protected]ão MIMESubject: Imagem de uma bela torta MIME-Version: 1.0 Content-Transfer-Encoding: base64

método usadopara codificar dados

Content-Type: image/jpeg

base64 encoded data .....

tipo, subtipo dedados multimídia,

declaração parâmetros ......................... ......base64 encoded data

declaração parâmetros

Dados codificados

Tipos MIME pContent-Type: tipo/subtipo; parâmetros

Text• sub‐tipos exemplos: plain,

html

Audio• Sub‐tipos exemplos : basic

(8‐bit codificado mu‐law)html• charset=“iso-8859-

1”, ascii

(8 bit codificado mu law), 32kadpcm (codificação 32 kbps).

Image• sub tipos exemplos : jpeg

Application• Outros dados que precisam• sub‐tipos exemplos : jpeg,

gif• Outros dados que precisam 

ser processados por um leitor para serem “visualizados”.

Video• sub‐tipos exemplos : mpeg,

quicktime

• subtipos exemplos : msword, octet-stream

quicktime

Tipo Multipartep p

From: [email protected] To: bernardo@doces brTo: [email protected]: Imagem de uma bela torta MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=98766789yp p y

--98766789Content-Transfer-Encoding: quoted-printableContent Type: text/plainContent-Type: text/plain

caro Bernardo, Anexa a imagem de uma torta deliciosa.g--98766789Content-Transfer-Encoding: base64Content-Type: image/jpeg

base64 encoded data ..... ......................... ......base64 encoded data --98766789--

MIMEMIME

Aliases

Aliases (1)Aliases (1)

• “Aliases” ã sinônimos d d d il it• “Aliases” são sinônimos de endereços de e‐mail  muito importantes para a máquina 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.(f ) p ç• Criar listas de distribuição de mensagens para vários usuários ao 

mesmo tempo.• Os aliases são definidos no arquivoOs aliases são definidos no arquivo 

– /etc/aliases (ou equivalente no seu sistema).• Em alguns sistemas este arquivo de aliases pode ser 

/ /lib/ li– /usr/lib/aliases

Aliases (2)Aliases (2)

• Si t d fi ã /etc/aliases• Sintaxe de configuração /etc/aliases

alias: recipient [, recipient, ...]

• alias é o nome para onde o e‐mail é endereçado (o endereço que ele chega).que 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• 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– Vários recipients podem ser associados a um único alias forma‐se uma lista de distribuição.

Exemplo /etc/aliasesExemplo /etc/aliases

forward.forward

• E di ã di i t f id l /etc/aliases• Em adição ao redirecionamento fornecido pelo /etc/aliasessendmail permite definir endereços de redirecionamento (forward) pessoal.

• Usuário  pode definir o redirecionamento em seu arquivo .forward no seu home-dir pessoal.

• O SMTP 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 mailEsquema geral do e‐mail

Figura retirada de http://www.postfix.org/big-picture.html