💾 Archived View for tilde.team › ~rami › mutt.gmi captured on 2024-05-12 at 15:18:13. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2024-05-10)

➡️ Next capture (2024-08-18)

-=-=-=-=-=-=-

~Rami ₪ MANUALS

רמי

SUBJECT: Mutt: Консольный почтовый клиент с поддержкой POP3/IMAP/SMTP и GNUPG

AUTHOR: Rami Rosenfeld

DATE: 03/04/24; upd. 04/04/24; 04/04/24; 08/04/24; 10/04/24

TIME: 01.00

LANG: ru, en

LICENSE: GNU FDL 1.3

TAGS: gnu, gnome, software, opensource, linux, system, man, manual, bash, privacy, security, rhel, centos, mate, xfce, lxde, spin, de, systemd, systemctl, terminal, console, mail, gnupg, pop, imap, mutt, abook

Mutt: Консольный почтовый клиент с поддержкой POP3/IMAP/SMTP и GNUPG

INTRO

Mutt обладает огромным функционалом, и описание всех настроек и "горячих клавиш" - дело абсолютно бессмысленное (обратите внимание на впечатляющий список приведенных man'ов в конце этого текста). Поэтому в данном руководстве я привожу лишь самые необходимые настройки конфигурации и распространенные управляющие команды. Оба варианта muttrc тщательно протестированы на "получение/отправку" сообщений и полностью работоспособны.

NOTE

Создание структуры файлов и каталогов:

mkdir -p ~/.mutt/cache/headers

mkdir ~/.mutt/cache/bodies

mkdir ~/.mutt/attachments

cd ~/.mutt

touch muttrc mutt_drafts mutt_sent mutt_trash certificates signature aliases mailcap

Примечание: После установки и полной настройки Mutt, в целях исключения доступа к каталогу и файлам обязательно исполните команду:

chmod 700 -R ~/.mutt

Редактирование конфигурационного файла muttrc:

nano ~/.mutt/muttrc

В данном подразделе рассматриваются ДВЕ РАЗНЫЕ конфигурации muttrc (используйте только одну из них!). Лично я - приверженец получения почты по протоколу POP3, но во втором варианте рассмотрена и конфигурация с использованием IMAP. Настройки SMTP являются общими для обеих конфигураций.

Примечание 1: Используйте свой реальный E-mail и парольную фразу вместо "your_name@server.name" и "YOUR_PASSPHRASE"

Примечание 2: Будьте внимательны! В примерах указаны POP-сервер "pop.server.name", IMAP-сервер "imap.server.name" и SMTP-сервер "mail.server.name" (с портами, характерными для задействованных протоколов: 995, 993 и 465); в реальных же ситуациях могут встретиться "smtp.server.name" и даже (в обоих случаях!) - просто "server.name:port". Поэтому перед настройкой muttrc обязательно сверьтесь с данными, которые предоставляет почтовый провайдер. Особенно тщательно проверяйте номера портов по всему тексту конфигурационного файла!

Примечание 3: Используйте абсолютные пути для файлов и каталогов. В противном случае, они гипотетически могут сохраняться в общую папку ~/Mail, которая уже задействована другим почтовым приложением, например ClawsMail. Итог: возникнет конфликт или мешанина из файлов.

Примечание 4: Парольные фразы (в целях безопасности) рекомендовано не хранить в открытом виде: оставьте эти поля пустыми. Однако вам придется вводить их при каждой проверке почты или отправке сообщений; это плохо совместимо с автопроверкой сообщений "mail_check" (и ее следует закомментировать).

Вариант 1. Настройки POP3 + SMTP

# POP3 + SMTP SETTINGS

# MailCheck Settings
set beep_new = yes
set timeout = 660
set mail_check = 300
set mail_check_stats = yes
set mail_check_stats_interval = 120

# Account
set realname = 'Your Name'
set from = 'your_name@server.name'
set use_from = yes
set envelope_from = yes

set send_charset = 'utf-8'
set signature = '~/.mutt/signature'

set pop_pass = 'YOUR_PASSPHRASE'
set smtp_pass = 'YOUR_PASSPHRASE'

# HTML-messages
set mailcap_path = '~/.mutt/mailcap'
auto_view text/html

# VARIANT 1: Aliases for E-mails
set alias_file = '~/.mutt/aliases'
set sort_alias = alias
set reverse_alias = yes
source $alias_file

# VARIANT 2: Abook settnigs
# set query_command="abook --mutt-query '%s'"
# macro index a     "|abook --add-email\n" 'add sender to abook'
# macro pager a     "|abook --add-email\n" 'add sender to abook'

# Server settings
set pop_host = 'pops://your_name@server.name@pop.server.name:995'
set smtp_url = 'smtps://your_name@server.name@mail.server.name:465/'
set ssl_force_tls = yes

# Folders and Files
set spoolfile = 'pops://your_name@server.name@pop.server.name'
set postponed = '~/.mutt/mutt_drafts'
set record = '~/.mutt/mutt_sent'
set trash = '~/.mutt/mutt_trash'
set attach_save_dir = '~/.mutt/attachments'

set header_cache = '~/.mutt/cache/headers'
set message_cachedir = '~/.mutt/cache/bodies'
set certificate_file = '~/.mutt/certificates'

Вариант 2. Настройки IMAP + SMTP

# IMAP + SMTP SETTINGS

# MailCheck Settings
set beep_new = yes
set timeout = 660
set mail_check = 300
set mail_check_stats = yes
set mail_check_stats_interval = 120

# Account
set realname = 'Your Name'
set from = 'your_name@server.name'
set imap_user = 'your_name@server.name'
set use_from = yes
set envelope_from = yes

set send_charset = 'utf-8'
set signature = '~/.mutt/signature'

set smtp_pass = 'YOUR_PASSPHRASE'
set imap_pass = 'YOUR_PASSPHRASE'

# HTML-messages
set mailcap_path = '~/.mutt/mailcap'
auto_view text/html

# VARIANT 1: Aliases for E-mails
set alias_file = '~/.mutt/aliases'
set sort_alias = alias
set reverse_alias = yes
source $alias_file

# VARIANT 2: Abook settnigs
# set query_command="abook --mutt-query '%s'"
# macro index a     "|abook --add-email\n" 'add sender to abook'
# macro pager a     "|abook --add-email\n" 'add sender to abook'

# Server settings
set smtp_url = 'smtps://your_name@server.name@mail.server.name:465/'
set ssl_force_tls = yes

# Folders and Files
set folder = 'imaps://imap.server.name:993'
set spoolfile = '+INBOX'
set postponed = '~/.mutt/mutt_drafts'
set record = '~/.mutt/mutt_sent'
set trash = '~/.mutt/mutt_trash'
set attach_save_dir = '~/.mutt/attachments'

set header_cache     = '~/.mutt/cache/headers'
set message_cachedir = '~/.mutt/cache/bodies'
set certificate_file = '~/.mutt/certificates'

Дополнения к конфигурационным файлам

Некоторые опции будут весьма полезны при работе с Mutt, и я добавил их в оба muttrc, указанных выше.

1) Принудительное указание кодировки отправляемых сообщений (весьма важная опция!):

set send_charset = 'utf-8'

Примечание: Никогда не создавайте сообщения в национальной кодировке: это дурной тон! Используйте UTF-8.

2) Создание автоподписи к отправляемым сообщениям:

nano ~/.mutt/signature

С уважением,

Имя Фамилия

set signature = '~/.mutt/signature'

3) Создание алиасов к почтовым адресам (с автодополнением при составлении писем) без использования сторонней адресной книги:

set alias_file = '~/.mutt/aliases'

set sort_alias = alias

set reverse_alias = yes

source $alias_file

Вторая строка означает, что при показе на экране данные будут отсортированы по алиасам (никнеймам), а не по реальным E-mail'ам. Если вам удобнее, измените это значение на "address".

Последняя строка гарантирует, что содержимое файла "aliases" будет подгружено при запуске Mutt; это необходимо для автодополнения по клавише [TAB].

Наполните файл следующим содержимым (пример):

nano ~/.mutt/aliases

alias friend "Name Longname" <my@friend.server>

alias mylove "Name" <my@love.server>

Примечание: Не запутайтесь! В приведенных выше примерах конфигурационных файлов указаны сразу ДВА ВАРИАНТА возможного хранения адресов: с помощью алиасов и с помощью сторонней программы Abook (второй вариант закомментирован, т.е. отключен).

Адреса приводите в указанном формате, т.е. с кавычками и скобками: < >.

4) Просмотр HTML-писем в стороннем консольном браузере:

ВАЖНО: Старайтесь никогда не открывать HTML-письма в их исходном (оригинальном) виде из-за возможно вредоносного содержимого. Например, мои почтовые клиенты всегда показывают их в режиме "только текст".

set mailcap_path = '~/.mutt/mailcap'

auto_view text/html

nano ~/.mutt/mailcap

text/html; links2 -dump %s; copiousoutput;

Примечание: У вас должен быть предварительно установлен консольный браузер; в данном случае - links2.

5) Сохранение вложений в указанный каталог:

set attach_save_dir = '~/.mutt/attachments'

6) Хранение паролей к POP/IMAP/SMTP в защищенном хранилище PASS и их подстановка при приеме/отправке сообщений:

Вначале ознакомьтесь с руководством по PASS:

GNUPG/PWGEN/PASS: Генерирование криптостойких паролей и их безопасное хранение

Инициализируйте базу данных PASS. Затем создайте запись в ее корне, связанную с паролем для POP/IMAP/SMTP:

pass add your_name@server.name

(Для справки - см. также субкоманды):

pass insert your_name@server.name

pass your_name@server.name

Отредактируйте muttrc:

ВАЖНО: Следите за правильностью расставления одинарных и двойных кавычек в каждой из строк!

set pop_pass = "`pass show your_name@server.name`"

set smtp_pass = "`pass show your_name@server.name`"

или

set imap_pass = "`pass show your_name@server.name`"

set smtp_pass = "`pass show your_name@server.name`"

Краткая сводка по общеупотребимым командам

Запуск из консоли:

mutt

Главное окно:

q - Выход из программы

d - Удалить

u - Восстановить

s - Сохранить

m - Создать

r - Ответить

g - Всем

? - Помощь

Окно чтения сообщения:

i - Выход из окна

"-" - Вернуться на начало просматриваемого сообщения

"Space" - Листать сообщение вниз. Далее - переход на следующее сообщение

v - Вложения

d - Удалить

r - Ответить

j - Следующий

? - Помощь

Окно составления сообщения:

y - Отправить

q - Прервать

t - To ("Кому")

c - CC ("Копия")

s - Subj ("Заголовок письма")

a - Вложить файл; далее нажмите на "?" (открыть список каталогов)

d - Описание

? - Помощь

Интеграция с Abook и управление почтовыми адресами

Три строки в конфигурационных файлах (см. подраздел "Abook settnigs") настраивают взаимодействие с базой данных Abook. Подробности см. в расширенном руководстве:

Abook: Консольная адресная книга и ее интеграция с почтовым клиентом Mutt

[UPD. 04.04.2024] Дискуссия о защите парольных фраз

В своем письме г-н dikeyOficial справедливо указал мне на наличие возможности защитить пользовательские PASSPHRASE(s) с помощью GNUPG.

Если вкратце, во множестве источников предлагается примерно такой вариант (опишу своими словами):

1. Создать свою связку асимметричных ключей GNUPG, связанную с текущим E-Mail: your_name@server.name (подробнее см. мое руководство в разделе Manuals).

2. Отредактировать muttrc, приведя две строки к следующему состоянию (т.е. исключив из них парольные фразы):

set pop_pass = ''

set smtp_pass = ''

3. Создать текстовый файл и наполнить его следующим содержимым:

nano ~/.mutt/password

set pop_pass = 'YOUR_PASSPHRASE'

set smtp_pass = 'YOUR_PASSPHRASE'

4. Зашифровать файл собственным ключом (и для себя):

gpg -r your_name@server.name -e ~/.mutt/password

где опция "-r" обозначает реципиента, "-e" - субкоманду "зашифровать".

В итоге должен получиться файл password.gpg.

Примечание от Рами: Лично я не стал бы активировать здесь связку ключей, применяемую для шифрования переписки (она не для того создана), а воспользовался бы симметричным(!) шифрованием, т.е. основанным на парольной фразе. Или вообще - использовал бы хранилище PASS (подробное описание см. выше).

5. Уничтожить исходный файл password с помощью команды shred (см. раздел Manuals).

6. Внести в muttrc следующую строку:

source 'gpg -d ~/.mutt/password.gpg |'

где опция "-d" обозначает субкоманду "расшифровать".

ИТОГ:

1) Теперь парольные фразы не хранятся в muttrc в открытом виде;

2) при каждой операции, связанной с получением или отправкой сообщений, будет запрашиваться дополнительная парольная фраза, необходимая для расшифрования файла password.gpg;

3) полученные исходные данные будут передаваться через "трубу"/"пайп" в muttrc.

ЗАКЛЮЧЕНИЕ ОТ РАМИ. Увы, я считаю такой подход неоправданным: не с точки зрения надежности, но с точки зрения общей конструкции. Немножко отстранитесь от идеи и взгляните сами: ведь теперь, чтобы получить или отправить письмо, мы должны помнить и постоянно вводить еще и дополнительную парольную фразу, связанную не(!) с текущим E-mail, но со связкой ключей, обслуживающих ее.

Подобный вариант нелогичен и сложен; по-моему, достаточно оставить поля для парольных фраз пустыми в muttrc и хорошенько ЗАПОМНИТЬ их (вернее - "ее"! как правило, она одна для получения и отправки, т.е. для POP3 + SMTP), чем обременять свою память еще одним паролем... Звучит разумно, нет?

... Хорошо, двинемся дальше. В качестве следующей конструкции, призванной обойти неудобства, связанные с постоянными вводами парольной фразы к password.gpg, на разных сайтах и форумах предлагается дополнительно использовать gpg-agent, который будет удерживать расшифрованное содержимое этого файла. Подробности приводить не буду (краем глаза заметил, что они весьма тяжеловесны), но лишь приведу свой контр-аргумент:

Представьте, что вы "вручную" расшифровываете другой произвольный файл file_name.gpg. Вы вводите парольную фразу, но (такое частенько случается) ошиблись при наборе... Что произойдет далее? Вы пробуете расшифровать файл заново, однако следующего запроса "Введите пароль" уже не возникнет! А почему? Да потому что предыдущий неправильный(!) пароль намертво осел в gpg-agent'e на неопределенное время в N-минут (честно говоря, я не помню, сколько установлено там по умолчанию). И у вас попросту не будет второй попытки, чтобы расшифровать содержимое (нет, компьютер честно примется отрабатывать операцию, но каждый раз станет подставлять в нее сохраненный неправильный пароль). А в особо экстренных случаях - не будет еще и времени, чтобы дождаться сброса неправильного пароля, запомненного gpg-agent'ом.

Поэтому я не стану рекомендовать описанные способы, хотя конечно же подразумеваю, что для кого-то они окажутся полезными. Ибо мой принцип всегда весьма прост: "Тренируйте память! Держите все парольные фразы в собственной голове - это единственное надежное место!" :)

Дополнительно см.:

man mutt_dotlock(1), mutt_pgpring(1), pgpewrap(1), sendmail(1), smail(1), smime_keys(1), curses(3), ncurses(3), mail‐cap(5), maildir(5), mbox(5), mmdf(5), muttrc, abook

The Mutt E-Mail Client

₪ Back to home ₪

🄯 Rami Rosenfeld, 2024. GNU FDL 1.3.