歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 如何 Mutt 郵件客戶端中使用密文密碼

如何 Mutt 郵件客戶端中使用密文密碼

日期:2017/2/28 13:54:38   编辑:Linux教程

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) 和郵箱地址([email protected])。最後,輸入一個密碼來保護你的私鑰。

生成一個 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 [email protected] -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. setfrom="[email protected]"
  2. set realname ="Your Name"
  3. set smtp_url ="smtp://[email protected]:587/"
  4. set imap_user ="[email protected]"
  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. $ sudoapt-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 的安全技巧,歡迎分享它。

Copyright © Linux教程網 All Rights Reserved