使用加密密码连接到gmail(使用imap和javamail)

时间:2011-03-03 16:37:48

标签: email gmail imap javamail

我正在尝试使用简单的java程序(like this one)连接到gmail。但我的问题是:

出于安全原因,有没有办法用加密密码而不是真实密码来做到这一点!!像我们在java-Oracle db中做的那样?

1 个答案:

答案 0 :(得分:4)

默认情况下,IMAP的唯一身份验证机制是the LOGIN command,它采用未加密的用户名和密码。您可以在其上添加加密层,方法是通过IMAP连接或通过STARTTLS命令启动TLS层,但仍需要客户端知道明文密码。

服务器还可以选择通过the AUTHENTICATE command提供可以调用的SASL身份验证方法。服务器在响应CAPABILITY命令时通告它支持哪些SASL机制。例如,如果服务器包含“AUTH=PLAIN”功能,则客户端可以通过PLAIN IMAP命令使用AUTHENTICATE PLAIN SASL身份验证方法。

Gmail仅支持一种SASL身份验证机制XOAUTH

C: 1 capability
S: * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA XLIST CHILDREN XYZZY
      SASL-IR AUTH=XOAUTH
S: 1 OK Thats all she wrote! dv32if2169247ibb.17

XOAUTH是使用OAuth的非标准SASL身份验证机制。 (领先的'X'意味着它没有标准化。)Google发布了a document defining the XOAUTH SASL mechanism。他们还提供了google-mail-xoauth-tools package,其中包含示例代码,说明如何通过XOAUTH将Gmail与JavaMail配合使用。