首頁 > 軟體

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

2020-06-16 17:46:32

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. setfrom="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. $ 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 的安全技巧,歡迎分享它。

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-02/128069.htm


IT145.com E-mail:sddin#qq.com