ESMTP身份验证
esmtp的身份验证常见的有LOGIN,PLAIN,CRAM-MD5
这几种认证方式都是使用base64编码来传输,不过编码的内容不同而已
可以发送ehlo命令来获取服务器支持的认证方式:
折叠复制代码
- telnet smdb.vip.sohu.com 25
- 220 mx102 ESMTP ready
- ehlo vip.sohu.com
- 250 AUTH PLAIN LOGIN
sohu目前只支持plain和login方式认证
login方式:分别对userid和password进行base64编码,并分别发送到smtp服务器端
折叠复制代码
- #以login方式验证
- auth login
- #服务器返回要输入Username:
- 334 VXNlcm5hbWU6
- #输入test-1@vip.sohu.com的base64编码后的字符串
- dGVzdC0xQHZpcC5zb2h1LmNvbQ==
- #服务器返回要输入Password:
- 334 UGFzc3dvcmQ6
- #输入密码的base64编码后的串
- MTExMTEx
- #服务器返回验证ok
- 235 2.0.0 OK
plain方式:把userid和password通过空字节连接起来,再编码成base64,一次传递给服务器
即编码过程为:base64(空字节+userid+空字节+pass)
注意:空字节最好用00来表示,而不是,因为如果userid或password以数字开头,使用编码会出现问题
折叠复制代码
- #以plain方式认证
- auth plain
- #服务器返回334
- 334
- #输入base64('00test-1@vip.sohu.com00password')
- AHRlc3QtMUB2aXAuc29odS5jb20AMTExMTEx
- #服务器返回认证成功
- 235 2.0.0 OK
cram-md5方式:首先 服务器提供一个标记server_key
然后客户端用邮箱密码做密钥,以MD5方式加密此标记,生成HMAC=md5(password+server_key)
然后将userid连同HMAC做base64编码发送到服务器,即base64(username+" "+HMAC)
目前,sohu的smtp暂时还不支持cram-md5方式认证