当我尝试使用 mutt 登录 gmail 时,它会闪烁一个带有 url 的快速 Webalert,例如accounts.gmail.com 之类的。对我来说太快了,无法查看或复制它。然后就提示登录失败。
然后我收到一封来自 Gmail 的电子邮件,内容如下:
Google Account: sign-in attempt blocked
Hi Adam,
We recently blocked a sign-in attempt to your Google Account [[email protected]].
Sign in attempt details
Date & Time: Wednesday, December 10, 2014 11:55:21 PM UTC
Location: Utah, USA
If this wasn't you
Please review your Account Activity page at https://security.google.com/settings/security/activity to see if anything looks suspicious. Whoever tried to sign in to your account knows your password; we recommend that you change it right away.
If this was you
You can switch to an app made by Google such as Gmail to access your account (recommended) or change your settings at https://www.google.com/settings/security/lesssecureapps so that your account is no longer protected by modern security standards.
To learn more, see https://support.google.com/accounts/answer/6010255.
Sincerely,
The Google Accounts team
我可以转到该链接并启用“访问不太安全的应用程序”,然后我就可以正常登录,但是有没有办法使用 mutt 登录而不必在 Gmail 中打开这个不太安全的选项?
更新:
我在 mac os x Yosemite 上 当我运行 mutt -v 时,在编译选项中,它确实包含 +USE_SSL_OPENSSL 我没有使用谷歌两步验证 我没有使用应用程序特定密码 以下是我的消息当我尝试登录时得到:
Reading imaps://imap.gmail.com:993/INBOX...
Looking up imap.gmail.com...
Connecting to imap.gmail.com...
TLSv1.2 connection using TLSv1/SSLv3 (ECDHE-RSA-AES128-GCM-SHA256)
Logging in...
[WEBALERT https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsm0P......
我找到了这个答案,但它不起作用:https://stackoverflow.com/a/25209735/1665818
答案1
我终于通过启用 Google 两步验证并为 mutt 使用应用程序专用密码来使其正常工作。
更多详情:
我在我的 Google 帐户上启用了两步验证,这意味着当我登录 Google 时,我必须通过文本或 Google 身份验证器应用程序输入 PIN 码。
然后我必须为 mutt 获取一个应用程序专用的密码。您可以生成应用程序专用密码这里。
然后我使用该应用程序特定的密码来登录 mutt,而不是我的普通密码。然后我就不必输入密码了。
答案2
作为评论之一说它看起来像Google 已开始阻止默认使用 IMAP/SMTP PLAIN 身份验证的应用程序你可以阅读官方博客说明Google强烈建议IMAP/SMTP协议用户切换到OAuth 2.0(由于 XMPP 也已列出,我想知道(较旧的?)OSX iChat 是否会在某个时候停止与 GTalk 配合使用)。此外,还有一些有趣的对这一变化的理由的猜测。在撰写本文时,轶事调查表明:
- 谷歌企业帐户惯于看到这个问题 - 他们继续自动接受基于密码的 IMAP/SMTP 登录,并且目前没有设置拒绝它们(不会给所有使用“旧”密码登录程序的付费用户带来麻烦吧?)。
- 非“企业”Google 帐户现在拥有设置允许或禁止基于密码的 IMAP/SMTP 登录(“不太安全的应用程序”)。存在多年的 Google 帐户可能会自动选择禁止,但这可能不会发生在每个人身上。
我尝试首先使用网络浏览器登录 GMail,然后使用同一台计算机上的 mutt。我试过了更改 muttrc 设置以确保始终使用 TLS。我已经尝试过解锁验证码链接。所有这些都未能让我的 mutt 使用“不允许安全性较低的应用程序”GMail 帐户(但可能会解决不同情况下的登录问题)。您的选择是:
- 切换您的 Google 帐户以要求两步验证并创建应用程序专用密码对于杂种狗。
- 切换到 mutt 1.11.0 或更高版本配置 OAUTHBEARER 支持。
- 使用允许安全性较低的应用程序连接的 Google 帐户设置。
- 移至另一个执行 OAuth 的 IMAP 客户端。
(谁投票赞成我原来的回复 - 谢谢)
答案3
从 aharris88 的描述来看,Gmail 阻止了通过 mutt 访问他的帐户,因为 mutt 在与 Gmail 服务器通信时使用不安全的连接。这意味着您的用户名和密码将以未加密的形式通过本地网络和互联网发送;一般来说,这是一个非常糟糕的主意,并且应该尽可能避免。 Gmail 试图通过拒绝 mutt 的连接尝试来阻止这种危险的配置。更改您的 Google 帐户设置以允许“访问不太安全的应用程序”会覆盖此行为,从而允许 mutt 以不安全的方式进行连接。
一种解决方案是将 mutt 配置为在连接到 Gmail 时使用 TLS 安全性。这样,您的凭据就不会以纯文本形式发送,因此您可以在 Google 帐户设置中禁用“访问不太安全的应用程序”。
要使用 TLS,请编辑您的 mutt 配置文件(~/.muttrc)类似于以下内容:
set realname = 'Your Full Name'
set imap_user = '[email protected]'
set smtp_url = "smtp://[email protected]:587/"
set spoolfile = imaps://imap.gmail.com:993/INBOX
set folder = "imaps://imap.gmail.com:993"
set record="+[Gmail]/Sent Mail"
set postponed="+[Gmail]/Drafts"
set header_cache="~/.mutt/cache/headers"
set message_cachedir="~/.mutt/cache/bodies"
set certificate_file=~/.mutt/certificates
# These two lines appear to be needed on some Linux distros, like Arch Linux
set ssl_starttls = yes
set ssl_force_tls = yes
另外,通过执行以下命令创建 mutt 将用于缓存消息信息和存储证书的目录和文件:
mkdir -p ~/.mutt/cache/bodies
mkdir ~/.mutt/cache/headers
touch ~/.mutt/certificates
mutt 配置文件的第 3-5 行告诉 mutt 使用安全端口和协议连接到 Gmail。请务必填写'你的全名'在第 1 行,并替换“你的帐户”在第 2 行和第 3 行中。最后两行将强制 mutt 安全连接,并且在某些 Linux 发行版上可能需要。其余的配置是一个非常常见的设置,可以让 mutt 与 Gmail 很好地配合。
您还需要在系统上安装 OpenSSL(或类似的东西),尽管大多数系统可能已经安装了它。
现在,开始吧。系统会提示您输入 Gmail 帐户密码。系统可能还会提示您接受 Gmail 服务器向您发送的证书;继续吧,这样做吧。如果您看到收件箱,则说明一切都已准备就绪!
如果仍然无法连接,则可能有其他原因阻止 mutt 安全连接。尝试执行:mutt -v
显示 mutt 的版本和编译选项。在输出的“编译选项”部分中,查找+USE_SSL
类似+USE_SSL_OPENSSL
或 的内容+USE_SSL_GNUTLS
。如果这些都没有出现,旁边带有加号,则 mutt 编译后无法连接 TLS,您需要重新编译它。
另一种可能性是您的系统上尚未安装 OpenSSL(或等效的 SSL 软件包)。安装方法取决于您使用的 Linux/Unix 发行版。尝试搜索特定于您的发行版的指南。您可能还需要安装包含证书颁发机构的附加包。
一旦你开始工作,如果你不想每次运行 mutt 时都输入你的 Gmail 密码,你可以将它直接存储在〜/.muttrc文件中添加如下行:
set imap_pass = 'yourpassword'
但请注意,这会带来安全风险,特别是当您与其他用户共享系统时。为了降低这种风险,您可以〜/.muttrc只有您可以通过执行以下命令读取:
chmod 600 ~/.muttrc
这可以防止系统上运行的非 root 用户和服务读取存储在 ~/.muttrc 文件中的密码。