"All mail clients suck. This one just sucks less."
(Все почтовые клиенты уродские. Этот просто менее уродлив, чем другие.)
Michael Elkins, автор mutt
Сегодня мы поговорим об одном из мощнейших почтовых клиентов (точнее, MUA) в Linux. Сразу скажу, что это именно MUA, т.е. mutt не умеет сам получать и отправлять письма. Поэтому для нормальной работы с ним нужна настроенная почтовая система с MTA (см. мою статью об этом).
mutt берет письма из ящиков формата mbox. Предположим, что наш procmail раскладывает входящую почту по ящикам, расположенным в каталоге ~/Mail (переменная folder, используемая mutt, по умолчанию равна именно ~/Mail). Чтобы из mutt можно было быстро открывать эти ящики, укажем в ~/.mutt/muttrc их список. Выглядит это примерно так:
mailboxes +inbox +friends +lists/community +lists/devel
Здесь после ключевого слова mailboxes чеоез пробел перечисляются пути к ящикам, причем знаки + и = заменяются на значение переменной folder (~/Mail по умолчанию). В самом mutt эти знаки также часто используются и имеют аналогичное значание.
Теперь в mutt клавишей "c" ("сменить ящик") и двойным Tab будет вызываться список из указанных ящиков. Кроме того, при запуске и через каждые 5 с. все упомянутые ящики будут проверяться на наличие новой почты. Кстати, если есть ящики с новыми письмами, при нажатии клавиши "c" будет предложено открыть 1-й из таких ящиков.
Настраиваем дальше. Укажем папки для черновиков и отправленных писем:
set postponed=+drafts
set record=+sent
Слегка изменим стандартный вид списков писем и папок:
set index_format="%4C %Z %{%b %d} %-31.31F %N (%4c) %s"
set folder_format="%t%N %-30.30f %8s"
Настроим опции редактирования писем:
# мой любимый редактор icon_wink.gif - можно и emacs, например
set editor="vim -c 'set ft=mail tw=74' '+/^$'"
# не задавать глупых вопросов перед началом редактирования
set autoedit
# можно редактировать заголовки письма прямо в редакторе
set edit_headers
(описания опций можете посмотреть в man muttrc).
Еще куча полезных настроек:
# тут всё понятно
set forward_format="Fwd: %s"
set tmpdir=~/tmp
# прокручивать список писем по 1 строке, а не экранами
set menu_scroll
# запрашивать вид пересылаемого письма, по умолчанию в теле, а не в аттаче
set mime_forward=ask-no
# удалять пустые ящики вместе с последним сообщением в них
set nosave_empty
# сортировка - сначала по дискуссиям, дискуссии по времени, самое новое вверху
set sort=threads
set sort_aux=reverse-date
# отображать в запросах y/n вместо д/н
set show_alt
# без вопросов цитировать сообщение при ответе
set include
# отключаем функцию печати icon_wink.gif
set noprint
# необходимо для отправки писем через sendmail/postfix
set envelope_from
# не различать "новые" и "непрочитанные" письма
set nomark_old
# список кодировок, используемых для отправки - используется 1-я из них, содержащая все символы отправляемого письма
set send_charset="us-ascii:iso-8859-1:koi8-r:windows-1251:utf-8"
# при достижении конца письма не переходить на следующее автоматически
set pager_stop
# при действиях над письмами (удаление, перемещение и т.д.) производить их над всеми помеченными, если они есть
set auto_tag
# правильно обрабатывать вложения с неправильно закодированными именами
set rfc2047_parameters
# никогда не сворачивать дискуссии с непрочитанными сообщениями
set nocollapse_unread
# при просмотре писем верхние 12 строк занимает дерево сообщений (по умолчанию его не видно при просмотре отдельных писем)
set pager_index_lines=12
# во всех ящиках из каталога lists/ при входе сворачивать дискуссии
folder-hook lists/ "push ^[V"
В последней строке использована команда folder-hook, позволяющая выполнять указанную в ней команду лишь для определенных ящиков. С ее помощью в mutt организовываются различные настройки для разных ящиков. Например, сделаем так, чтобы в обычных ящиках письма сортировались по дате, а в папке lists - по дискуссиям:
set sort=reverse-date
folder-hook lists/ 'set sort=threads'
Аналогично можно сделать с любым параметром.
Еще скажу одну важную вещь насчет списков рассылки (мейл-листов). Адреса всех листов, на которые Вы подписаны, необходимо перечислить в файле конфигурации:
subscribe [email protected]
subscribe [email protected]
Теперь несколько слов об интерфейсе mutt. У программы есть 2 основных режима: "index" - список писем и "pager" - просмотр отдельного письма. Плюс режим написания нового письма, но этим занимается внешний редактор. В обоих режимах клавиша ? открывает справку по используемым в этом режиме клавишам.
Чтобы открыть ящик, нажмите "c" и затем Tab. Откроется оглавление каталога ~/Mail. Клавишей Tab можно переключиться в режим списка ящиков, указанных в mailboxes, и обратно. Нажмите Enter на нужном ящике, и откроется список его писем.
Клавиша X (Shift-x) переключает показ всех и только непрочитанных писем. Клавиша Enter откроет выделенное письмо в режиме просмотра. Стрелки влево-вправо перебирают письма, стрелки вверх-вниз по умолчанию делают то же, но я пишу в muttrc следующее:
bind pager previous-line
bind pager next-line
Теперь стрелки вверх-вниз листают текущее письмо.
В обоих режимах работают следующие клавиши. Клавиша Tab переходит к следующему непрочитанному сообщению. Клавиша r открывает редактор для написания ответа на текущее письмо, клавиша L делает то же самое, но для списков рассылки (отвечая в список, а не автору). Клавиша f пересылает текущее письмо. Клавиша m начинает новое письмо. Во всех случаях после написания сообщения и выхода из редактора (с сохранением!) откроется окно отправки сообщения, где можно поменять некоторые заголовки (нажмите ? для справки), вложить файл (клавишей a), продолжить редактирование (клавиша e), отправить сообщение (клавиша y) или выйти из этого диалога (клавиша q, при этом спросят, надо ли сохранить черновик письма на будущее или же удалить его; чтобы продолжить отложенное сообщение, в любой момент нажмите m и ответьте "да" на предложение продолжить отложенное).
В режиме списка писем клавиша d "удаляет" сообщения, при этом письма лишь помечаются для удаления. Чтобы окончательно удалить письмо, нажмите $ или откройте другой ящик. Клавишей u можно снять эту пометку с письма, которое передумали удалять. Клавиша s сохраняет письмо в другой ящик, при этом (по умолчанию) удаляя из текущего. Клавиша t помечает текущее сообщение, затем помеченные сообщения можно одной клавишей удалить или переместить.