Мотивация пользоваться вместо обычных почтовых клиентов, таких, как Thunderbird, или, скажем, Claws Mail, консольным почтовым клиентом Mutt сродни мотивации пользоваться irssi вместо HexChat . Консольные приложения, как правило, намного проще своих GUI-аналогов, а значит не так сильно жрут батарею и более безопасны. Также они управляются исключительно при помощи клавиатуры, могут быть запущены на сервере в screen / tmux , и вот это все. К сожалению, конкретно Mutt совершенно незаслуженно пользуется репутацией программы, очень сложной в настройке. Сегодня мы убедимся, что в действительности настройка Mutt не сильно отличается от настройки любого другого почтового клиента.
На момент написания этих строк в качестве основной системы я использую FreeBSD, поэтому у меня установка необходимых пакетов выглядит так:
В дополнение к пакету mutt нужен еще и msmtp по той причине, что сам Mutt является только MUA, а не MTA . Другими словами, непосредственно для отправки писем Mutt использует сторонние программы. Не переживайте, это не так страшно, как может показаться.
Дополнение: Начиная с версии 1.5 стало возможным использовать smtp напрямую , без сторонних MTA. Для этого Mutt должен быть собран с соответствующими опциями. В зависимости от вашей системы / дистрибутива эти условия могут выполняться или не выполняться, поэтому в этой статье описывается способ, работающий всегда.
Первым делом указываем параметры подключения к SMTP . В файле ~/.msmtprc пишем что-то вроде:
host mail.example.ru
port 587
from afiskon@example.ru
tls on
tls_starttls on
# tls_trust_file /etc/ssl/cert.pem
tls_trust_file /usr/local/etc/ssl/cert.pem
auth on
user afiskon@example.ru
password PASSWORD
Адрес сервера, имя пользователя и пароль, разумеется, нужно заменить на свои. Кроме того, в вашей системе путь к связке корневых сертификатов может быть немного другим. Думаю, вы без труда найдете нужный файл при помощи утилиты find.
Меняем права доступа к конфигу, иначе msmtp откажется использовать его:
Проверяем, что письма ходят:
msmtp —debug -a afiskon @ example.ru -t -i afiskon @ example.ru
Далее создаем примерно такой файл ~/.muttrc:
set folder=»imaps://afiskon@example.ru:PASSWORD@mail.example.ru/»
set sendmail=»/usr/local/bin/msmtp -a afiskon@example.ru -t -i»
set from=»afiskon@example.ru»
set realname=»Aleksander Alekseev»
set use_from=yes
set envelope_from=»yes»
set record=»=Sent»
set postponed=»=Drafts»
set signature=»~/.signature»
Насколько мне известно, в третьем тысячелетии абсолютно все почтовые сервисы предоставляют IMAP, и про POP3 можно наконец-то забыть.
Запускаем Mutt. Некоторые основные клавиши (все не привожу, так как их очень много и в клиенте все равно повсюду есть подсказки):
- ? — помощь;
- Вверх/вниз — перемещение между письмами;
- Enter — открыть письмо;
- d — пометить, что письмо следует удалить;
- u — отменяет пометку письма на удаление;
- N — пометить письмо как прочитанное/непрочитанное;
- $ — сохранить изменения (удалить помеченные письма, и т.д.);
- (цифра) — переход к письму с заданным номером;
- m — написать новое письмо;
- r — ответить на письмо;
- g — group reply, ответить всем;
- f — forward, перенаправить письмо;
- h — показать/скрыть все заголовки письма;
- a — создать алиас для отправителя письма;
- t — поставить/снять метку (tag);
- ;(что-то) — выполнить что-то с отмеченным;
- s — сохранить письмо на диск или в папку;
- c? — просмотр папок (там же см справку про создание/удаление папок);
- q — выйти из Mutt;
В любой непонятной ситуации просто нажмите Ctr+C, и на вопрос закрыть ли Mutt ответьте «no». Поиск по письмам работает примерно так. Нажмите T
, затем введите ~B pattern
для поиска по телу сообщения или ~s pattern
для поиска по subject. По тому же принципу можно делать untag найденных ранее сообщений, только вместо T следует использовать Ctr+T. Подробности о поиске можно найти в документации .
Заметьте, что нажатие $
не приводит к загрузке новых писем. Загрузить новые письма можно, введя команду c?
, и заново открыв папку INBOX. Понятно, что постоянно так делать неудобно, поэтому в ~/.muttrc стоит дописать такой хоткей:
Еще один момент, который поначалу не очень понятен. Новые непрочитанные письма помечаются как N (new). Но если переподключиться, то они будут отмечены, как O (old). Это все еще непрочитанные письма, но которые мы уже видели в прошлый раз. Таким образом можно отличить новые письма от совсем-совсем новых.
Еще один хинт. По умолчанию Mutt отображает все письма «плоско». Мне лично древовидное отображение нравится больше. Включается оно так:
Примите во внимание, что Mutt имеет очень гибкие настройки в отношении что каким цветом подсвечивать. Вот вам для примера небольшой кусок ~/.muttrc, чтобы вы могли представить масштабы (какая строчка что означает, думаю, и так понятно):
color index green default «~O»
# new unread messages
color index brightgreen default «~N»
# messages to me
color index cyan default «~p»
color index brightcyan default «~p~O»
color index brightcyan default «~p~N»
# messages from me
color index yellow default «~P»
# tagged messages
color index red default «~T»
# messages about to be deleted
color index brightyellow default «~D»
# message displaying settings
color hdrdefault green default
color header brightgreen default ^Subject:
color quoted cyan default
color signature red default
Мне очень нравится, что можно подсветить сообщения, отправленные лично тебе, а не просто в какой-нибудь мейлинг лист! Вообще, Mutt настолько гибок в плане настройки цветов, что для него делают целые темы .
Кстати, после внесения изменений в ~/.muttrc, их можно подгрузить без перезапуска Mutt, введя:
По умолчанию Mutt скролит текст писем и списки писем экранами , а не по одной строке. Чтобы исправить это, я дописал в конфиг:
bind pager <up> previous-line
bind pager <down> next-line
# scroll index line by line
set menu_scroll
Также в Mutt есть искуственные паузы, чтобы пользователь успевал прочитать все, что клиент выводит при подключении к IMAP серверу, и так далее. В целом это создает ощущение, что клиент тормозит, поэтому отключаем:
set sleep_time = 0
Еще, чтобы клиент работал быстрее, можно включить кэширование (не забудьте предварительно создать соответствующие каталоги):
set header_cache=»~/.mutt/header_cache»
set message_cachedir=»~/.mutt/message_cache»
Теперь, допустим, нам нужна адресная книга. Нет ничего проще!
В ~/.muttrc дописываем что-то вроде:
Теперь, когда предлагается ввести адрес получателя при написании нового письма, просто начните вводить его никнейм. Никнеймы автодополняются при нажатии Tab. А если нажать Tab дважды, то открывается полный список алиасов.
И последняя пара полезняшек. Чтобы при редактировании писем в Vim ширина текста автоматически ограничивалась до 72-х символов, в ~/.vimrc допишите:
au BufRead /tmp/mutt-* set tw=72
Интересно также, что Mutt позволяет слать письма прямо из консоли:
Чтобы вы могли лучше представить, как происходит работа с Mutt, я приготовил пару скриншотов. Оба скришота кликабельные, в полном размере имеют формат PNG, 1366 x 768 пикселей, размер менее 250 Кб.
Просмотр списка писем:
Чтение конкретного письма:
А теперь, внимание, вопрос! А как работать с несколькими мейлбоксами? Ну-ка, ну-ка, кто уже догадался? 🙂
Да просто дописываем информацию об еще одном SMTP-аккаунте в ~/.msmtprc, создаем еще один .muttrc и переключаемся между ними при помощи :source
. Я лично сложил все аккаунты в ~/.mutt/user1, ~/.mutt/user2 и так далее, а дэфолтный подключил в ~/.muttrc с помощью директивы source. Адресную книгу по тому же принципу можно положить в ~/.mutt/contacts. Единственная хитрость заключается в том, что после переключения на другой аккаунт при помощи :source
, нужно сделать c!
, чтобы клиент переподключился. Все гениальное — просто! Разумеется, для удобства можно определить хоткеи для переключения между аккаунтами. Пример вы найдете в полной версии ~/.muttrc к данной статье .
В нем же вы найдете кое-какие другие интересные вещи. Например, открытие ссылок из письма в браузере через urlscan , рендеринг HTML-писем при помощи lynx и их открытие в браузере по умолчанию, открытие картинок в gpicview, и не только. Кстати, много полезных рецептов, связанных с Mutt, можно найти на wiki-сайте Arch Linux . Ну и, конечно же, обратите внимание на официальный мануал по Mutt . Он классный и легко превращается в PDF-книгу, если нажать Ctr+P (print) в Chrome или Chromium.
Многое, к сожалению, остается за кадром. Например, настройка фильтров и работа с IMAP в оффлайне. Для последнего часто используют offlineimap . Но эти вопросы уже выходят за рамки данного поста и, откровенно говоря, сейчас мне это не особо нужно.
Дополнение: О том, как прикрутить GPG к Mutt, читайте в посте Использование PGP/GPG, руководство для нетерпеливых .