Emacs:在Gnus中管理电子邮件密码

3

我现在的主要问题是,在gnus.el中,我设置了几个邮件源,如下所示:

(setq mail-sources
  '((pop :server "server.org"
     :port 995
     :user "user@server.org"
     :password "pAssWorD")

我不想像那样将密码存储在明文文件中,我想要的是:

  1. 将Gnus邮件源的密码存储在一个单独的文件中,该文件具有严格的权限,并使用gpg加密。
  2. 在使用Emacs时仅输入一次密码短语,并在获取邮件时自动使用这些密码。

最通俗/高效的方法是什么?

我也对在Emacs中进行密码管理的任何通用方法感兴趣,无论是仅将它们存储在加密文件中还是为特定的Emacs包进行管理。

Emacs版本:24.0.97


1
你可以将它们放在 ~/.authinfo 文件中并加密。gnus 只会在第一次询问您的密码以解密它。 - kindahero
3
要自动加密/解密它,您只需将其重命名为.authinfo.gpg即可。 - Daimrod
1个回答

1

我无法让.authinfo文件在POP3中工作,所以我遵循了保持您的秘密秘密博客文章(感谢phils提供的链接)。我在我的load-path中创建了三个文件。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 "user@server.org"
           :password ,(rest (assoc :mbox1 password-alist)))
      ))
  (setq smtpmail-auth-credentials `(("smtp.server.org" "465" "user@server.org"
                                     ,(rest (assoc :mbox1 password-alist))))))
(add-hook 'gnus-load-hook 'load-mail-passwords)

我还在我的初始化文件中加入了(load "~/.emacs.d/mail.el"),因为由于某些原因,我的~/.emacs.d/文件夹没有被自动加载到load-path中。

反引号类似于撇号(引用符),但它允许使用逗号取消引用一些表达式。 (rest (assoc :keyword alist))组合是为了获取关联列表中点对的第二部分。


关于这个问题,我有一个疑问。在运行load-mail-passwords之后,如果你评估C-h v password-alist,它会返回密码吗?我看到这种方法的问题是密码最终存储在变量中。 - Jonathan Leech-Pepin
没错,它们最终会被存储在一个变量中。我只想到两种解决方法。1:在密码不再需要时使用(setq password-alist nil)。2:创建一个特殊的表单,如(with-password ...),临时使用密码。你觉得呢? - Mirzhan Irkegulov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接