Introdução
Este documento descreve o formato da caixa de correio Unix (mbox) e como ele se relaciona ao uso no Cisco Email Security Appliance (ESA).
O que é o formato UNIX mbox (caixa de correio)?
O formato UNIX mbox é usado pelo AsyncOS quando as mensagens são arquivadas e registradas na ação de filtro de mensagem log(). A "Mensagem de arquivo" é uma opção de configuração adicional para Ironport Anti-Spam (IPAS), Antivírus (Sophos e McAfee), Advanced Malware Protection (AMP) e Graymail no ESA.
O formato de caixa de correio é um formato de arquivo ASCII (ou seja, não binário) que pode conter zero ou mais mensagens de correio. As mensagens são concatenadas no arquivo mbox e podem ser separadas com base em strings específicas no arquivo. Esse formato é idêntico à mensagem, pois eles são transferidos entre gateways de e-mail compatíveis com RFC 2821.
Cada mensagem no formato mbox começa com uma linha que começa com a string "De" (caracteres ASCII F, r, o, m e espaço). As linhas "De" são seguidas por vários outros campos: remetente do envelope, data e (opcionalmente) mais dados.
O primeiro campo após a sequência de caracteres "De" é o remetente de envelope da mensagem. Dependendo do aplicativo que cria o arquivo mbox, o remetente de envelope pode estar presente como uma caixa de correio real ou pode ser outro caractere ou cadeia de caracteres. Mais comumente, você descobrirá que um "-" (traço de caractere único) substitui o remetente de envelope se o remetente de envelope real não estiver disponível ou não for conhecido. O campo de data inserido pelo ESA está no formato padrão UNIX asctime() e tem sempre 24 caracteres de comprimento. Em alguns arquivos mbox escritos por implementações não-AsyncOS, mais informações seguem o carimbo de data. Esses três campos são separados por um único espaço.
Aqui está um exemplo de um arquivo mbox com uma única mensagem nele:
From Adam@Outside.COM Sun Oct 17 12:03:20 2004
Received: from mail.outside.com (192.35.195.200)
by smtp.alpha.com with ESMTP; 17 Oct 2004 12:03:20 -0700
X-IronPort-AV: i="3.85,147,1094454000";
v="EICAR-AV-Test'0'v";
d="scan'208"; a="86:adNrHT37924848"
X-IronPort-RCPT-TO: alan@mail.example.com
From: Adam@Outside.COM
To: Alan Alpha
Subject: Exercise 7a Anti-Virus Scanning
Reply-To: Adam Alpha
Date: Sun, 17 Oct 2004 12:02:39 -0700
MIME-version: 1.0
Content-type: multipart/mixed; boundary="IronPort"
--IronPort
Content-type: text/plain; format=flowed; charset=us-ascii
Content-transfer-encoding: 7bit
Blah blah blah blah blah
Blah blah blah blah blah
Blah blah blah blah blah
...
--IronPort
Content-type: text/plain
Content-transfer-encoding: 7bit
Content-disposition: inline
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*">X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
--IronPort--
Quando os arquivos formatados com mbox são analisados, é desejável não ler semânticas demais na linha "De" que separa as mensagens. Como muitos utilitários diferentes gravam arquivos mbox, há uma variação considerável nessas linhas. No entanto, a linha "De " sempre pode ser usada como uma linha separadora de mensagem para indicar com segurança que uma nova mensagem foi iniciada no arquivo mbox. Ao todo, há cerca de 20 formatos conhecidos para as strings após o separador de mensagem "De", o que geralmente torna muito difícil analisá-las.
Após a linha "De", há uma mensagem de e-mail no formato RFC 2822, com uma série de cabeçalhos de corpo de mensagem seguidos por uma linha em branco seguida por conteúdo de corpo de mensagem adicional.
Para garantir que as mensagens sejam devidamente separadas, as linhas que começam com a sequência de caracteres "De" são sempre precedidas por um único ">". Várias variantes diferentes de arquivos mbox manipulam linhas que começam com ">De" de forma diferente. Em implementações anteriores de aplicativos que gravavam arquivos mbox, essas linhas não eram citadas. Os arquivos de log do AsyncOS sempre anexarão um ">" às linhas que começam com um ou mais caracteres ">" seguidos por "De".
Aqui está um exemplo de um arquivo mbox que contém uma mensagem que contém as strings iniciais "From", ">From" e ">>>From" nele:
From jtrumbo@example1.com Sun Dec 12 12:27:33 2004
X-IronPort-RCPT-TO: trumbo@example1.com
From: jtrumbo@example1.com
To: trumbo@example2.com
Subject: Quote this, if you dare
Date: Sun, 12 Dec 2004 12:28:00 -0700
The following line is just From
>From A From Line
The following line has quoted >From
>>From A >From Line
The following line has many >>>>From
>>>>>From This line has 4 > characters before From
And this is the last line
O final de uma mensagem em um arquivo no formato mbox é tradicionalmente sinalizado por uma linha em branco. No entanto, isso nem sempre está presente (embora o AsyncOS o coloque lá). Quando um arquivo no formato mbox é analisado, você deve sinalizar o fim de uma mensagem pelo início de uma nova mensagem (exclua a linha em branco se houver uma) ou pelo fim do arquivo.
Outra variante no formato mbox exigia que o comprimento da mensagem fosse sinalizado em um campo "Content-Length" dentro do cabeçalho da mensagem. Esse formato não usa o orçamento de linha "De". O AsyncOS não usa esse formato e não insere um campo Content-Length.