소개
이 문서에서는 Unix 사서함(mbox) 형식과 이것이 Cisco ESA(Email Security Appliance)에서의 사용과 어떤 관련이 있는지 설명합니다.
UNIX mbox(mailbox) 형식이란?
UNIX mbox 형식은 메시지가 보관되어 메시지 필터 log() 작업에 기록될 때 AsyncOS에서 사용됩니다. "Archive Message(메시지 보관)"는 ESA의 Ironport Anti-spam(IPAS), Anti-virus(Sophos 및 McAfee), Advanced Malware Protection(AMP) 및 Graymail에 대한 추가 구성 옵션입니다.
Mbox 형식은 0개 이상의 메일 메시지를 포함할 수 있는 ASCII 형식(이진 형식이 아님)의 파일 형식입니다. 메시지는 mbox 파일에서 연결되고, 파일의 특정 문자열을 기준으로 사일로화할 수 있습니다. 이 형식은 RFC 2821 호환 메일 게이트웨이 간에 전송될 때 메시지와 동일합니다.
mbox 형식의 각 메시지는 문자열 "From"(ASCII 문자 F, r, o, m 및 공백)으로 시작하는 줄로 시작합니다. "보낸 사람" 줄 뒤에는 envelope-sender, date, and (optionally) more data와 같은 여러 필드가 더 있습니다.
"보낸 사람" 문자열 뒤의 첫 번째 필드는 메시지의 봉투 발신자입니다. envelope-sender는 mbox 파일을 만드는 응용 프로그램에 따라 실제 사서함으로 존재할 수도 있고 다른 문자나 문자열일 수도 있습니다. 가장 일반적으로, 실제 envelope-sender를 사용할 수 없거나 알 수 없는 경우 "-"(단일 문자 대시)가 envelope-sender를 대체합니다. 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 형식의 파일을 구문 분석할 때 메시지를 구분하는 "보낸 사람" 줄에 의미 체계를 너무 많이 읽지 않는 것이 좋습니다. 여러 유틸리티에서 mbox 파일을 작성하므로 이러한 행에 상당한 차이가 있습니다. 그러나 mbox 파일에서 새 메시지가 시작되었음을 안정적으로 나타내기 위해 "보낸 사람" 줄을 항상 메시지 구분 기호로 사용할 수 있습니다. 대체로 "보낸 사람" 메시지 구분 기호 뒤에 있는 문자열에 대해 알려진 형식이 20개 정도 있습니다. 이 경우 구문 분석이 매우 어렵습니다.
"보낸 사람" 줄 뒤에는 일련의 메시지 본문 헤더와 빈 줄 뒤에 추가 메시지 본문 내용이 오는 RFC 2822 형식의 이메일 메시지가 있습니다.
메시지가 제대로 구분되도록 하기 위해 문자열 "From"으로 시작하는 줄 앞에는 항상 단일 ">"가 추가됩니다. mbox 파일의 다양한 변형은 ">시작"으로 시작하는 줄을 서로 다르게 처리합니다. mbox 파일을 작성한 응용 프로그램의 초기 구현에서는 이러한 줄 자체가 인용되지 않았습니다. AsyncOS 로그 파일은 하나 이상의 ">" 문자로 시작하고 그 뒤에 "From"이 오는 줄에 항상 ">"를 붙입니다.
다음은 시작 문자열 "From", ">From" 및 ">>>From"이 포함된 줄이 있는 메시지가 포함된 mbox 파일의 예입니다.
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 필드를 삽입하지 않습니다.