2012-03-26 27 views
2
管理電子郵件密碼

我的主要問題現在的問題是,在gnus.el我得到幾個郵件來源地喜歡設置:Emacs的:在Gnus的

(setq mail-sources 
    '((pop :server "server.org" 
    :port 995 
    :user "[email protected]" 
    :password "pAssWorD") 

我不想密碼存儲在一個純文本文件像那樣。我想要的是:

  1. 將Gnus郵件源的密碼存儲在具有嚴格權限的單獨文件中,並使用gpg加密。
  2. 當使用Emacs輸入一次密碼並在獲取郵件時自動使用這些密碼。

什麼是最慣用/有效的方式來做到這一點?

我也對Emacs中的密碼管理的一般想法感興趣,不管是將它們存儲在加密文件的某個地方,還是讓它們管理特定的Emacs包。

Emacs的版本:24.0.97

+1

你可以把它們放到'〜/ .authinfo'文件並加密。 gnus只會首次詢問你的密碼來解密它。 – kindahero 2012-03-26 16:00:44

+3

@ kindahero:要自動加密/解密它,您可以將其重命名爲'.authinfo.gpg'。 – Daimrod 2012-03-26 16:14:32

回答

1

我不能讓與POP3 .authinfo文件的工作,所以我跟着Keeping your secrets secret博文(感謝phils的鏈接)。我在我的加載路徑中創建了三個文件。 secrets.el:

(load-library "secrets.el.gpg") 
(provide 'secrets) 

secrets.el.gpg:

(setq password-alist 
     '((:mbox1 . "pAsSwOrD") 
     (:mbox2 . "correct horse battery staple") 
     (:mbox3 . "qwfpgj"))) 

mail.el:

(defun load-mail-passwords() 
    "Load passwords for mail sources from secrets.el.gpg" 
    (require 'secrets) 
    (setq mail-sources 
    `((pop :server "pop.server.org" 
      :port 995 
      :user "[email protected]" 
      :password ,(rest (assoc :mbox1 password-alist))) 
    )) 
    (setq smtpmail-auth-credentials `(("smtp.server.org" "465" "[email protected]" 
            ,(rest (assoc :mbox1 password-alist)))))) 
(add-hook 'gnus-load-hook 'load-mail-passwords) 

,我也把(load "~/.emacs.d/mail.el")我的初始化文件,因爲某種原因,我~/.emacs.d/加載路徑中的文件夾未被自動加載。

反引號就像撇號(引號),但它允許一些表達式使用逗號不加引號。 (rest (assoc :keyword alist))組合用於獲取關聯列表中的虛線對的第二部分。

+0

只是關於這個問題。在運行'load-mail-passwords'後,如果你評估了'C-h v password-alist',它是否會返回密碼?我用這種方法看到的問題是密碼最終存儲在變量中。 – 2012-09-12 16:11:27

+0

確實如此,它們最終變成了一個變量。我只想到2種補救措施。 1:'(setq password-alist nil)'不需要密碼。 2:創建一個特殊的表單,如'(with-password ...)',它臨時使用密碼。你怎麼看? – 2012-09-13 05:12:30