如何在 Mutt 邮件客户端中使用密文密码

Mutt 是一个 Linux/UNIX 终端环境下的开源的邮件客户端。Mutt 以及 Alpine 在 Linux 命令行爱好者中有着最忠诚的追随者,这不是没有原因的。想一下你所期待邮件客户端应有的功能,Mutt 拥有:多协议支持(例如,POP3、IMAP 和 SMTP),S/MIME 和 PGP/GPG 集成,会话线索,颜色标记,可定制宏/快捷键,等等。另外,基于命令行的 Mutt 相比粗重的基于浏览器的邮件客户端(如:Gmail,Ymail)或图形用户界面的邮件客户端(如:Thunderbird,MS Outlook)而言,是一个使用电子邮件的轻量级替代品。

当你想使用 Mutt 通过公司的 SMTP/IMAP 服务器访问或发送邮件,或取代网页邮件服务,可能所关心的一个问题是如何保护您的邮件凭据(如:SMTP/IMAP 密码),它们存储在一个纯文本 Mutt 配置文件(~/.muttrc)中。

对于这些人对安全的担忧,确实有一个容易的方法来加密 Mutt 配置文件*,以防止这种风险。在这个教程中,我描述了如何加密 Mutt 敏感配置,比如使用 GnuPG(GPG)加密 SMTP/IMAP 密码,GPG 是一个开源的 OpenPGP 实现。

第一步 (可选):创建 GPG 密钥

因为我们将要使用 GPG 加密 Mutt 配置文件,如果你没有 GPG 密钥,第一步就是创建一个(公钥/私钥对)。如果有,请忽略这步。

创建一个新 GPG 密钥,输入下面命令:

  1. $ gpg --gen-key

选择密钥类型(RSA),密钥长度(2048 bits),和过期时间(0 代表不过期)。当出现用户 ID 提示时,输入关联到该公钥/私钥对的名字(Dan Nanni) 和邮箱地址(myemail@email.com)。最后,输入一个密码来保护你的私钥。

生成一个 GPG 密钥需要大量的随机字节来构成熵,所以在生成密钥期间确保在你的系统上执行一些随机行为(如:敲打键盘,移动鼠标或者读写磁盘)。根据密钥长度,生成 GPG 密钥要花几分钟或更多时间。

第二步:加密 Mutt 敏感配置

下一步,在 ~/.mutt 目录创建一个新的文本文件,然后把一些你想隐藏的 Mutt 敏感配置放进去。这个例子里,我指定了 SMTP/IMAP 密码。

  1. $ mkdir ~/.mutt
  2. $ vi ~/.mutt/password

  1. set smtp_pass="XXXXXXX"
  2. set imap_pass="XXXXXXX"

现在通过 GPG 使用你的公钥加密这个文件如下:

  1. $ gpg -r myemail@email.com -e ~/.mutt/password

这将创建 ~/.mutt/password.gpg,这是一个原始文件的 GPG 加密版本。

然后删除 ~/.mutt/password,只保留 GPG 加密版本。

第三步:创建完整 Mutt 配置文件

现在你已经在一个单独的文件放置了加密的 Mutt 敏感配置,你可以在 ~/.muttrc 指定其余的 Mutt 配置。然后增加下面这行在 ~/.muttrc 末尾。

  1. source "gpg -d ~/.mutt/password.gpg |"

当你启动 Mutt 时,这行将解密 ~/.mutt/password.gpg ,然后将解密内容应用到你的 Mutt 配置中。

