Mutt:如何安全存储密码?


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每次都会提示您输入密码。”) :-)

Answers:


38

调整应摆脱您的问题。按照建议使用gpg,或

set imap_pass=`getpassword email_id`

使用pwsafe密码来获取密码的位置。

编辑:如果mutt是使用IMAP支持构建的(--enable-imap),则mutt 如果未在配置文件中设置密码,则会提示您输入密码。从手册中:

imap_pass

类型:字符串默认值:“”

指定您的IMAP帐户的密码。如果未设置,则Mutt将在您调用提取邮件功能时提示您输入密码。警告:仅当您在相当安全的计算机上时,才应使用此选项,因为即使您是唯一可以读取文件的人,超级用户也可以读取您的muttrc。


9
+1杂种狗问你。每个会话只需输入一次。
David Mackintosh,2009年

2
此外,如果运行mutttmux,您的会话可能会持续一段时间。
克里斯·W

这是什么功能getpassword?我的Ubuntu 14.04.3 LTS(GNU / Linux)服务器中没有此文件。我认为它们是pwsafepasswords但是我应该使用它们吗?登录服务器后,我想不用密码登录mutt -account,因为服务器的密码与电子邮件的密码相同。
莱奥波尔德·赫兹(LéoLéopoldHertz),2015年

1
您可以使用通- 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 |"

通过

另请参阅Arch Wiki的Mutt条目。


公钥应该放在密码文件还是shell脚本中?我认为shell脚本应该在.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但这似乎不是问题。我做错了什么?
莱奥波尔德·赫兹(LéoLéopoldHertz),2015年

1
Masi,您需要具有GPG(或PGP)密钥,而不是SSH公共密钥。有关GPG密钥的更多信息,请访问:fedoraproject.org/wiki/Creating_GPG_Keys以及此处:help.ubuntu.com/community/GnuPrivacyGuardHowto
DmitrySandalov 2015年

1
这是一个完美的解决方案。这是我的配置文件,适用于需要参考的任何人:github.com/shubhamchaudhary/dotfiles/blob/master/home/.muttrc
Shubham Chaudhary

我以为这是一个很好的解决方案,但是后来我输入:set imap_pass了mutt并以明文形式显示了密码。可以避免吗?当mutt要求输入imap密码本身时,键入:set ...时不显示caleartext密码
eli

您是否创建了没有密码的GPG私钥?如果没有gpg -d,则需要密码。当目标是无密码登录时,为什么要使用密码来加密密码...
sdaffa23fdsf

3

为什么不使用gnome-keyringkwalletmanager搭配钱包管理器secret-tool

apt install gnome-keyring secret-tool

。[neo] 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的解决方案相比,此解决方案具有优势:集成度很好,并且没有多余的文件可放置。

奖励:与libsecretgit与gnome-keyring一起git中使用libsecret或直接gnome-keyring用作git。两个助手都需要手动编译。是的,这有点尴尬,但是效果很好。git credential-helper


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,它也需要密码,并且也可以从外部密码文件中读取密码。
Matthias Braun
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.