简介
本文档介绍 Unix mailbox (mbox) 格式以及思科邮件安全设备 (ESA) 中如何使用该文件格式。
什么是 UNIX mbox (mailbox) 格式?
当邮件存档并记录到邮件过滤器log()操作中时,AsyncOS使用UNIX mbox格式。“存档邮件”是ESA上针对Ironport Anit-spam (IPAS)、防病毒(Sophos和McAfee)、高级恶意软件防护(AMP)和灰色邮件的附加配置选项。
Mbox格式是ASCII格式的(即非二进制)文件格式,可以包含零封或多封邮件。消息在mbox文件中串联,并且可以根据文件中的特定字符串分开打印。此格式与在RFC 2821兼容邮件网关之间传输的消息完全相同。
mbox格式的每条消息都以字符串“From”(ASCII字符F、r、o、m和空格)开头一行开头。“发件人”行后跟多个其他字段:信封发件人、日期和(可选)更多数据。
“From”字符串后的第一个字段是邮件的信封发件人。根据哪个应用程序创建mbox文件,信封发件人可能以实际邮箱的形式存在,也可能为其他字符或字符串。最常见的是,如果实际的信封发件人不可用或不可知,您会发现“-”(单字符短划线)替换信封发件人。ESA插入的日期字段采用标准UNIX asctime()格式,长度始终为24个字符。在由非AsyncOS实现编写的一些mbox文件中,日期戳后会有进一步的信息。这三个字段用单个空格分隔。
以下是一个包含单个消息的mbox文件示例:
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--
当解析mbox格式的文件时,最好不要在分隔消息的“From”行中读取太多语义。由于许多不同的实用程序都会编写mbox文件,因此这些行存在相当大的差异。但是,“From ”行始终可以用作消息分隔符行,以便可靠地指示新消息已在mbox文件中启动。总之,“From”消息分隔符之后的字符串大约有20种已知格式,通常很难对其进行解析。
在“From”行后面是RFC 2822格式的电子邮件,包含一系列邮件正文标题,后跟空行,后面是其他邮件正文内容。
为了确保消息正确分隔,以字符串“From”开头的行始终由一个“>”预置。mbox文件的各种不同变体处理以“>From”开头的行的方式不同。在编写mbox文件的早期应用中,这些行本身没有引用。AsyncOS日志文件将始终将“>”添加到以一个或多个“>”字符后跟“From”的行的前面。
以下是mbox文件的一个示例,它包含一条包含起始字符串“From”、“>From”和“>>>>From”的邮件:
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
mbox格式文件中消息的结尾通常用空行发信号。但是,这并不总是存在(尽管AsyncOS确实将其放置在那里)。当解析mbox格式的文件时,您应通过新消息的开始(如果出现空行)或文件结束来发出消息结束信号。
mbox格式的另一个变体在消息报头的“内容长度”(Content-Length)字段中要求发送信号的消息长度。该格式未使用“自”行报价。AsyncOS不使用此格式,也不插入Content-Length字段。