Mutt, и его “наследник” Neomutt – консольный почтовый клиент, MUA – Mail User Agent.
Поддерживает чтение и получение почты по IMAP/POP3, отправку по SMTP.
Ниже рассмотрим настройку IMAP и SMTP для обычного почтового сервера (не Gmail, хотя принципиальной разницы нет) на примере Freehost.com.ua, плюс примеры настроек для отображения списка каталогов в ящике и цветовой схемы.
Содержание
Установка, навигация
Устанавливаем:
[simterm]
$ sudo pacman -S mutt
[/simterm]
Или сразу Neomutt:
[simterm]
$ sudo pacman -S neomutt
[/simterm]
Дальнейшие примеры будут с использованием Neomutt.
Подсказка по клавишам управления есть вверху:
И во время просмотра письма:
В целом управление стандартное/
Главное меню:
q
: выход из просмотра ил программыd
: отметить на удаление (будет удалено при выходе)m
: создать новое письмоr
: ответить на текущее
При просмотре письма:
i
: вернуться к списку писем в ящике- пробел: следующая страница текста
-
: предыдщая страница письмаr
: ответитьd
: удалить- стрелки вверх/вниз/влево/вправо: следующее/предыдущее псьмо
Настройка IMAP
Файл настроек по умолчанию – ~/.muttrc
или ~/.neomuttrc
, документация тут>>> или man 5 muttrc
.
Для чтения почты по IMAP – добавляем:
set imap_user="[email protected]" set imap_pass="MyP@ssw0rd" set folder=imap://freemail.freehost.com.ua:143 set spoolfile=+INBOX
Это минимальные настройки для подключения.
В folder
указываем IMAP-сервер почты, а в spoolfile
– каталог с почтой на этом сервере. При этом “+
” в имени перед именем ящика будет заменено на значение параметра folder
.
Запускаем:
Далее, с помощью `mailboxes` можно настроить какие именно каталоги проверять регулярно на предмет появления новых писем, например:
mailboxes +INBOX +Github
Либо наоборот – можно указать список каталогов, которые проверять не надо, но проверять все остальные – unmailboxes
.
Что бы периодически проверять все каталоги – указываем:
set imap_check_subscribed
Для кеширования данных локальных, что бы не тянуть данные каждый раз с сервера добавляем:
set header_cache = ~/.cache/mutt set message_cachedir = ~/.cache/mutt
Настройка SMTP
Для отправки почты из mutt
/neomutt
указываем:
############ ### SMTP ### ############ set smtp_pass = "Ant0shka91" set smtp_url=smtp://1th@setevoy[email protected]:25 set realname = "Arseny'" set from = "1th@setevoy.kiev.ua" set use_from = yes
При этом, если логин и/или пароль такие же, ка кдля IMAP – можно использовать их переменные, т.е.:
set smtp_pass = $imap_pass set smtp_url=smtp://[email protected]:250
Поддержка SSL
Для SSL в IMAP – указываем протокол imaps
, и порт:
set folder = imaps://freemail.freehost.com.ua:993
Для использования SSL при отправке – меняем протокол с smtp
на smtps
, указываем порт и добавляем ssl_force_tls
:
set smtp_pass = $imap_pass set smtp_url=smtps://[email protected]:465 set ssl_force_tls = yes
Сортировка писем
Для сортировки используются параметры sort
.
Используем:
sort = threads
: сортировать по тредам (ответы на письма)sort_aux = reverse-last-date-received
: в обратном порядке (последние вверху)
В результате вместо дефолтной сортировки:
Получаем сортировку по дате получения включая ответы:
Sidebar – список каталогов
Для Mutt нужен плагин, в Neomutt есть по умолчанию.
См. опции в документации и в примере тут>>>.
Добавляем опции:
set sidebar_visible = yes set sidebar_width = 35 set sidebar_sort_method = unsorted # remove INBOX.Foldername - leave just Foldername set sidebar_short_path # for the sidebar_format set mail_check_stats set sidebar_format = "%B%?F? [%F]?%* %?N?%N/?%S" # build a tree set sidebar_folder_indent # tree with spaces set sidebar_indent_string=" "
Получаем следующий результат:
Sidebar – навигация
Добавим несколько комбинаций для навигации по списку каталогов:
# navigation bind index,pager \Cp sidebar-prev # Ctrl-p - Previous Mailbox bind index,pager \Cn sidebar-next # Ctrl-n - Next Mailbox bind index,pager \Co sidebar-open # Ctrl-o - Open Highlighted Mailbox bind index,pager \Cb sidebar-toggle-visible # Ctrl+b - Display/Hide Sidebar
Теперь по Ctrl+p переходим по списку каталогв вверх, Ctrl+n – вниз, Ctrl+o – открыть папку.
Ctrl+b – показать или скрыть сайдбар.
Sidebar – цвета
Сейчас цветовая схема выглядит достаточно скучно:
Добавляем:
# currently opened folder color sidebar_indicator cyan default # cursor on a folder color sidebar_highlight white default # folder with new messages color sidebar_new green default # folder with no new/flagged mails, etc. color sidebar_ordinary blue default # dividing line between the Sidebar and the Index/Pager panels color sidebar_divider brightblack black
Тут первым цветом указывается FOREGROUND, т.е. цвет самого текста, вторым – BACKGROUND.
Результат:
Плюс можно добавить цвета для списка писем и отображения писем.
Взято из Email in the Terminal: Configuring Neomutt, там же есть и описание:
# header color header blue default ".*" color header brightmagenta default "^(From)" color header brightcyan default "^(Subject)" color header brightwhite default "^(CC|BCC)" # Default index colors: color index yellow default '.*' color index_author red default '.*' color index_number blue default color index_subject cyan default '.*' # For new mail: color index brightyellow black "~N" color index_author brightred black "~N" color index_subject brightcyan black "~N" color progress black cyan # Body colors color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL color body green default "\`[^\`]*\`" # Green text between ` and ` color body brightblue default "^# \.*" # Headings as bold blue color body brightcyan default "^## \.*" # Subheadings as bold cyan color body brightgreen default "^### \.*" # Subsubheadings as bold green color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow color body brightcyan default "[;:][-o][)/(|]" # emoticons color body brightcyan default "[;:][)(|]" # emoticons color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon? color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon? color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]" color normal brightyellow default color error red default color tilde black default color message cyan default color markers red white color attachment white default color search brightmagenta default color status brightyellow black color hdrdefault brightgreen default color quoted green default color quoted1 blue default color quoted2 cyan default color quoted3 yellow default color quoted4 red default color quoted5 brightred default color signature brightgreen default color bold black default color underline black default color normal default default
Результат:
Пароли и безопасность
И последним – про хранение паролей.
Указывать в виде текста в файле настроек не хочется, поэтмоу есть решение – использовать какой-то внешний менеджер паролей.
Например, что бы получить пароль из KeePassXC (см. KeePass: настройка MFA, хранение паролей браузера, паролей SSH ключей и интеграция Secret Service) – вместо пароля указываем:
set imap_pass = `keepassxc-cli show Dropbox/KeePassDB/Main.kdbx 1th_pass -s -a Password`
При запуске Mutt запросит пароль от базы, получит значение поля Password для записи 1th_pass, и сохранит пароль в переменной imap_pass
.
Аналогично для pass
(см. Linux: GPG-ключи, менеджер паролей pass и импорт из KeePass) строка для получения пароля из записи 1th_freehost_password выглядела бы как:
set imap_pass = `/usr/bin/pass 1th_freehost_password`
Полный конфиг
Всё содержимое получившего конфига:
############ ### IMAP ### ############ set imap_user = `/usr/bin/pass 1th_freehost_mailbox` set imap_pass = `/usr/bin/pass 1th_freehost_password` set imap_check_subscribed # not open new IMAP connections to check for new mail. Mutt will only check for new mail over existing IMAP connections unset imap_passive # the maximum amount of time in seconds that mutt will wait before polling open IMAP connections, to prevent the server from closing set imap_keepalive = 300 # how often to check for new mail (time in seconds). set mail_check = 60 set folder = imaps://freemail.freehost.com.ua:993 # defaul inbox mailboxes = +INBOX set spoolfile = +INBOX # save drafts to Dratfs set postponed = +Drafts # save sent to Sent set record = +Sent # cache locally set header_cache = ~/.cache/mutt set message_cachedir = ~/.cache/mutt ############ ### SMTP ### ############ set smtp_pass = $imap_pass set smtp_url=smtps://[email protected]:465 set ssl_force_tls = yes set realname = "Arseny'" set from = $imap_user set use_from = yes # skip to compose when replying set fast_reply # include message in replies set include # include message in forwards set forward_quote # sorting set sort = threads set sort_aux = reverse-last-date-received # leave read messages in inbox set move = no ############### ### Sidebar ### ############### set sidebar_visible = yes set sidebar_width = 35 set sidebar_sort_method = path # remove INBOX.Foldername - leave just Foldername set sidebar_short_path # for the sidebar_format set mail_check_stats set sidebar_format = "%B%?F? [%F]?%* %?N?%N/?%S" # build a tree set sidebar_folder_indent # tree with spaces set sidebar_indent_string=" " # navigation bind index,pager \Cp sidebar-prev # Ctrl-p - Previous Mailbox bind index,pager \Cn sidebar-next # Ctrl-n - Next Mailbox bind index,pager \Co sidebar-open # Ctrl-o - Open Highlighted Mailbox bind index,pager \Cb sidebar-toggle-visible # Ctrl+b - Display/Hide Sidebr ############## ### Colors ### ############## # currently opened folder color sidebar_indicator cyan default # cursor on a folder color sidebar_highlight white default # folder with new messages color sidebar_new green default # folder with no new/flagged mails, etc. color sidebar_ordinary blue default # dividing line between the Sidebar and the Index/Pager panels color sidebar_divider brightblack black # header color header blue default ".*" color header brightmagenta default "^(From)" color header brightcyan default "^(Subject)" color header brightwhite default "^(CC|BCC)" # Default index colors: color index yellow default '.*' color index_author red default '.*' color index_number blue default color index_subject cyan default '.*' # For new mail: color index brightyellow black "~N" color index_author brightred black "~N" color index_subject brightcyan black "~N" color progress black cyan # Body colors color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL color body green default "\`[^\`]*\`" # Green text between ` and ` color body brightblue default "^# \.*" # Headings as bold blue color body brightcyan default "^## \.*" # Subheadings as bold cyan color body brightgreen default "^### \.*" # Subsubheadings as bold green color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow color body brightcyan default "[;:][-o][)/(|]" # emoticons color body brightcyan default "[;:][)(|]" # emoticons color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon? color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon? color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]" color normal brightyellow default color error red default color tilde black default color message cyan default color markers red white color attachment white default color search brightmagenta default color status brightyellow black color hdrdefault brightgreen default color quoted green default color quoted1 blue default color quoted2 cyan default color quoted3 yellow default color quoted4 red default color quoted5 brightred default color signature brightgreen default color bold black default color underline black default color normal default default
Вроде всё.
Ссылки по теме
- Mutt Arch Wiki
- A Mutt journey: Mutt configuration
- Neomutt Sidebar Feature
- neomuttrc-example
- Email in the Terminal: Configuring Neomutt
- Minimal neomutt config for gmail imap
- Neomutt sidebar config
- Named Mailboxes