imapsync-身份验证失败

imapsync-身份验证失败

我已经部署许多Google Apps 帐户,并多次使用 imapsync 将帐户迁移到 Google Apps。

然而这次,无论我怎么尝试,imapsync 都拒绝工作,声称我的凭据不正确——我已经一次又一次地检查过它们,它们 100% 正确。

在从源代码构建的 Ubuntu 12 上,我的命令是:

imapsync --host1 myserver.com --user1 [email protected] --password1 mypassword1 -ssl1 --host2 imap.gmail.com --user2 [email protected] --password2 mypassword2 -ssl2 -authmech2 PLAIN

该命令的完整输出:

get options: [1]
PID is 21316
$RCSfile: imapsync,v $ $Revision: 1.592 $ $Date:
With perl 5.14.2 Mail::IMAPClient  3.35
Command line used:
/usr/bin/imapsync --debug --host1 myserver.com --user1 [email protected] --password1 mypassword1 -ssl1 --host2 imap.gmail.com --user2 [email protected] --password2 mypassword2 -ssl2 -authmech2 PLAIN
Temp directory is /tmp
PID file is /tmp/imapsync.pid
Modules version list:
Mail::IMAPClient     3.35
IO::Socket           1.32
IO::Socket::IP       ?
IO::Socket::INET     1.31
IO::Socket::SSL      1.53
Net::SSLeay          1.42
Digest::MD5          2.51
Digest::HMAC_MD5     1.01
Digest::HMAC_SHA1    1.03
Term::ReadKey        2.30
Authen::NTLM         1.09
File::Spec           3.33
Time::HiRes          1.972101
URI::Escape          3.31
Data::Uniqid         0.12

IMAPClient 3.35
Info: turned ON syncinternaldates, will set the internal dates (arrival dates) on host2 same as host1.
Info: will try to use LOGIN authentication on host1
Info: will try to use PLAIN authentication on host2
Info: imap connexions timeout is 120 seconds
Host1: IMAP server [SERVER1] port [993] user [USER1]
Host2: IMAP server [imap.gmail.com] port [993] user [USER2]
Host1: * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
Host1: SERVER1 says it has CAPABILITY for AUTHENTICATE LOGIN
Host1: success login on [SERVER1] with user [USER1] auth [LOGIN]
Host2: * OK Gimap ready for requests from MY-VPS 
Host2: imap.gmail.com says it has CAPABILITY for AUTHENTICATE PLAIN
Failure: error login on [imap.gmail.com] with user [USER2] auth [PLAIN]: 2 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)

-authmech2 LOGIN我也尝试过,结果返回:

Host2: imap.gmail.com says it has NO CAPABILITY for AUTHENTICATE LOGIN
Failure: error login on [imap.gmail.com] with user [[email protected]] auth [LOGIN]: 2 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)

如果有人能阐明这一点,我将不胜感激。

答案1

仔细检查凭证,确保检查准确率达到 200%。按照 Janne 的建议,通过 Thunderbird 或 Outlook 等标准客户端或手动检查凭证(见下文)。

注意密码中特殊字符的引用问题,使用单引号括住“密码”和用户“值”。

imapsync ... --password2 'secret' 

另一点是,--authmech2 PLAIN 或 --authmech2 LOGIN 现在对 Gmail 毫无用处,因为 imapsync 已经默认使用它们。如果登录使用传统电子邮件客户端,则肯定意味着值中存在字符/引号问题。您可以使用 ncat 或 telnet-ssl 检查手动登录,如本例所示(要输入的客户端部分是“a LOGIN ...”然后是“b LOGOUT”):

ncat --ssl -C  imap.gmail.com 993
* OK Gimap ready for requests from 78.196.254.58 q1mb175739668wix
a LOGIN "[email protected]" "secret" 
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST... ESEARCH
a OK [email protected] Gilles Lamiral authenticated (Success)
b LOGOUT
* BYE LOGOUT Requested
b OK 73 good day (Success)

如果密码中含有奇怪的字符,也请尝试更改密码。

答案2

遇到同样的问题后,我打开了“访问不太安全的应用程序”,问题解决了。

https://www.google.com/settings/security/lesssecureapps?pli=1

我使用 Larch 时也犯了同样的错误。

答案3

我的(工作)imapsync 设置--authmech2 LOGIN用于 GMail 端的连接。我记得在命令行上传递密码时遇到了问题,因此我改用从文件中读取密码:--passfile2 /path/to/imapsecret2

我的 Fedora 20 打包的 imapsync 报告以下模块:

Mail::IMAPClient     3.35
IO::Socket           1.36
IO::Socket::IP       0.30
IO::Socket::INET     1.33
IO::Socket::SSL      1.955
Net::SSLeay          1.55
Digest::MD5          2.53
Digest::HMAC_MD5     1.01
Digest::HMAC_SHA1    1.03
Term::ReadKey        2.30
Authen::NTLM         1.09
File::Spec           3.40
Time::HiRes          1.9726
URI::Escape          3.31
Data::Uniqid         0.12

它向 GMail 报告连接情况如下:

Host2: imap.googlemail.com says it has NO CAPABILITY for AUTHENTICATE LOGIN
Host2: success login on [imap.googlemail.com] with user [user@googleappsdomain] auth [LOGIN]

答案4

对于那些拥有正常密码的人来说,这是正确的语法

imapsync --host1 mail.yourname.com --user1 [email protected] \
  --password1 '$4Password' --ssl1 \
  --host2 mail.vlc3.com --user2 [email protected] \
  --password2 '$4EPassword' --ssl2

诀窍是将您的密码包装起来,''因为我们现在有特殊字符。

相关内容