我已经部署许多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
诀窍是将您的密码包装起来,''
因为我们现在有特殊字符。