2012-03-26 26 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