我已经设置了 dovecot 服务器,目前正在使用离线 imap 将我的 gmail 同步到在本地主机上运行的 dovecot imap。
目前我正在使用纯文本身份验证,但这导致每个邮件客户端都需要询问并记住我的用户名密码才能从本地主机访问邮件。
有没有办法设置 dovecot,这样当我尝试从 gnus 从 localhost 登录时,它不会要求我进行身份验证?或者让它询问 pam/gnomekeyring/任何东西而不询问我?
附言:目前没有计划允许非本地主机访问 dovecot 服务器。甚至本地网络也不行。
答案1
我想到三种选择:
首先,如果您在同一台机器上,您可以直接使用底层邮件存储,而无需通过 IMAP。不过,根据所使用的存储和客户端,这可能会导致将更改反映回 IMAP 时出现一些问题。
其次,利用Dovecot的机制 预认证会话,连同
inetd
或 ucspi-tcptcpserver
如果您需要在 TCP 端口上监听您选择的客户端。最后,您可以设置 Kerberos 票证身份验证并通过 GSSAPI 将其与 Dovecot 一起使用。但这对于您的场景来说可能有点过头了。
答案2
这来自@grawity 的评论另一个答案,虽然现在已经过时了,但它让我找到了我需要的解决方案。它值得一个自己的答案。这个答案到密切相关的问题提供了缺失的环节。
预认证会话可通过 Dovecot 命令获取。Dovecot 的最新版本(>= 2.0)提供了命令imap
,在 Debian 和 Ubuntu 上位于/usr/lib/dovecot/imap
。在旧版本中,您需要运行dovecot --exec-mail imap
(位于/usr/sbin
)。
对于我来说mutt
,所需的.muttrc 设置因此
tunnel=/usr/lib/dovecot/imap
答案3
现在 (2.2.32+) Dovecot 允许您创建一个 passdb 定义,该定义在设置中有选项allow_real_nets=127.0.0.1/32
和。这将允许任何密码,但只能来自指定的子网(即 localhost)。您仍然可以使用常规 passdb 定义来确保邮箱正确存在,但使用 override_fields 或类似设置这两个选项来限制它。nopassword
override_fields