Mutt에서 MIME 사용을 위해서는 두가지 설정 파일이 필요한데, 각각 IANA MIME 형식을 매핑해 놓은 mime.types 와 각 MIME 형식에 대응하는 명령들을 지정하는 mailcap 이다.
Mutt에서는 pager, compose, 첨부물 메뉴에서 MIME을 처리 할 수 있다.
메일 인덱스와 읽기(pager)에서는 메일을 일반 텍스트로 디코딩 한다. mutt이 기본적으로 지원하는 MIME 형식은 text/plain, text/enriched, message/rfc822, message/news이다. 추가적으로 여러 형태의 PGP/MIME 과 application/pgp 같은 여러 형태의 PGP MIME을 지원한다.
mutt은 첨부물의 형식을 다음과 같은 형식으로 표시한다:
[-- Attachment #1: Description --] [-- type: text/plain, Encoding: 7bit, Size: 10000 --] |
만약 mutt이 MIME 형식을 처리하지 못하면 다음과 같이 표시한다:
[-- image/gif is unsupported (use 'v' to view this part) --] |
첨부물을 보기 위한 view-attachments 명령의 기본 키 설정은 `v' 이다. 첨부물 메뉴에서는 메일에 첨부된 첨부물의 목록을 보여주며, 저장, 프린트, pipe, 삭제, 보기등이 가능하다. 만약 여러개의 첨부물이 있다면 태그를 사용하여 모든 표시된 첨부물에 원하는 명령을 한번에 적용할 수도 있다.
당신은 이 메뉴에서 답장을 보내는 것도 가능하며, 이때 현재(또는 태그한) 첨부물을 본문에 인용한다.
각 첨부물은 텍스트 형태로 보거나, mailcap 에 설정한 외부 프로그램을 사용하여 볼수 있다.
또한 일반적으로 메일과 관련된 기능들(예를 들어 resend-message, 답장, 포워딩)에 message/rfc822 형식을 적용할 수 있다.
첨부물 메뉴에서 더 자세한 설명을 찾을수 있다.
compose 메뉴는 메일을 보내기 전에 볼수 있는 화면이다. 여기서는 수신자 목록, 제목, 본문등을 수정할 수 있으며, 보내려는 메일의 첨부물의 목록을 보여준다. 이 메뉴에서 각 첨부물에 대한 프린트, 복사, 필터, pipe, 수정, 작성, 다시보기, 이름 바꾸기등이 가능하다. 또한 첨부물의 정보나 인코딩, 설명의 수정도 가능하다.
첨부물은 다음과 같이 표시된다: - 1 [text/plain, 7bit, 1K] /tmp/mutt-euler-8082-0 <no description> 2 [applica/x-gunzip, base64, 422K] ~/src/mutt-0.85.tar.gz <no description>
'-' (마이너스) 기호는 mutt이 메일을 보낸후 (또는 발송 연기, 취소)에 삭제함을 의미한다. 이것은 toggle-unlink (기본: u)로 바꿀수 있다. 다음 필드는 MIME 형식이며, 이것은 edit-type (기본: ^T)로 수정할 수 있다. 다음은 첨부물의 인코딩 방식으로 edit-encoding (기본: ^E)로 수정 가능하다. 다음 필드는 첨부물의 크기로 kilobyte나 megabyte로 표시된다. 그 다음은 파일 이름으로 rename-file (기본: R)으로 수정 가능하다. 마지막 필드는 첨부물의 설명이며 수정은 edit-description (기본: d)로 한다.
메일에 첨부물을 추가할때 mutt은 순서대로 ${HOME}/.mime.types, /usr/local/share/mutt/mime.types 또느 /etc/mime.types를 찾게 된다.
mime.types 파일은 MIME 형식과 확장자로 기술한다:
application/postscript ps eps application/pgp pgp audio/x-aiff aif aifc aiff |
만약 첨부되는 파일의 형식을 인식하지 못하면 mutt은 파일을 직접 살펴보고 바이너리 정보가 없다면 일반 텍스트로 인식하고 text/plain로 표시할 것이다. 만약 첨부물이 바이너리 정보를 포함한다면, application/octet-stream로 표시한다. mutt이 결정한 MIME 형식은 edit-type (기본: ^T)를 사용해 변경할 수 있다.
mutt은 RFC 1524에 의한 일반적인 mailcap 파일 형식을 지원한다. 이 mailcap 파일은 Mutt이외에도 MIME을 지원하는 다른 프로그램들에 의해 사용된다 (예: Netscape, XMosaic, lynx, metamail).
mutt은 이 파일을 사용해서 내부적으로 처리하지 못하는 MIME 형식의 파일을 처리 하게되며, 다음과 같은 순서로 이 파일을 찾게된다.
${HOME}/.mailcap:/usr/local/share/mutt/mailcap:/etc/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap |
metamail 패키지에는 보통 mailcap 파일을 포함하고 있으며 /usr/local/etc/mailcap에 설치된다.
기본적은 형식으로 text/plain 메세지를 more 로 연결하려면:
text/plain; more |
text/plain; more %s |
text/html; lynx %s |
주의: 몇몇 오래된 버전의 lynx는 text/html 형식의 파일을 볼때 mailcal 파일을 참고하는 버그가 있다. 결과적으로 lynx가 다시 lynx를 무한적으로 부르게 된다.
다음과 같이 lynx를 사용해서 text/html 형식을 text/plain으로 변환하는 방법도 있다:
text/html; lynx -dump %s | more |
text/html 파일은 lynx로 보고, 나머지 모든 text 형식은 more 를 사용한다면:
text/html; lynx %s text/*; more |
MIME 변수에 포함된 쉘 문자들로 인해 보안상 문제를 일으킬수도 있다.
mutt은 이 위험에서 벗어나기 위해 위험한 문자들을 인용문자로 감싸는 방법을 사용한다. mailcap-sanitize를 참조.
Mutt와 mailcap에 의해 실행되는 프로그램은 안전할 수 있으나, mailcap을 사용하는 다른 프로그램들을 위해서 다음 예를 참고하라:
text/test-mailcap-bug; cat %s; copiousoutput; test=charset=%{charset} \ && test "`echo $charset | tr '[A-Z]' '[a-z]'`" != iso-8859-1 |
content-type 과 view 명령 필드에는 추가적인 옵션을 사용 하는데, 각 옵션들은 ';'로 분리해서 나열할 수 있다. mutt은 다음과 같은 옵션들을 인식한다:
이 플래그는 결과를 내장 페이저(또는 외부)에서 볼때 사용한다. 다음 예를 참고하라:
text/html; lynx -dump %s ; copiousoutput |
첨부물의 MIME 자동보기시에 사용되는 옵션으로, 외부 프로그램의 실행이 종료된후 wait-key변수를 적용할 것인지를 결정하게 된다.
지정된 MIMT 형식의 첨부물을 만들때 사용되는 명령어를 지정해 준다. 메일 작성(compose) 메뉴에서 사용된다.
compose 옵션과 같은 용도로 사용되나, mutt은 표준 MIME 헤더를 기대할 것이다. 이것은 지정된 변수, 파일명, 설명들이 될 수 있다. 메일 작성(compose) 메뉴에서 사용된다.
지정된 MIME 형식의 프린트시 사용되는 명령어. 첨부물(attachment), 메일 작성(compose) 메뉴에서 사용된다.
지정된 MIME 형식을 편집할때 사용되는 명령어.
이 필드는 %s에 의해 나타내는 파일의 형식을 지정한다. 이것은 어떤 프로그램들은 파일의 확장자로 파일의 형식을 인식하기 때문에 사용된다. 예를 들어, lynx는 .html로 끝나는 파일명을 가진 파일만을 text/html로 표시한다. 따라서, mailcap 파일의 내용은 다음과 같다:
text/html; lynx %s; nametemplate=%s.html |
이 필드는 해당 명령어를 조건에 따라 실행 할것인지 먼저 테스트하는데 사용된다. 만약 결과값이 0이 아니라면 명령을 실행하지 않고 다음 적합한 목록을 찾게된다. 다음 예를 보라:
text/html; netscape -remote 'openURL(%s)' ; test=RunningX text/html; lynx %s |
mailcap 내용을 검색할때 mutt은 그 목적에 가장 적합한 것을 사용하게 된다. 예를 들어 image/gif를 프린트 하려 한다면, print 명령을 가진 mailcap 내용을 사용하게 된다:
image/*; xv %s image/gif; ; print= anytopnm %s | pnmtops | lpr; \ nametemplate=%s.gif |
다음 예와 같이 MIME 자동보기와 첨부물 보기등을 위해 한가지 MIME 형식에 따라 몇가지 명령을 설정해 줄수 있다.
text/html; netscape -remote 'openURL(%s)' ; test=RunningX text/html; lynx %s; nametemplate=%s.html text/html; lynx -dump %s; nametemplate=%s.html; copiousoutput |
mailcap 파일안의 명령어에 mutt은 다음과 같은 변수를 전달해 줄수 있다:
해당 프로그램에 파일 이름을 전달할때 사용한다. 이 파일의 내용은 메일의 본문이다.
%t는 메일 내용의 형식을 mailcap 정의의 첫번째 변수와 같이 표현한다 (예: text/html, image/gif).
지정된 Content-type:의 변수를 나타낸다. 예를 들어 메일의 헤더가 다음과 같다면:
Content-type: text/plain; charset=iso-8859-1 |
이것은 %로 바뀔것이다.
기본적인 예:
# 나는 X를 항상 실행하고 있어요! video/*; xanim %s > /dev/null image/*; xv %s > /dev/null # netscape가 항상 실행되고 있음 text/html; netscape -remote 'openURL(%s)' |
다음은 내가 쓰는 mailcap 파일로 몇가지 사용 예를 보여준다:
# 비디오 관련 파일을 xanim을 사용하여 본다. xanim가 실행될때의 # 메세지는 /dev/null 로 보낸다. video/*; xanim %s > /dev/null # html은 실행중인 netscape으로 보냄. text/html; netscape -remote 'openURL(%s)'; test=RunningNetscape # netscape 가 실행되고 있지 않다면 실행한다. text/html; netscape %s; test=RunningX # X 가 실행되고 있지 않은 경우 lynx 를 사용 text/html; lynx %s # text/html 를 text/plain로 변환해서 보기 text/html; lynx -dump %s; copiousoutput # enriched.sh 스크립트로 text/enriched를 text/html로 변환 text/enriched; enriched.sh ; copiousoutput # 프린트시 enscript를 사용해서 컬럼을 나누기 text/*; more %s; print=enscript -2Gr %s # Netscape adds a flag to tell itself to view jpegs internally image/jpeg;xv %s; x-mozilla-flags=internal # X가 실행중인 경우 xv로 이미지 파일 보기 image/*;xv %s; test=RunningX; \ edit=xpaint %s # netpbm 툴을 사용해서 이미지를 텍스트로 변환하기 image/*; (anytopnm %s | pnmscale -xysize 80 46 | ppmtopgm | pgmtopbm | pbmtoascii -1x2 ) 2>&1 ; copiousoutput # 엑셀 파일을 NT 박스로 보내기 application/ms-excel; open.pl %s |
이 기능을 사용하면 페이저에서 MIME 첨부물을 자동으로 볼수 있다.
이것이 작동하려면 mailcap 파일에서 사용되는 외부 프로그램에 copiousoutput 옵션을 사용해야 한다. 일반적으로 페이저에서 볼수 있는 것은 텍스트 형태로 변환된 것이다.
muttrc에 auto_view 명령을 사용하면 원하는 형식의 파일을 자동으로 볼수 있다.
예:
auto_view text/html text/enriched application/x-gunzip application/postscript image/gif application/x-tar-gz |
mailcap 파일에 각 MIME 형식에 따라 사용할 외부 프로그램을 설정해준다.
text/html; lynx -dump %s; copiousoutput; nametemplate=%s.html text/enriched; enriched.sh ; copiousoutput image/*; anytopnm %s | pnmscale -xsize 80 -ysize 50 | ppmtopgm | pgmtopbm | pbmtoascii ; copiousoutput application/x-gunzip; gzcat; copiousoutput application/x-tar-gz; gunzip -c %s | tar -tf - ; copiousoutput application/postscript; ps2ascii %s; copiousoutput |
mutt은 multipart/alternative 형태의 MIME을 표시를 위해 먼저 alternative_order 목록을 확인하게 된다. 다음은 alternative_order 목록의 예이다:
alternative_order text/enriched text/plain text application/postscript image/* |
다음, mutt은 MIME 자동보기의 정의된 형태를 확인하고, 실패하면 텍스트 형태를, 그리고 마지막으로 어떻게 다루어져야 하는지 알고 있는 형태를 시도하게 된다.