下面展示一个完整 Mutt 配置例子,这可以让你通过 Mutt 访问 Gmail,而没有暴露你的 SMTP/IMAP 密码。用你的 Gmail ID 替代下面的 yourgmailaccount,此外你也需要在你的 Goolgle 账户设置中启用“支持不太安全的应用访问”。

  1. set from = "yourgmailaccount@gmail.com"
  2. set realname = "Your Name"
  3. set smtp_url = "smtp://yourgmailaccount@smtp.gmail.com:587/"
  4. set imap_user = "yourgmailaccount@gmail.com"
  5. set folder = "imaps://imap.gmail.com:993"
  6. set spoolfile = "+INBOX"
  7. set postponed = "+[Google Mail]/Drafts"
  8. set trash = "+[Google Mail]/Trash"
  9. set header_cache =~/.mutt/cache/headers
  10. set message_cachedir =~/.mutt/cache/bodies
  11. set certificate_file =~/.mutt/certificates
  12. set move = no
  13. set imap_keepalive = 900
  14. # encrypted IMAP/SMTP passwords
  15. source "gpg -d ~/.mutt/password.gpg |"

第四步(可选):配置 GPG 代理

这时候,你将可以使用加密了IMAP/SMTP 密码的 Mutt。然而,每次你运行 Mutt,你都要先被提示输入一个 GPG 密码来使用你的私钥解密 IMAP/SMTP 密码。

如果你想避免这样的 GPG 密码提示,你可以部署一个 gpg-agent。它以后台守护进程方式运行,gpg-agent 可以安全地缓存你的 GPG 密码,无需手工干预,gpg 可以自动从 gpg-agent 获得你的 GPG 密码。如果你正在使用 Linux 桌面,你可以配置使用一些等同于 gpg-agent 的特定的桌面软件,例如,GNOME 桌面的 gnome-keyring-daemon。

你可以在基于 Debian 系统安装 gpg-agent:

  1. $ sudo apt-get install gpg-agent

gpg-agent 在基于 Red Hat 的系统上是预装好的。

现在增加下面这些到你的 .bashrc 文件中。

  1. envfile="$HOME/.gnupg/gpg-agent.env"
  2. if [[ -e "$envfile" ]] && kill -0 $(grep GPG_AGENT_INFO "$envfile" | cut -d: -f 2) 2>/dev/null; then
  3. eval "$(cat "$envfile")"
  4. else
  5. eval "$(gpg-agent --daemon --allow-preset-passphrase --write-env-file "$envfile")"
  6. fi
  7. export GPG_AGENT_INFO

重载 .bashrc,或简单的登出然后重新登录。

  1. $ source ~/.bashrc

现在确认 GPGAGENTINFO 环境变量已经设置妥当。

  1. $ echo $GPG_AGENT_INFO
  2. /tmp/gpg-0SKJw8/S.gpg-agent:942:1

并且,当你输入 gpg-agent 命令时,你应该看到下面的信息。

  1. $ gpg-agent
  2. gpg-agent: gpg-agent running and available

一旦 gpg-agent 启动运行,它将会在第一次提示你输入密码时缓存你的 GPG 密码。随后你多次运行 Mutt ,都不会被提示要 GPG 密码(gpg-agent 一直开着,缓存就不会过期)。

结论

在这个指导里,我提供一个使用 GnuPG 加密如 SMTP/IMAP 密码这样的 Mutt 敏感配置的方法。注意,如果你想在 Mutt 上使用 GnuPG 来加密或签名你的邮件,你可以参考官方指南关于 GPG 与 Mutt 结合的部分。

如果你知道任何使用 Mutt 的安全技巧,欢迎分享它。

本文来自云栖社区合作伙伴“Linux中国”
原文发布时间为:2013-04-02.

