热情软件屋

 

怎样增加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回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio