Матт: как безопасно хранить пароль?

52

Мой файл .muttrc выглядит как этот или увидеть ниже проблеск. Я не решаюсь с паролем. Как я должен хранить свой пароль, чтобы использовать его с mutt?

set imap_user = "username@gmail.com"
set imap_pass = "password"

set smtp_url = "smtp://username@smtp.gmail.com:587/"
set smtp_pass = "password"
set from = "username@gmail.com"
set realname = "Your Real Name"
Энтон
источник
4
В сообщении, на которое вы ссылались, я уже писал: «Убедитесь, что ваш ~ / .muttrc не доступен для чтения всем миром; он содержит ваш пароль. (В качестве альтернативы вы можете не указывать их, и Mutt каждый раз будет запрашивать у вас пароль.)» :-)

Ответы:

38

Этот твик должен избавить от вашей проблемы. Используйте gpg как предложено, или

set imap_pass=`getpassword email_id`

где вы используете pwsafe или пароли для получения паролей.

Изменить: Если Mutt построен с поддержкой IMAP (--enable-imap), Mutt должен запросить пароль, если вы не задали его в файле конфигурации. Из руководства:

imap_pass

Тип: строка По умолчанию: ""

Задает пароль для вашей учетной записи IMAP. Если не установлено, Mutt запросит ваш пароль при вызове функции fetch-mail. Предупреждение: вы должны использовать эту опцию, только когда вы находитесь на достаточно защищенной машине, потому что суперпользователь может прочитать ваш muttrc, даже если вы единственный, кто может прочитать файл.

Нагул
источник
9
+1 я должен попросить тебя об этом. Вы должны вводить его только один раз за сеанс.
Дэвид Макинтош
2
Кроме того, если вы работаете muttвнутри tmux, ваша сессия может длиться некоторое время.
Крис У.
Что это за функция getpassword? У меня его нет на моем сервере Ubuntu 14.04.3 LTS (GNU / Linux). Я думаю, что они pwsafeили passwordsя должен их использовать? Я хотел бы войти в свою учетную запись mutt без пароля после входа на сервер, поскольку пароль сервера совпадает с паролем электронной почты.
Лео Леопольд Герц 준영
1
Вы можете использовать pass - passwordstore.org. Этот инструмент можно использовать точно так же, как описано в ответе выше. Пароли хранятся в репозитории git, зашифрованные выбранным ключом GPG.
Якуб Джиндра
28

Создайте файл паролей ~/.mutt/passwords::

set imap_pass="password"
set smtp_pass="password"

Этот файл может быть зашифрован с помощью GPG. Сначала создайте пару открытый / закрытый ключ:

$ gpg --gen-key

Зашифруйте файл паролей:

$ gpg -r your.email@example.com -e ~/.mutt/passwords
$ ls ~/.mutt/passwords*
/home/user/.mutt/passwords   /home/user/.mutt/passwords.gpg
$ shred ~/.mutt/passwords
$ rm ~/.mutt/passwords

Добавьте к вашему muttrc:

source "gpg -d ~/.mutt/passwords.gpg |"

через

Смотрите также запись Mutt Arch Wiki .

DmitrySandalov
источник
Должен ли открытый ключ в файле паролей или сценарий оболочки? Я думаю, что сценарий оболочки должен быть в .muttrc. Я получаю после запуска команды gpg gpg: masi@myuni.fi: skipped: public key not found gpg: /u/77/masi/unix/.mutt/passwords: encryption failed: public key not found. Я сделал, cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/known_hostsно это не проблема. Что я делаю не так?
Лео Леопольд Герц 준영
1
Маси, тебе нужен ключ GPG (или PGP), а не твой открытый ключ SSH. Больше информации о ключах GPG здесь: fedoraproject.org/wiki/Creating_GPG_Keys и здесь: help.ubuntu.com/community/GnuPrivacyGuardHowto
ДмитрийСандалов
1
Это идеальное решение. Вот мой конфигурационный файл для всех, кому нужно для справки: github.com/shubhamchaudhary/dotfiles/blob/master/home/.muttrc
Shubham Chaudhary
Я подумал, что это хорошее решение, но затем я набрал :set imap_passслово mutt и показал свой пароль в открытом виде. Можно ли этого избежать? Когда Mutt запрашивает сам пароль imap, он не показывает пароль caleartext при наборе: set ...
eli
Вы создали свой закрытый ключ GPG без пароля? Если нет gpg -d, потребуется пароль. Зачем использовать пароль для шифрования пароля, если целью является вход без пароля ...
sdaffa23fdsf
3

Почему бы не использовать менеджер кошелька, как gnome-keyringили kwalletmanagerс secret-tool?

apt install gnome-keyring secret-tool

. [Нео] Muttrc:

source 'echo "$( pw=$( secret-tool lookup user <USERNAME> domain <DOMAIN> ); echo set imap_pass=\"$pw\"; echo set smtp_pass=\"$pw\" )" |'

Сохраните ваш imap и smtp passwd:

secret-tool store --label=imap user <USERNAME> domain <DOMAIN>

Вы можете выбрать свой собственный лейбл, если хотите.

Посмотрите ваши кредиты с помощью оболочки:

secret-tool lookup user <USERNAME> domain <DOMAIN>

Запустите свою [neo] Mutt, подключитесь и войдите в свой imap srv. Наслаждаться.

Это решение имеет преимущества перед gpg-ориентированными: оно хорошо интегрируется, и нет никаких дополнительных файлов.

Бонус: Использование libsecretили непосредственно gnome-keyringкак и git credential-helperв мерзавце с libsecret и мерзавцем с гномом-брелоком . Оба помощника нуждаются в ручной компиляции. Да, это немного неловко, но работает отлично.

Gen.Stack
источник
1

Основываясь на комментарии ShreevatsaR, я хочу подчеркнуть безопасность. Если пароль в $ HOME / .muttrc, сделайте

chmod go-r $HOME/.muttrc

Тем не менее, я думаю, что это еще не безопасный вариант. Вы должны использовать какой-то метод, который использует соль для хранения паролей.

Лео Леопольд Герц 준영
источник
0

Вы можете прочитать пароль из незашифрованного файла.

Например, введите пароль в ~/secrets/mail_pass:

the_secret_mail_password

затем

chmod 600 ~/secrets/mail_pass`

В вашем Muttrc:

# Read the password from a file and set it
set smtp_pass=`cat ~/secrets/mail_pass`
Матиас Браун
источник
Это просто намного проще chmod 600 ~/.muttrc.
dr01
Если вы сохраните свои пароли, ~/.muttrcвы не сможете их опубликовать, поместив их в GitLab и т. Д. Кроме того, если вы используете OfflineIMAP, он также нуждается в пароле и может также прочитать его из внешнего файла паролей.
Матиас Браун