PST 파일은 MS Outlook 고유의 메일 보관함 형식이어서, 기본적으로 이렇게 저장된 파일은 Outlook 등의 프로그램을 설치해야 열어볼 수가 있다. 그런데 회사에서 어떤 목적으로 이 형식의 파일을 Outlook이 아닌 기계적인 다른 방식으로 열어봐야 하는 프로젝트가 있고, 요즘 그 프로젝트에 한 발가락 세 개 정도 담그고 있다.

발가락 세 개가… 생각보다 두꺼워서, 그 작은 연결 고리 때문에 좀 성가신 일들이 많이 발생하고 있다. 그 중 하나가, 전문 업체에서 구매하여 구동하는 상용 솔루션이 정상적으로 .msg 파일을 Parsing하지 못하는 문제가 생긴다거나, .pst를 열어서 보는 것이 쉽지 않다고… 난리다.

그냥 지켜보다가… 결국, "뭐가 문제인데…" 싶어서 같은 작업을 조금 해봤는데…

libpst, pst-utils

오픈소스 소프트웨어 중에, libpst라는 라이브러리와 이것에 기반하는 pst-utils라는 패키지가 있다. 이 패키지는 몇몇 유틸리티 명령을 제공하는데, 다음과 같이 사용할 수 있다.

$ lspst 03382_원길동.pst
Folder "Test"
Email    From: 김여사    Subject: [검토요청] 요구사항정의서
Email    From: 조도령    Subject: RE: ... 보고 (최종본)
Email    From: 김여사    Subject: [송부] 프로젝트 '14년 ...
Email    From: 나도령    Subject: RE: [업무보고] 한... 점검 내용 확보
Email    From: 남도령    Subject: FW: [업무보고] ... 의결 상황
Email    From: 남도령    Subject: FW: [업무보고] ... 의결 상황
Email    From: 양도령    Subject: RE: 회의일정(11.26)
<...>
Appointment    SUMMARY: 프..    START: 20131028T070000Z    END: 20131028T090000Z    ALL DAY: No
Appointment    SUMMARY: 운..    START: 20131029T040000Z    END: 20131029T050000Z    ALL DAY: No
Appointment    SUMMARY: 선..    START: 20131025T070000Z    END: 20131025T080000Z    ALL DAY: No
<...>
$

lspst는 이름에서 알 수 있듯이, 이렇게 제목과 보낸 사람 등의 내용으로 메일 사서함의 내용을 보여주는 유틸리티이며,

$ readpst -q -b -tea -o x-m -m 03382_원길동.pst
$ 
$ ls x-m/03382/받은\ 편지함\1?.*
x-m/03382/받은 편지함/10.eml  x-m/03382/받은 편지함/15.eml
x-m/03382/받은 편지함/10.msg  x-m/03382/받은 편지함/15.msg
x-m/03382/받은 편지함/11.eml  x-m/03382/받은 편지함/16.eml
x-m/03382/받은 편지함/11.msg  x-m/03382/받은 편지함/16.msg
x-m/03382/받은 편지함/12.eml  x-m/03382/받은 편지함/17.eml
x-m/03382/받은 편지함/12.msg  x-m/03382/받은 편지함/17.msg
x-m/03382/받은 편지함/13.eml  x-m/03382/받은 편지함/18.eml
x-m/03382/받은 편지함/13.msg  x-m/03382/받은 편지함/18.msg
x-m/03382/받은 편지함/14.eml  x-m/03382/받은 편지함/19.eml
x-m/03382/받은 편지함/14.msg  x-m/03382/받은 편지함/19.msg
$

readpst는 위와 같이, 메일 사서함을 열어서 각 메일을 호환 가능한 다른 형식으로 변환해주는 역할을 한다. 위의 예는 -m 옵션을 이용하여 .msg로 뽑아낸 것이고, -e 옵션을 이용하여 .eml로 뽑아낼 수도 있다. 물론, 표준의 MH 형식의 메일 박스로 만들어줄 수도 있고, -S 등의 옵션을 사용하면 첨부 파일을 아예 별도의 파일로 뽑아낼 수도 있다.

msgconvert.pl

인터넷을 뒤지면, .msg 파일을 열어 .eml로 변환해주는 msgconvert.pl 이라는 Perl 스크립트를 구할 수 있다. 이미 공개된 지 오래된 버전이지만, 지금도 잘 동작한다. 이 기능을 Ruby로 재구성한 프로젝트도 있는데, 내 경우에는 정상적으로 작동하지 않았다.

—-
결국, 지금 한 달 이상 끌고 있었던 문제가, 알고 보니 오픈 소스 소프트웨어를 활용하면 15분 안에 풀리는 문제였던 것.

왜… 많은 상용 솔루션들은 오픈소스 소프트웨어의 기능을 따라오지 못하는 것일까? 그리고 왜 사람들은, 구입하는 그때부터 정상적이지 않은 소프트웨어를 "향후 유지 보수가 잘된다"라며… 눈에 보이는 것을 애써 보지 않으며 보이지 않는 것을 믿으며 상식적이지 않은 결정을 하는 것일까?

끄적 끄적…