由于“gnutls_handshake:收到了长度意外的 TLS 数据包”,Mutt 无法正常工作。错误

Vin*_*mar 6 email mutt

我期待在 Ubuntu 12.04 中使用 mutt 会遇到很多问题。这是我的 .muttrc:http : //paste.ubuntu.com/1273585/

这是我尝试连接时遇到的错误。 gnutls_handshake: A TLS packet with unexpected length was received.

有没有人知道解决此错误的解决方法。如果是这样,请尽快提出建议。

提前谢谢了!

这里的调试是我的 mutt -v 的输出:http : //paste.ubuntu.com/1273590/

小智 7

不幸的是,这可能是 Mutt 及其使用的问题gnutls,从Mutt 邮件列表中可以看出,但是有一些解决方案。

值得删除头文件,.mutt/cache/headers因为它们有时会导致问题。我还注意到,在你.muttrc你没有一条mailboxes线。我使用 gmailMutt并在我的中有以下内容.muttrc(尽管您的可能有所不同):

mailboxes +INBOX +archive +sent +drafts +spam +trash
Run Code Online (Sandbox Code Playgroud)

我提到这一点是因为在Launchpad 上讨论了这个错误,有人提到只指定正确的邮箱解决了他的问题。

将您的.muttrc与我的一般进行比较并没有发现其他差异,Mutt并且 gmail 使用几乎相同的设置为我工作。


但是,如果这些建议无法解决您的问题,有可能建立Mutt从源代码,并确保您构建它openssl的支持,这样你就可以使用openssl,而不是gnutls。我注意到在你的第二个 Pastebin 中,你的 Mutt 确实是用 构建的gnutls,正如你的调试所揭示的:

-USE_SSL_OPENSSL  +USE_SSL_GNUTLS
Run Code Online (Sandbox Code Playgroud)

这里的-意思是没有那个属性,+意思是有那个属性。

所以,在我们开始构建之前,清除当前安装的mutt

sudo apt-get purge mutt
Run Code Online (Sandbox Code Playgroud)

然后获取依赖项

sudo apt-get build-dep mutt
Run Code Online (Sandbox Code Playgroud)

build-dep在这里使用是很好的,因为mutt(在撰写本文时)的最新版本不需要任何比使用build-dep.

您还需要确保输入:

sudo apt-get install openssl libsasl2-modules libssl-dev libssl1.0.0
Run Code Online (Sandbox Code Playgroud)

现在从官方网站(在撰写本文时为 1.5.21)下载最新的源代码,然后验证相应的 gpg 签名,并 cd在下载的文件中解压源代码

tar xzvf mutt-1.5.21.tar.gz 
Run Code Online (Sandbox Code Playgroud)

然后,通过这些额外的选项来configure(我们需要包括其他的选项,以及ssl作为imapsmtp支持,其他的事情不是默认编译):

./configure --enable-pop --enable-imap --enable-smtp --with-ssl --enable-hcache --with-gss --with-sasl --enable-debug --enable-gpgme
Run Code Online (Sandbox Code Playgroud)

然后继续构建然后安装程序

make 
sudo make install or sudo checkinstall
Run Code Online (Sandbox Code Playgroud)

构建只需要几分钟,它应该允许您Mutt再次使用。在运行新程序之前清除头缓存可能是一个好主意(正如我在上面详细说明的那样)。它将自动使用 ssl,因为现在没有内置 tls 支持。

新编译程序的截图(显示一些较旧的非个人电子邮件):

在此处输入图片说明