O objetivo desta aula é compreender melhor os serviços oferecidos pelo sistema operacional para o suporte de e-mail, através de experiências utilizando clientes e servidores de e-mail.
A infra-estrutura de transporte de e-mail na Internet funciona através da interação entre diferentes agentes, como nos mostra a figura a seguir:
Os principais elementos desse trajeto são:
O serviço de e-mail usa vários protocolos para o transporte das mensagens entre remetentes e destinatários. O protocolo SMTP - Simple Mail Transfer Protocol é o protocolo responsável pelo envio do e-mail do cliente (MUA) ao servidor (MTA) e deste para outros servidores, até chegar ao servidor de destino.
Para consultar os e-mails armazenados no servidor, o cliente (MUA) utiliza os protocolos POP3 (Post-Office Protocol v3) e IMAP (Internet Message Access Protocol), cujas principais características são:
Normalmente o uso de POP3 é mais indicado quando os usuários são estáticos, ou seja, cada um possui seu computador e só acessa seu e-mail a partir dele. POP3 é um protocolo leve e que não mantém conexão constante com o servidor.
O uso de IMAP é indicado quando os usuários são “nômades”, usando vários computadores diferentes. Todavia, este protocolo exige mais recursos de CPU, disco e memória do servidor. A conexão IMAP normalmente é mantida enquanto durar a sessão de trabalho do usuário. Este protocolo é muito usado em ambientes de WebMail, para os acessos do servidor Web ao servidor de e-mail.
Os servidores de e-mail (MTAs) funcionam segundo um princípio “store and forward”. Isso significa que um MTA recebe cada mensagem integralmente e a deposita em um diretório temporário, para somente então passá-la adiante, seja a um outro MTA ou ao MDA, se o destinatário for um usuário local. Cada transmissão fica registrada em uma linha Received
do cabeçalho do e-mail. Esse procedimento garante a entrega da mensagem ao destinatário, sem possibilidade de perdas na transmissão.
O daemon sendmail
é lançado durante a inicialização (boot) da máquina, e opera em modo mestre-escravo. O processo mestre ouve a porta 25/TCP; para cada pedido de conexão, ele cria um novo processo escravo para tratar do pedido.
Os principais arquivos e diretórios de um sistema de e-mail SMTP UNIX típico são:
/etc/sendmail.cf
: arquivo de configuração do MTA Sendmail/etc/aliases
: aliases globais de e-mail/etc/mail/*
: arquivos de controle de acesso ao sendmail (spam, relay, etc)./var/spool/mail
: diretório das caixas de entrada (inbox) dos usuários. cada usuário contém uma caixa de entrada na forma de um arquivo texto com seu nome de login (por exemplo: /var/spool/mail/maziero
)./var/spool/mqueue
: fila de mensagens em trânsito, recebidas de MUAs ou de MTAs e esperando o envio a outros MTAs. cada mensagem é representada por um arquivo de controle e um arquivo de conteúdo. A fila pode ser visualizada através do comando mailq
./var/log/maillog
: arquivo de log, contendo os registros das trocas de mensagens efetuadas.O MDA é o processo que efetua a entrega dos e-mails aos usuários locais. No Linux normalmente é usado o procmail, que permite uma grande flexibilidade na entrega de e-mail, como:
$HOME/.forward
.
A configuração do procmail é feita através do arquivo /etc/procmailrc
(sistema) e $HOME/.procmailrc
(usuário).
Um e-mail é visto pelos processos e protocolos como um texto em formato ASCII padrão (texto puro, sem acentos, figuras ou caracteres de controle). Cada e-mail é composto de duas seções principais:
O cabeçalho é separado do corpo do e-mail por uma linha vazia (equivalente a “\n\n” em linguagem C):
header line header line ... header line <--- (linha vazia separando cabeçalho e corpo) body line body line body line ...
O exemplo a seguir ilustra um e-mail típico no formato em que ele é armazenado e transportado nos sistemas de e-mail:
Return-path: <frank210@switched.com> Delivery-date: Sun, 15 Jun 2008 11:38:00 -0300 Received: from [64.12.138.210] (helo=imr-m08.mx.aol.com) by ppgia.pucpr.br with esmtp (PPGIA PUCPR) id 1K7tMl-00067J-55 for <maziero@ppgia.pucpr.br>; Sun, 15 Jun 2008 11:38:00 -0300 Received: from imo-d20.mx.aol.com (imo-d20.mail.aol.com [172.18.157.194]) by imr-m08.mx.aol.com (v107.10) with ESMTP id RELAYIN9-a4855293039a; Sun, 15 Jun 2008 10:37:36 -0400 Received: from frank210@switched.com by imo-d20.mx.aol.com (mail_out_v38_r9.4.) id t.ccf.32ac7044 (37097); Sun, 15 Jun 2008 10:37:30 -0400 (EDT) Received: from User ([82.128.35.119]) by cia-db07.mx.aol.com (v121.5) with ESMTP id MAILCIADB077-90e948552919370; Sun, 15 Jun 2008 10:37:25 -0400 Reply-To: <drfrankmark@live.com> From: "Mark"<frank210@switched.com> Date: Sun, 15 Jun 2008 16:37:24 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="Windows-1251" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 X-AOL-IP: 172.18.157.194 To: maziero@ppgia.pucpr.br Message-ID: <ccf.32ac7044.3586832a@UNKNOWN> X-Spam-Flag:YES X-Spam-Score: 5.1 (+++++) X-Virus-Scanned: Verificado contra virus. Subject: [***SPAM***] Second notice THIS IS FOR YOUR ATTENTION. We wish to notify you again that you were listed as a beneficiary to the total sum of Ј10,600,000.00GBP (Ten Million Six Hundred Thousand British Pounds) in the codicil and last testament of the deceased. (Name now withheld since this is our second letter to you). We contacted you because you bear the surname identity and therefore can present you as the beneficiary to the inheritance. We therefore reckoned that you could receive these funds as you are qualified by your name identity. All the legal papers will be processed in your acceptance. In your acceptance of this deal, we request that you kindly forward to us your letter of acceptance; your current telephone and fax numbers and a forwarding address to enable us file necessary documents at our high court probate division for the release of this sum of money. Please call me on +447045769387 so that we can get this done immediately. Kind regards, Frank Mark.
Algumas observações devem ser feitas sobre este exemplo:
Field: value
” ou “Field: value; complement
”.Received
” e “Content-type
”;Os principais campos do cabeçalho de um e-mail são:
Campo | Significado |
---|---|
From | Endereço de origem |
To | Endereço de destino principal |
Cc | Enviar cópia da mensagem para este endereço (Carbon-copy) |
Bcc | Enviar cópia da mensagem para este endereço (Blind carbon-copy), sem revelar quem são os outros destinários da mensagem; os destinatários receberão uma mensagem com a linha de cabeçalho “Cc: undisclosed recipients ” |
Reply-To | Endereço para onde enviar uma resposta |
Return-path | Endereço do remetente informado pelo último MTA |
Received | Indica um “salto” do e-mail entre servidores; as linhas Received são adicionadas ao cabeçalho do e-mail a cada operação de transferência entre MTAs ou MUA, de baixo para cima (ou seja, a primeira linha Received indica a última transferência realizada |
Delivery-date | Data da entrega do e-mail na caixa de entrada do destinatário |
Date | Data de envio do e-mail |
Subject | Assunto do e-mail |
Message-ID | Identificador do e-mail, gerado automaticamente pelo cliente onde o e-mail foi criado e enviado |
MIME-Version | Informações sobre anexos (vide próxima seção) |
Content-Type | Informações sobre anexos (vide próxima seção) |
Content-Transfer-Encoding | Informações sobre anexos (vide próxima seção) |
X-* | Campos de cabeçalho não normatizados, criados e mantidos por softwares específicos |
A visualização do formato nativo de um e-mail pode ser feita facilmente em um cliente de e-mail: basta localizar a opção “exibir código fonte” ou similar.
A necessidade de enviar arquivos através do e-mail levou à definição do padrão MIME (Multipurpose Internet Mail Extensions), no início dos anos 90. Esse padrão da Internet é definido nas RFCs 2045 a 2049, com extensões em outras RFCs mais recentes. Basicamente, o padrão MIME permite codificar arquivos com qualquer conteúdo em formato ASCII puro, para ser enviados pelos protocolos de e-mail convencionais. Os principais aspectos cobertos pelo padrão são:
Pelas normas, o cabeçalho de um e-mail deve indicar que seu corpo está codificado em formato MIME. Cada seção de um e-mail em formato MIME pode conter um arquivo, um texto ou outro e-mail (que pode, por sua vez, também estar em formato MIME). Dessa forma, um e-mail MIME pode ter uma estrutura multi-nível, como indica o diagrama abaixo:
Vejamos como ficaria um e-mail contendo um arquivo anexo envelope.gif
:
From maziero@ppgia.pucpr.br Thu Jul 3 15:41:53 2003 Return-Path: <maziero@ppgia.pucpr.br> Delivered-To: maziero@ppgia.pucpr.br Received: from alias.acm.org (alias.acm.org [199.222.69.90]) by hermes.ppgia.pucpr.br (Postfix) with ESMTP id A954E2B0048 for <maziero@ppgia.pucpr.br>; Thu, 3 Jul 2003 15:41:48 -0300 (BRT) Received: from hermes.ppgia.pucpr.br ([200.192.112.141]) by alias.acm.org (ACM Email Forwarding Service) with ESMTP id COB73880 for <cmaziero@acm.org>; Thu, 03 Jul 2003 14:41:43 -0400 Received: from floripa (ariadne.ppgia.pucpr.br [200.192.112.144]) by hermes.ppgia.pucpr.br (Postfix) with SMTP id 7E3D32B0048 for <cmaziero@acm.org>; Thu, 3 Jul 2003 15:41:39 -0300 (BRT) From: "Carlos Maziero" <maziero@ppgia.pucpr.br> To: <cmaziero@acm.org> Subject: Um pequeno anexo Date: Thu, 3 Jul 2003 15:43:51 -0300 Message-ID: <BEEBJCCJCFALIKEFFMNEMENDCFAA.maziero@ppgia.pucpr.br> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0004_01C34179.E6BD74D0" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.6604 (9.0.2911.0) Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 This is a multi-part message in MIME format. ------=_NextPart_000_0004_01C34179.E6BD74D0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Vamos enviar uma pequena imagem como teste... Maziero ------=_NextPart_000_0004_01C34179.E6BD74D0 Content-Type: image/gif; name="envelope.gif" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="envelope.gif" R0lGODlhFAAUAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh ISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0 NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdH R0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpa WltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1t bW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CA gIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOT k5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaam pqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5 ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zM zM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f 3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy 8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH+Dk1hZGUgd2l0aCBHSU1Q ACH5BAEKAAEALAAAAAAUABQAAAhuAAMIHEiwoMGDCBMqXMiwoUIAECNKnBhRIMR/GDNq1AgxUgAA /0BuHAkgUsmPGEWOTBkppEeVKjeWZIkyY0yWNl9yjDkzZ82QKXHC1AnUZs+iJ0HeXKn05dKVIZNS nCrRY4BIWLNq3ZrVodeFAQEAOw== ------=_NextPart_000_0004_01C34179.E6BD74D0--
É importante ressaltar que todo o trabalho de codificação/decodificação dos anexos é efetuado pelos clientes de e-mail (MUAs). Os servidores (MTAs, MDAs e MAAs) continuam a tratar os e-mails como textos no padrão ASCII.
Vejamos outro exemplo, com um e-mail no formato HTML:
From jamhour@ppgia.pucpr.br Thu Jul 3 13:53:27 2003 Return-Path: <jamhour@ppgia.pucpr.br> Delivered-To: maziero@ppgia.pucpr.br Received: from darkhal (ftp.ppgia.pucpr.br [200.192.112.144]) by hermes.ppgia.pucpr.br (Postfix) with ESMTP id 88C932B0049; Thu, 3 Jul 2003 13:53:27 -0300 (BRT) From: "Edgard Jamhour" <jamhour@ppgia.pucpr.br> To: <scalabrin@ppgia.pucpr.br>, <maziero@ppgia.pucpr.br> Subject: Aula de Web Date: Thu, 3 Jul 2003 13:56:43 -0300 Message-ID: <000d01c34184$14fd77f0$2d01200a@darkhal> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_000E_01C3416A.EFB03FF0" X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.2627 Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Status: RO X-Status: X-Keywords: X-UID: 43082 This is a multi-part message in MIME format. ------=_NextPart_000_000E_01C3416A.EFB03FF0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable A pedido dos senhores, estou mandando um email para confirmar a seguinte altera=E7=E3o. Hoje dia 03/06 (Quinta) o Maziero substituir=E1 o Scalabrin na aula de Desenvolvimento Web. No dia 16/06 (Quarta), o Scalabrin dar=E1 aula no lugar do Maziero, reequilibrando o cronograma. Edgard Jamhour, PPGIA, PUC-PR - Pontif=EDcia Universidade Cat=F3lica do Paran=E1=20 Phone: +55 (41) 3301675 Phone: +55 (41) 3301669 http://www.ppgia.pucpr.br/~jamhour/ =20 ------=_NextPart_000_000E_01C3416A.EFB03FF0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <HTML> <HEAD> <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; = charset=3Diso-8859-1"> <META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version = 6.0.4630.0"> <TITLE>Aula de Web</TITLE> </HEAD> <BODY> <P><FONT SIZE=3D2 FACE=3D"Arial">A pedido dos senhores, estou mandando = um email para confirmar a seguinte altera=E7=E3o.</FONT></P> <P><FONT SIZE=3D2 FACE=3D"Arial">Hoje dia 03/06 (Quinta) o Maziero = substituir=E1 o Scalabrin na aula de Desenvolvimento Web.</FONT></P> <P><FONT SIZE=3D2 FACE=3D"Arial">No dia 16/06 (Quarta), o Scalabrin = dar=E1 aula no lugar do Maziero, reequilibrando o cronograma.</FONT></P> <P><B><FONT FACE=3D"Arial">Edgard Jamhour,</FONT></B> <BR><B><FONT FACE=3D"Arial">PPGIA, PUC-PR - Pontif=EDcia Universidade = Cat=F3lica do Paran=E1</FONT></B><FONT FACE=3D"Arial"><BR> </FONT><B><FONT FACE=3D"Arial">Phone: +55 (41) 3301675=A0 Phone: +55 = (41) 3301669</FONT></B> <BR><B></B><A HREF=3D"http://www.ppgia.pucpr.br/~jamhour/"><B><U><FONT = COLOR=3D"#0000FF" = FACE=3D"Arial">http://www.ppgia.pucpr.br/~jamhour/</FONT></U></B><B></B><= /A><B></B> <BR><B><FONT FACE=3D"Arial">=A0</FONT></B> </BODY></HTML> ------=_NextPart_000_000E_01C3416A.EFB03FF0--
Muitos vírus e worms usam características (e bugs) do suporte MIME para se propagar. Veja um e-mail com o worm Klez.H. O que parece estranho nele?
O servidor de e-mail Postfix é conhecido por sua robustez, segurança, eficiência e facilidade de operação. Ele vem sendo distribuído junto à maioria das distribuições Linux, embora também possa ser facilmente instalado em outros ambientes UNIX. Suas principais características são:
Os principais arquivos/diretórios do Postfix em uma instalação Linux padrão são:
/etc/postfix
: diretório de configuraçãomain.cf
: arquivo principal de configuraçãoaccess
: controle de acessoaliases
: aliases (sinônimos) de nomes locais/var/spool/mail
: caixas de correio dos usuários locais/var/spool/postfix
: diretório de operação dos daemons (ambiente restrito chroot)etc
: arquivos de configuração das bibliotecas no ambiente restritomaildrop
, incoming
, deferred
, … : diretórios contendo as filas de e-mailsAlguns utilitários normalmente oferecidos junto com o Postfix:
sendmail
: implementa a interface do sendmail (para compatibilidade com softwares mais antigos)postqueue
: gerencia as filas de e-mails.postsuper
: operações de manutenção sobre as filas de e-mail.