![更新](https://linux22.com/image/1484943/%E6%9B%B4%E6%96%B0.png)
更新
从 Ubuntu 16.04 开始,该插件可以正常工作,并且无需降级如接受的答案中所建议的那样。该问题适用于 Ubuntu 15.04,并且,或许,15.10。
原始帖子
我已经使用 Thunderbird + Enigmail 多年了。我目前在工作电脑(Ubuntu 15.04 64 位,带 Gnome Shell)中使用 Thunderbird 38.5.1、Enigmail 版本 1.9(20160223-1641)和 GPG 2.0.26。
几天前,经过一年多的运行,每当我尝试发送签名或加密的电子邮件时,Enigmail 突然开始出现以下错误:
GnuPG 报告与 gpg-agent(GnuPG 的一个组件)通信时出现错误。
这是系统设置或配置错误,导致 Enigmail 无法正常工作,并且无法自动修复。
我们强烈建议您访问我们的支持网站: https://enigmail.net/faq。
我已浏览常见问题解答页面并尝试了几种方法,但仍无法解决问题。
该pinentry
命令运行良好,并显示pinentry-qt4
窗口(即非基于文本的):
pinentry <<EOT
SETDESC Hello World
CONFIRM
EOT
但是,gpg-agent-connect
命令失败:
gpg-connect-agent <<EOT
heredoc> GETINFO version
heredoc> EOT
ERR 280 not implemented
我尝试按照建议禁用 gnome 密钥环,但同样不起作用。(是的,我确实在中间重启了系统,但我还想像往常一样保持密钥环启用。)我还尝试导出并重新导入我的 Enigmail 设置(即$HOME/.gnupg/
同时重命名为其他名称),但同样不起作用。
gpg-agent
奇怪的是,当我从 shell 手动启动,然后启动 Thunderbird 时,它似乎与 进行通信gpg-agent
,如下所示:
gpg-agent --debug-level expert --use-standard-socket --daemon /bin/sh
gpg-agent[6469]: enabled debug flags: command cache assuan
gpg-agent[6469]: directory `/home/ray/.gnupg' created
gpg-agent[6469]: directory `/home/ray/.gnupg/private-keys-v1.d' created
gpg-agent[6469]: listening on socket `/home/ray/.gnupg/S.gpg-agent'
gpg-agent[6470]: gpg-agent (GnuPG) 2.0.26 started
#
# Thunderbird started at this point
#
$ gpg-agent[6470]: handler 0x558fd8c23cf0 for fd 7 started
gpg-agent[6470]: chan_7 -> OK Pleased to meet you, process 6470
gpg-agent[6470]: chan_6 <- OK Pleased to meet you, process 6470
gpg-agent[6470]: chan_6 -> GETINFO pid
gpg-agent[6470]: chan_7 <- GETINFO pid
gpg-agent[6470]: chan_7 -> D 6470
gpg-agent[6470]: chan_7 -> OK
gpg-agent[6470]: chan_6 <- D 6470
gpg-agent[6470]: chan_6 <- OK
gpg-agent[6470]: chan_6 -> BYE
gpg-agent[6470]: chan_7 <- BYE
gpg-agent[6470]: chan_7 -> OK closing connection
gpg-agent[6470]: handler 0x558fd8c23cf0 for fd 7 terminated
但是,如果我尝试发送签名和/或加密的电子邮件,则看不到任何输出。这仅在启动 Thunderbird 时显示。
另外,我/usr/bin/gpg-agent --daemon
在 Gnome 启动应用程序面板中将该命令添加为启动应用程序,但没有什么区别。
我想我在 2 月 23 日左右应用了常规更新,但直到本周 2 月 24 日系统重启后,问题才显现出来。不幸的是,我不记得更新了哪些软件包,但更新的软件包并不多。(我通常会保持系统更新。)
请注意,这个系统已经运行了好几年,没有出现任何问题,直到大约 2 天前才出现问题。(我也在我家的台式电脑上使用了 4 年多,没有出现任何问题,但我的工作电脑是笔记本电脑,Ubuntu 有时由于未知原因在那里不能很好地工作……)
当我尝试打开收到的加密电子邮件(或已保存的草稿,也已加密)时,我收到有关的相同错误消息gpg-agent
,但在要求我输入私钥密码后,它确实解密了电子邮件消息。
问: 我该如何解决这个阻止我发送签名/加密电子邮件的通信错误?
要认为问题已解决,情况需要恢复正常工作,并且没有错误消息等。
在此先感谢您提供的任何帮助来解决此问题。
gpg-agent
当我写这篇文章时,我注意到终端守护进程发出了以下消息:
# ...from previous output above
gpg-agent[6470]: chan_7 -> OK closing connection
gpg-agent[6470]: handler 0x558fd8c23cf0 for fd 7 terminated
#
# new/unexpected error message from agent
#
gpg-agent[6470]: can't connect my own socket: IPC connect call failed
gpg-agent[6470]: this process is useless - shutting down
gpg-agent[6470]: gpg-agent (GnuPG) 2.0.26 stopped
这是意外出现的,因为我并没有要求 Thunderbird 在此期间做任何特别的事情。
我从 15.04 更新到 15.10 -> 16.04,可以确认 Thunderbird 38.6 + Enigmail 1.9.1 对我来说运行正常。命令的输出也是应该的:
➜ ~ pinentry <<EOT
heredoc> SETDESC Hello World
heredoc> CONFIRM
heredoc> EOT
OK Pleased to meet you
OK
OK
➜ ~ gpg-connect-agent <<EOT
heredoc> GETINFO version
heredoc> EOT
D 2.1.11
OK
答案1
虽然thisthatother 的答案只展示如何在Debian系统上解决,方法是一样的:
降级。
由于 Enigmail 于 2 月 23 日发布了 1.9 版本,问题从那天开始出现,因此仅有的三个解决方案是:
- 等待 Enigmail 解决问题并安装其 1.9.x 更新,并停止使用加密,直到他们提供更新
- 深入研究并自己解决问题(由于对底层软件架构的了解有限,并不是每个人都能做到这一点)
- 降级到 1.8.2,然后等待 Enigmail 解决问题并升级到 1.9.x,以解决 1.9 中出现的错误。
我无法帮助解决第 1 点和第 2 点,但可以解决第 3 点:
- 下载 Enigmail 1.8.2,这是最新的 1.9 之前的版本,没有引入错误
- 通过 Thunderbird 附加组件菜单卸载 Enigmail 1.9
- 在同一菜单中,单击附加组件配置按钮在 Thunderbird 附加组件页面的顶部,搜索文本输入字段左侧
- 重启 Thunderbird
它现在应该可以像更新至 Enigmail 1.9 之前一样工作。
我建议禁用 Enigmail 的自动更新,直到 1.9 中引入的这个错误得到解决。您可以通过单击 Thunderbird 附加组件页面中 Enigmail 扩展描述文本中的“更多”链接来禁用它们。
答案2
非常感谢大家对这个问题的详细意见。
自从我的系统于 2 月 25 日更新到 Enigmail 1.9 以来,我也遇到了类似的问题。我通过卸载 Enigmail 1.9 并切换到 1.8 解决了该问题。
对我来说,这很容易,因为我使用的是 Debian 8,我只需卸载 Enigmail 作为独立插件,然后用 Debian 主 repo 的 Enigmail 版本替换它(一些研究表明,它恰好是版本 1.8.2)。耸耸肩。自从那次改变以来,没有遇到任何问题。我希望这对其他人有用,再次感谢您让我走上解决问题的正确轨道。
答案3
无需降级 enigmail 插件:
- 项目清单
- Ubuntu 16.04
- Thunderbird 45.2.0
- Enigmail 1.9.5
- gpg(GnuPG)1.4.20
在终端中:
killall gpg-agent
export GPG_TTY=$(tty)
gpg-agent --daemon /bin/bash
(--use-standard-socket 已过时)
无需重新启动 Thunderbird。
答案4
我也遇到过同样的问题,Enigmail 在工作了几个月后,每次操作都会突然抛出这个错误信息。禁用 GNOME Keyring 的 GPG 密码代理组件解决了这个问题 - Enigmail 随后使用gpg-agent
带有 pinentry 程序的“原始”密码(而不是 GNOME Keyring 密码提示),一切正常。
我使用默认的 Ubuntu“启动应用程序”程序禁用了 GNOME Keyring GPG 密码组件:
您说您确实尝试过禁用 GNOME Keyring,并且您正在使用 GNOME Shell。也许这没有正常工作?您可以尝试使用与我相同的步骤(启动应用程序/Unity),看看是否有任何变化。
这个问题似乎是由 Enigmail 最近的一次更新引起的(版本 1.9 于 2016 年 2 月 23 日发布),因为在此之前,它可以与 GNOME Keyring 一起使用而不会产生此错误。禁用 GNOME Keyring 可以解决问题(以及时间),这表明Enigmail 错误 #575相关的。