怎样增加smtp身份认证功能
编号:QA003775
建立日期: 2001年1月16日 最后修改日期:2001年8月12日
所属类别:
autumn:
操作系统:Windows9X,win NT
工具:VC++,但实际上与编程语言无关
问题:我曾开发的一个软件产品中有收发邮件的功能.采用smtp和pop3协议实现,已投入使用.现在很多免费邮件增加smtp身份认证功能。软件需要改进.我查过rfc2554协议,但是对AUTH命令的参数意义还是不清楚。问题就是不知道采用smtp协议进行发信的具体协议内容,所以无法进行程序实现。希望能够得到帮助!谢谢!再次深表感谢!
水平: 中级
回答:
经过几天的研究,我找到了一种进行身份验证的方法。具体如下:
1.连接smtp服务器
2.发命令"HELO <host_name>"
3.发命令"AUTH LOGIN",然后服务器会以base64编码(QA004159 "请问base64编码的特性是什么")后的形式提示输入用户名,形式为"334 VXNlcm5hbWU6"
4.以base64编码后的形式输入用户名,如果用户名合法,服务器提示输入口令形式为“334 UGFzc3dvcmQ6”
4.以base64编码后的形式输入口令。如果检验正确,服务器会返回"235 Authentication successful"
问题是smtp服务器可能会有多种身份验证机制,"LOGIN"只是其中一种,这种机制是否通用还不知道;其他机制的身份验证的方法如何进行,还不清楚。虽然有一些进展,但还有很多疑问。
主持人注:上面所使用的方法实际上是263.net所使用的认证方法。这里介绍一种分析SMTP对话的方法。如果你可以使用Outlook Express发信,就可以得到smtp.log文件,分析这个文件就知道它是怎么和SMTP服务器对话的。设置的方法是选择“工具|选项”菜单,在对话框中选择“维护”标签,然后选中“疑难解答”中的“邮件”检查框。这样Outlook就会在发信时生成SMTP.LOG,其位置在Win98的某个目录中,使用文件搜索工具找一下就可以。下面就是一段对话的例子:
Outlook Express 5.00.2615.200
SMTP Log started at 01/16/2001 08:15:48
SMTP: 08:15:57 [rx] 220 smtp.263.net ESMTP
SMTP: 08:15:57 [tx] EHLO LocalHost
SMTP: 08:15:57 [rx] 250-smtp.263.net
SMTP: 08:15:57 [rx] 250-PIPELINING
SMTP: 08:15:57 [rx] 250-SIZE 10240000
SMTP: 08:15:57 [rx] 250-ETRN
SMTP: 08:15:57 [rx] 250-AUTH LOGIN
SMTP: 08:15:57 [rx] 250 8BITMIME
SMTP: 08:15:57 [tx] AUTH LOGIN
SMTP: 08:15:58 [rx] 334 VXNlcm5hbWU6
SMTP: 08:15:58 [tx] YWFhaGho
SMTP: 08:15:58 [rx] 334 UGFzc3dvcmQ6
SMTP: 08:15:58 [tx] 密码略去
SMTP: 08:15:58 [rx] 235 Authentication successful
SMTP: 08:15:58 [tx] MAIL FROM: <aaahhh@263.net>
SMTP: 08:15:58 [rx] 250 Ok
SMTP: 08:15:58 [tx] RCPT TO: <zealsoft@china.com>
SMTP: 08:15:58 [rx] 250 Ok
SMTP: 08:15:58 [tx] DATA
SMTP: 08:15:59 [rx] 354 End data with <CR><LF>.<CR><LF>
SMTP: 08:15:59 [tx]
.
SMTP: 08:15:59 [rx] 250 Ok: queued as D46711C8FEBCC
SMTP: 08:15:59 [tx] QUIT
SMTP: 08:16:00 [rx] 221 Bye
除了LOGIN,还有CRAM-MD5(RFC 2195)和PLAIN模式。可以使用免费的MFC类CSMTPConnection(http://www.naughter.com/smtp.html),它支持所有3种模式。
相关问题:
QA004151 "利用smtp控件的何种方法才能通过smtp身份认证"
此问题由autumn回答。
| |
|
|
| |
|
|