이미 소개했듯이 mutt은 매우 유연한 설정을 가지고 있으며, 이를 이용해 자신만의 mutt를 만들수 있다.
mutt이 실행될때 ``-n'' 실행 옵션을 사용하지 않는 이상 기본적으로 ``시스템'' 설정 파일을 먼저 읽게 되며, 이 시스템 설정 파일은 일반적으로 /usr/local/share/mutt/Muttrc 나 /etc/Muttrc등에 위치한다. 다음 mutt은 홈 디렉토리의 .muttrc을 찾고, 이것이 없다면 홈 디렉토리의 하위 디렉토리(~/.mutt/muttrc)에서 muttrc 파일을 찾게 된다.
일반적으로 홈 디렉토리의 .muttrc파일을 명령어 설정 파일로 사용하게 될것이다.
추가적으로 mutt은 버전을 명시한 파일이름을 지원하는데 예를 들어 mutt의 버전이 0.88이면 .muttrc-0.88 를 설정파일로 사용하게 된다. 즉, 홈 디렉토리에 .muttrc와 .muttrc-0.88이 같이 존재 한다면 .muttrc-0.88가 사용된다.
mutt의 버전은 ``-v'' 실행 옵션으로 확인하거나 mutt 실행중에는 show-version 키 (기본: V)를 누르면 알수 있다.
설정 파일의 내용은 명령어와 설정 변수들로 이루어진다. 한줄에는 하나 이상의 명령어가 올수 있으며, 이때에는 명령어들을 세미콜론(;)으로 구분한다.
set realname='임 은재' ; ignore x- |
``#''는 주석을 달때 사용되며 # 이후의 문자는 무시된다.
my_hdr X-Disclaimer: 뭘봐요? # 이것은 주석 :-) |
인용 부호 (',")는 공백이나 특수 문자가 포함될때 사용할 수 있다. 두가지 인용부호의 차이점은 쉘 프로그램에서의 경우와 비슷하게 적용되는데 다음 예제를 보면 쉽게 이해할 수 있을것이다.
만약 다음과 같이 문장사이에 " 를 넣으려면 \ 를 붙여준다.
set realname="Im \"Sexy\" Eunjea" |
마찬가지로 ``\\'' 는 ``\''가 들어갈 것이며, ``\n'' 와 ``\r''는 C 에서와 마찬가지로 각각 라인피드(linefeed)와 캐리지 리턴(carriage-return)을 의미한다.
또한 \ 가 줄의 끝에 사용되면 다음줄은 하나의 명령으로 인식할 것이다. 이것은 매우 긴 명령을 보기 쉽도록 여러줄로 나누어 표기할때 사용될 수 있다.
또한 (``)를 사용해서 외부 명령어를 설정 파일에 사용할 수 있다. 다음 예를 보라.
my_hdr X-Operating-System: `uname -a` |
역시 환경변수의 값을 사용할 수도 있다.
set record=+sent_on_$HOSTNAME |
명령어 참고.
사용법: alias 키 주소 [ , 주소, ... ]
보통 자신과 이메일을 주고 받는 사람들의 이메일 주소를 기억하다는 것은 매우 귀찮은 일이므로, mutt은 이메일 주소록을 만들수 있도록 ``aliases'' 기능을 제공한다.
주의: 만약 일정 그룹(하나 이상의 주소)의 알리아스를 만들려 한다면, 각 주소는 (``,'')로 분리되어야 한다.
다음은 모든(*) 알리아스 정의를 삭제한다: unalias [ * | key ... ]
alias muttdude me@cs.hmc.edu (Michael Elkins) alias theguys manny, moe, jack |
다른 메일 클라이언트들과 다르게 mutt은 알리아스 파일을 위해 다른 파일을 필요로 하지 않으며, alias 명령은 설정 파일의 어느곳에나 위치할 수 있다. 하지만, source를 사용해서 여러개의 알리아스 파일을 지정해 사용할 수도 있다.
예:
source /usr/local/share/Mutt.aliases source ~/.mail_aliases set alias_file=~/.mail_aliases |
알리아스는 mutt이 주소를 물어보는 곳(To: 나 Cc: 등)에서 사용될 수 있으며, 이때 TAB 키를 누르면 알리아스의 목록을 보여주고 원하는 주소를 선택 할 수 있다. 여러개의 메일주소를 지정할 경우 각 메일주소의 구분은 (,) 로 해준다.
사용법: bind map key function
이 명령은 기본 키 설정을 원하는 키로 바꿀때 사용한다.
map (키가 사용될 메뉴)에 올수 있는 값은 다음과 같다:
generic
alias
attach
browser
editor
index
compose
pager
pgp
postpone
key 는 사용할 키이다. 콘트롤 문자를 사용할때에는 \Cx 의 형식으로 x 에 ctrl 과 같이 사용될 문자를 지정해준다 (예를 들어 control-A 는 ``\Ca''). 대소문자는 무시되므로, \CA, \Ca, \cA, \ca 는 모두 같은 의미가 된다. 선택적으로 세자리 수의 키값을 ``\'' 와 함께 사용할 수 있다 (예: \177 와 \c? 는 같은 의미이다).
추가적으로 key 값에 올수 있는 것들:
\t tab <tab> tab \r carriage return \n newline \e escape <esc> escape <up> up arrow <down> down arrow <left> left arrow <right> right arrow <pageup> Page Up <pagedown> Page Down <backspace> Backspace <delete> Delete <insert> Insert <enter> Enter <return> Return <home> Home <end> End <space> Space bar <f1> function key 1 <f10> function key 10 |
key 값은 공백을 포함하지 않는 이상 인용부호를 사용할 필요가 없다.
function 에는 key 가 눌렸을때 어떤 일을 할것인지 지정해준다. 기능들의 목록은 기능(함수)편을 참고하라. noop 명령은 해당키의 기능을 끌때 사용된다.
사용법: charset-hook alias charset 사용법: iconv-hook charset local-charset
charset-hook 명령은 문자셋의 알리아스를 지정할때 쓰인다. 이것은 메일의 문자셋을 mutt이 자동으로 인식하지 못할때 사용할 수 있다.
iconv-hook 명령은 해당 문자셋의 이름이 시스템의 것과 다를때 지정해 줄수 있다.
사용법: folder-hook [!]정규 표현식 명령어
각 메일함마다 다른 설정을 사용할때 쓰인다.
패턴은 정규 표현식으로 일치하는 메일함이 있는 경우 명령어가 실행된 후에 메일함을 읽는다.
주의: 만약 ``!'' 를 사용할 경우 정규 표현식은 인용 부호로 감싸줘야 한다.
다음 예는 모든 메일함을 보낸 시간으로 정렬한다:
folder-hook . set sort=date-sent |
다음 예는 mutt 메일함을 쓰레드 형식으로 정렬한다:
folder-hook mutt set sort=threads |
사용법: macro menu 키 sequence [ 설명 ]
매크로는 일련의 키의 연속(sequence)을 하나의 키로 정의하는 것이다.
즉, menu 에서 키를 누르면 sequence를 입력한 것과 같은 역할을 하게 되는 것으로, 몇가지 명령을 하나의 키로 단축할 수 있다. key 와 sequence 는 bind와 같은 요령으로 설정한다.
추가적으로 sequence에는 ^x를 사용해서 콘트롤 문자를 사용하거나, 키의 이름(예:<UP>)이나 명령어들을 사용할 수도 있다.
sequence 대신에 명령어를 직접 정의하면 해당 명령어의 키 설정이 바뀌어도 그대로 사용할 수 있다는 장점이 있다. 다음 예를 보라.
folder-hook . 'macro index d "<save-message>=trash\n\n<sync-mailbox>" "휴지통으로"' |
매크로 정의시 설명을 추가하면 도움말 화면에서 이것을 볼수 있다.
주의: 도움말 화면에서 매크로 설명은 화면 폭에 의해서 짤릴수 있다.
사용법: color 대상 전경색 배경색 [ 정규 표현식 ]
사용법: color index 전경색 배경색 패턴
사용법: uncolor index 패턴 [ 패턴 ... ]
터미날이 색을 지원한다면 Mutt 상의 각 아이템에 색을 지정해 사용할 수 있다. 색의 지정은 전경색과 배경색을 같이 지정해 주어야 한다.
다음과 같은 대상 들이 사용될 수 있다:
attachment (첨부물)
body (메일 본문)
bold (메일 본문에서 볼드 문자 하이라이팅)
error (Mutt의 오류 메세지)
header (메일 헤더)
hdrdefault (페이저에서의 기본 헤더 색)
index (메일 인덱스)
indicator (메뉴에서 사용되는 화살표 또는 반전 막대)
markers (페이저에서 ``+'' 로 시작되는 줄)
message (메일의 정보)
normal
quoted (인용문, quote-regexp변수로 인용문을 결정할 수 있다.)
quoted1, quoted2, ..., quotedN (인용문의 단계)
search (검색 결과의 하이라이팅)
signature (서명)
status (메일함과 메일의 정보가 표시되는 상태창)
tilde (페이저에서 ``˜'' 문자로 채워진 빈줄)
tree (쓰레드 정렬시)
underline (메일 본문의 밑줄)
전경색 과 배경색 에는 다음 값이 올수 있다:
white
black
green
magenta
blue
cyan
yellow
red
default
colorx
전경색 은 선택적으로 bright 문자를 덧붙이면 밝거나 굵은 문자를 표시하게 할 수 있다 (예, brightred).
터미날이 지원한다면, 특별한 키워드인 default 를 사용해서 투명하게 설정할 수도 있다. 역시 brightdefault 도 가능하다. 만약 Mutt 컴파일시 S-Lang 라이브러리와 링크되었다면, COLORFGBG 환경변수를 사용해서 터미날의 기본색을 지정해 주어야 한다. 다음 예를 보라.
set COLORFGBG="green;black" export COLORFGBG |
주의: S-Lang 라이브러리의 경우 white 와 yellow 대신에 lightgray 와 brown 값을 사용해야 한다.
주의: uncolor 명령은 오직 인덱스 대상에만 적용된다.
또한 mutt은 color0, color1, … 형식의 키워드를 인식한다. colorN-1 (N은 터미날이 지원하는 색을 표현하는 숫자).
만약 흑백 터미날을 사용한다면 ``mono'' 키워드를 사용해서 새로운 속성의 지정 가능하다:
사용법: mono <대상> <속성> [ 정규 표현식 ]
사용법: mono index 속성 패턴
사용법: unmono index 패턴 [ 패턴 ... ]
속성의 값은 다음과 같다:
none
bold
underline
reverse
standout
사용법: [un]ignore pattern [ pattern ... ]
이메일에는 보통 네트워크상에서 거쳐가는 시스템들에 의해 여러가지 헤더들이 추가되는데, 이들 대부분이 표시되지 않아도 되는 것들이다. 이 명령은 어떤 헤더를 보여 줄것인지 또는 감출것인지 정의할때 사용한다.
헤더 필드 이름은 완벽하게 적어주지 않아도 된다. 예를 들어 ``ignore content-'' 는 ``content-''로 시작하는 모든 헤더를 표시하지 않을 것이다.
다음 예와 같이 ``unignore'' 명령을 사용해서 일단 모두 표시하지 않는 것으로 설정한후에 원하는 것들만 다시 지정해주는 방법도 있다.
예:
ignore * unignore from date subject to cc unignore organization organisation x-mailer: x-newsreader: x-mailing-list: unignore posted-to: |
사용법: [un]lists 주소 [ 주소 ... ]
사용법: [un]subscribe 주소 [ 주소 ... ]
mutt은 몇가지 메일링 리스트와 관련된 기능을 가지고 있으며, 이것을 사용하기 위해서는 메일링 리스트의 주소와 가입 여부를 명시해 주어야 한다.
이것이 끝나면 list-reply (메일링 리스트로 답장) 기능을 사용할 수 있다. 추가적으로 가입된 메일링 리스트로 메일을 보낼때에는 mutt이 Followup-To 헤더를 자동으로 추가할 것이다 (followup-to 참고)
``lists''를 사용해서 "알고 있는" 메일링 리스트의 주소를 ``subscribe''에는 "가입된" 메일링 리스트의 주소를 적어준다.
``unlists'' 명령을 사용하면 "알고 있는/가입된" 메일링 리스트의 설정을 해제할 수 있다.
가입하지 않았지만 "알고 있는" 메일링 리스트라면 ``unsubscribe'' 명령을 사용할 수 있다.
사용법: mbox-hook [!]패턴 메일함
여러개의 스풀 메일함을 사용할 경우 읽은 메일을 해당 메일함으로 옮길때 사용한다. 패턴은 정규 표현식으로 스풀 메일함을 지정하고 메일함 은 읽은 메일이 저장될 곳을 지정해 주면 된다.
다른 hook 명령들과는 다르게, 첫번째 패턴만이 사용된다. (즉, 여러개의 메일함으로 동시에 저장되는것은 불가능하다.)
사용법: mailboxes [!]파일명 [ 파일명 ... ]
어떤 메일함에 새로운 메일이 도착하며 그것을 감시할 것인가를 설정한다. 기본적으로 주 메뉴의 상태창에 이 메일함(들)에 새 메일이 도착했음을 표시해준다.
메일함을 바꿀때 space키를 누르면 새 메일이 도착한 메일함으로 이동한다.
디렉토리 브라우져에서 TAB키를 누르면 이 메일함들을 보여주며, 새 메일이 있는지 확인할 수 있다. 또한, mutt이 실행될때 -y 옵션을 붙이면 자동적으로 이 모드로 시작된다.
주의: 새 메일의 인식은 마지막 수정 시간과 마지막 접근 시간을 비교함으로 이루어 진다. biff 나 frm 같이 일정 간격으로 메일함에 접근 하는 프로그램들이 접근 시간을 제대로 reset 해주지 못하면 mutt은 새 메일을 인식하지 못할것이다. 또한 백업 도구들도 공통적으로 파일 접근 시간을 바꾸어 놓는다.
주의: ``='' 나 ``!'' 같은 shortcuts이 사용되는 메일함을 설정할 때에는 관련된 변수(folder, spoolfile)가 먼저 선언되어야 한다.
사용법: my_hdr string
사용법: unmy_hdr field [ field ... ]
``my_hdr'' 명령은 자신만의 메일 헤더를 정의 할 수 있게 해준다.
예를 들어, ``Organization:'' 헤더를 보내는 메일에 넣으려면 다음을 .muttrc 파일에 넣어준다.
my_hdr Organization: Eunjea\'s Secret Penguin Labs |
주의: 키워드와 콜론 (``:'') 사이에는 공백 문자가 올수 없다 (이것은 RFC822에 준하며, mutt은 이것을 지킨다).
사용법: hdr_order header1 header2 header3
메일을 읽을때 보여지는 메일 헤더의 내용을 원하는 데로 정렬할 수 있다.
``unhdr_order *'' 는 이미 정의되어 있는 헤더 정렬 명령을 해제할때 사용한다.
hdr_order From Date: From: To: Cc: Subject: |
사용법: save-hook [!]패턴 파일명
메일을 저장 할때 사용되는 기본 파일 이름을 지정한다.
파일명은 From: 또는 to:의 주소가 패턴(정규 표현식)과 일치할때 사용된다.
패턴의 정확한 사용법은 pattern-hook을 참고하라.
예:
save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins save-hook aol\\.com$ +spam |
fcc-save-hook 참고.
사용법: fcc-hook [!]패턴(regexp) 메일함
이 명령은 보내는 메일을 record 변수에 지정된 메일함외에 다른 곳에 저장할때 사용한다.
mutt은 보내는 메일의 수신자중 패턴 에 일치하는 것이 있으면 여기에 지정된 메일함으로 저장하고 일치하지 않는 경우 record에 지정된 메일함에 저장한다.
pattern-hook에서 자세한 패턴 사용법을 참고하라.
예: fcc-hook kldp.org$ +kldp
위의 예는 메일의 수신자가 kldp.org 도메인을 가지고 있는 경우 `+kldp' 메일함에 저장되도록 한것이다.
fcc-save-hook 참조.
사용법: send-hook [!]패턴 명령어
이 명령은 메일의 수신자에 따라 특정 명령을 적용하도록 해준다. 패턴은 정규 표현식으로 수신자의 주소가 이것에 일치하면 command 를 실행하게 된다. 만약 여러번 일치하게 되면 설정파일에 적혀 있는 순서대로 명령을 차례대로 실행한다.
pattern-hook에서 자세한 패턴 사용법을 참고하라.
예: send-hook mutt "set mime_forward signature=''"
전형적인 사용 예로는 수신자에 따라 attribution, signature. locale등을 다르게 지정해 줄수 있다.
주의: send-hook 명령은 오직 한번만 실행된다. 즉, 메일 작성후에 수신자를 변경하거나, 메일을 수정한 후에는 적용되지 않는다.
사용법: message-hook [!]패턴 명령어
메일을 읽거나 포맷팅후에 해당 메일의 정보에 따라 명령을 줄수 있다. 메일의 내용이 패턴 에 일치하면 명령어 를 실행 시킨다.
pattern-hook에서 자세한 패턴 사용법을 참고하라.
예:
message-hook ~A 'set pager=builtin' message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject: .*\""' |
사용법: push 문자
특정 문자열을 키보드 버퍼에 기억시킬때 사용한다. 문자는 제어문자와 키 이름, 기능의 이름등이 사용될 수 있다. 이것은 mutt이 실행될때나 특정 메일함에 들어갈때 사용될 수 있을것이다.
사용법: exec 기능 [ 기능 ... ]
기능을 실행할때 쓰인다. 기능들의 목록은 기능(함수)을 참고하라. ``exec 기능'' 과 ``push <기능>'' 는 같은 역할을 한다.
사용법: score 패턴 점수
사용법: unscore 패턴 [ 패턴 ... ]
메일 스코어링 명령은 패턴 (패턴) 과 일치하는 메일에 점수를 준다 (주의: 다음 패턴들은 사용될 수 없다. ˜b, ˜B, ˜h).
점수 는 음/양수가 될 수 있으며, 메일의 총 점수는 각 score 명령의 패턴에 일치하는 만큼 더해진다. 하지만, 점수에 = 부호를 사용하여 반복되어 점수가 더해지는 것을 방지 할 수도 있다.
unscore 명령은 설정된 score을 해제할때 사용한다.
사용법: set [no|inv]variable[=value] [ variable ... ]
사용법: toggle variable [variable ... ]
사용법: unset variable [variable ... ]
사용법: reset variable [variable ... ]
이 명령은 설정 변수의 값을 설정한다. 기본적으로 다음 네가지 형태의 값이 사용될 수 있다:
1. boolean : set (yes) 또는 unset (no).
2. 숫자
3. 문자 : 공백이나 TAB을 포함하는 경우 인용 부호로 감싸주어야 하며, \n 는 새줄, \t는 TAB을 표현할때 사용한다.
4. quadoption : 은 네가지 값이 올수 있음을 뜻하며 yes 나 no 일 경우 해당 기능을 물어보지 않고 실행/취소 하며, ask-yes 와 ask-no 는 mutt이 해당 기능을 실행하기 전에 물어보는 프롬프트를 보여주며 각각 yes와 no의 기본값을 설정한다.
각 변수에 ``no'' 를 붙여서 unset 할 수도 있다. 예: set noaskbcc.
boolean 값에는 추가적으로 inv를 변수 이름앞에 붙여 사용할 수 있는데, 이것은 이전 설정값의 반대값이 된다는 의미이다. 이것은 macro를 설정할때 유용하게 쓰일수 있다 (예: set invsmart_wrap).
toggle 명령을 사용하는 것과 변수 이름앞에 inv 를 붙이는 것은 같은 효과를 준다.
역시, unset 명령과 변수 이름앞에 no 를 붙이는 것도 같다.
index 메뉴에서는 명령어 실행 기능을 사용해서 변수앞에 ? 를 붙이면 현재 값을 볼수 있다:
set ?allow_8bit |
물음표는 boolean 와 quadoption 값을 볼때만 필요하다.
reset 명령은 해당 변수값을 컴파일시의 기본값으로 돌려 놓는다 (기본값은 이 문서에 언급되어 있다). 만약 set 명령과 변수앞에 ``&''를 덧붙이면 이것은 reset 과 같은 효과를 준다. 또한 reset 명령에 ``all'' 을 지정하면 모든 설정값이 초기화 된다.
사용법: source 파일 이름
이 명령을 사용해서 다른 파일의 내용을 설정 파일로 불러 오는 것이 가능하다. 예를 들어 알리아스를 ˜/.mail_aliases 파일에 저장되도록 할 수 있다.
파일 이름이 ``˜''로 시작하면 그것은 홈 디렉토리에 파일이 위치하고 있는 것을 뜻한다.
Tip: 만약 파일 이름이 | 로 끝난다면, 해당 파일을 실행하고 그 결과를 사용하게 된다 (예: tt/source /bin/myscript|/).
사용법: unhook [ * | hook 종류 ]
이 명령으로 이전에 설정된 hook 을 해제할 수 있다. ``*'' 문자를 사용해서 모든 hook 설정을 해저하거나, 다음과 같이 특정 hook을 지정할 수 있다. unhook send-hook.