为什么需要在smtp中使用base64

时间:2009-11-06 18:21:13

标签: authentication smtp base64

使用SMTP-AUTH时,为什么需要在base64中对登录名和密码进行编码。以下是我的SMTP会话示例

220 ALAN.CP.com Microsoft ESMTP MAIL Service 
ehlo 
250 ALAN.CP.com Hello [10.10.1.1] more... 
verbs 
250 OK 
auth login 
334 VXNlcm5hbWU6 
<base64 encoded password>
334 UGFzc3dvcmQ6 
<base64 encoded password>
235 2.7.0 Authentication successful. 

1 个答案:

答案 0 :(得分:2)

基本SMTP根本不需要身份验证。 SMTP-AUTH在RFC 4954中定义,但它没有定义您在此处'auth login'使用的特定auth类型。确实如此。

  

服务器实现必须实现一个不允许任何明文密码机制的配置

我找不到'AUTH LOGIN'的规格,虽然谷歌搜索表明它最有可能是微软的交换功能。进一步的Google搜索表示您的示例是直接从here复制的。

如果你问为什么特定的例子是base64编码的,那是因为微软对RFC禁止明文的愚蠢解释。如果您想知道为什么其他SMTP身份验证机制使用base64,那么因为他们发送的数据通常实际上是某种二进制数据(如共享密钥的MD5哈希值和服务器提供的令牌)。如果这不能解答您的问题,请修改您的问题以包含更多详细信息。