如何在 Mutt 邮件客户端中使用密文密码相关推荐

  1. C#获取邮件客户端保存的邮箱密码

    有时候邮件客户端记录了邮箱密码,但自己却忘记了,此时可以使用C#建立一个临时的"邮件服务器",截取密码: IPEndPoint ipEndPoint = new IPEndPoin ...

  2. linux mutt接收邮件,Linux下安装使用Mutt邮件客户端并配置邮件警报功能

    0.在正式安装Mutt之前先检查一下两个安全组件. OPENSSL: 复制代码 代码如下: openssl version -a #检查安装及版本信息 SASL(系统一般已经自带): 复制代码 代码如 ...

  3. Microsoft Outlook 2010 邮件客户端 中设置常用邮箱的方法

    原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处  .作者信息和本声明.否则将追究法律责任. http://blog.csdn.net/love254443233/article/de ...

  4. 一些中文邮件客户端的比较

    一些中文邮件客户端的比较 Horin|贺勤         Email: horin153@msn.com         Blog: http://blog.csdn.net/horin153/ 最 ...

  5. 在 Linux 中安装最新的 Thunderbird 邮件客户端

    摘要: Thunderbird是一个开源自由的跨平台的基于 web 的电子邮件.新闻和聊天客户端应用程序,其旨在用于管理多个电子邮件帐户和新闻源. 在 2016 年 12 月 28 日,Mozilla ...

  6. linux exchange邮件客户端,Linux中使用Hiri邮件客户端访问Exchange帐户

    大家都知道 Microsoft Exchange 是企业级邮件市场占有率第一的产品,早已成为 Top 500 企业首选的邮件服务器和客户端标准配备.随着 Office 365 服务在全球的铺开,Exc ...

  7. node.js api接口_如何在Node.js API客户端中正常处理故障

    node.js api接口 by Roger Jin 罗杰·金(Roger Jin) 如何在Node.js API客户端中正常处理故障 (How to gracefully handle failur ...

  8. os x怎么新建html文件格式,如何在Mac OS X中为邮件制作HTML签名 | MOS86

    许多用户喜欢将签名设置为自动包含在他们的出站电子邮件中,而对于喜欢有风格化和有点交互式电子邮件签名的用户,theyll想要创建一个称为HTML签名的内容.HTML签名允许不同的文字样式,如粗体,斜体, ...

  9. linux邮件thunderbird,在 Linux 中安装新版的Thunderbird 邮件客户端

    导读 Thunderbird是一个开源自由的跨平台的基于 web 的电子邮件.新闻和聊天客户端应用程序,其旨在用于管理多个电子邮件帐户和新闻源.Thunderbird 目前最新的版本是2016 年 1 ...

最新文章

  1. 微信小程序实战之百思不得姐精简版
  2. Pytorch gpu加速方法
  3. 七天学会ASP.NET MVC(七)——创建单页应用
  4. 云迹科技:站在酒店场景服务机器人的风口
  5. 浅谈ATP检查中的“确认可用部分数量”(二)
  6. simple2.py
  7. cf1562E. Rescue Niwen!
  8. PCM信号是什么信号?
  9. [0716] Jsoi B Rsss
  10. C++ Primer Plus学习(十一)——类和动态内存分配
  11. 系统学习机器学习之线性判别式(三)--广义线性模型(Generalized Linear Models)
  12. 破解,汉化,越狱,解锁,为什么中国的大神总是“昙花一现”?
  13. 【FPGA】:ip核-----CIC滤波器
  14. windows聚焦壁纸不更新_win10系统聚焦壁纸不更新怎么办?
  15. CorAl – Are the point clouds Correctly Aligned?
  16. 同样是VPS,为什么RAKsmart更受欢迎
  17. Box plot (箱形图) 中 quartile (四分位数)原理,及python_matplotlib中Q1和Q3定义的不同
  18. activeMQ启动失败报错illegal character in hostname at index
  19. IntelliJ IDEA设置类注释和方法注释模板
  20. 可供软件测试练习的在线网站、被测系统——整理中

热门文章

  1. 手工模拟实现 Docker 容器网络!
  2. Spring Boot 中引入 MyBatisPlus 的常规流程
  3. 数据量大了一定要分表,分库分表 Sharding-JDBC 入门与项目实战
  4. SQL 查询总是先执行SELECT语句吗?你们都错了!
  5. 贝叶斯机器学习:经典模型与代码实现!
  6. 有bug!用Pytorch Lightning重构代码速度更慢,修复后速度倍增
  7. 字节跳动大佬的Python自学笔记.pdf
  8. Fine-tune之后的NLP新范式:Prompt越来越火,CMU华人博士后出了篇综述文章
  9. 清华本硕男,月入5W征婚引群嘲“普通却自信”,本人终于回应了!
  10. 知乎热议:28岁郭宇期权过亿,彪悍从字节退休,旅居日本开温泉酒店