免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: tutux
打印 上一主题 下一主题

[Mail] SMTP协议原始命令码和工作原理[转]-一转再转 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2003-07-02 22:58 |显示全部楼层

SMTP协议原始命令码和工作原理[转]-一转再转

C: EHLO dbc.mtview.ca.us
c:AUTH LOGIN
BASE64 后的用户名 <cr>;
BASE64 后的密码 <cr>;
C: MAIL FROM:<mrose@dbc.mtview.ca.us>;
C: RCPT TO:<nsb@thumper.bellcore.com>;
C: RCPT TO:<galvin@tis.com>;
C: DATA
S: 250 sender <mrose@dbc.mtview.ca.us>; OK
S: 550 remote mail to <nsb@thumper.bellore.com>; not allowed
S: 550 remote mail to <galvin@tis.com>; not allowed
S: 354 传输邮件内容,并以一个只有”.”的行结束邮件
C: .
C: QUIT

这里是有auth login认证的例子。。
POP,IMAP。。。。。
去网上查rfc 就可得到

论坛徽章:
0
2 [报告]
发表于 2003-07-03 11:27 |显示全部楼层

SMTP协议原始命令码和工作原理[转]-一转再转

目前主流SMTP认证是cram-md5
我没有做成功。
CRAM-MD5 LOGIN
base64(user)
base64(md5(passwd))
不过我没做成功:(     
base64(user  md5(passwd))
了没成功:(

论坛徽章:
0
3 [报告]
发表于 2003-07-03 11:57 |显示全部楼层

SMTP协议原始命令码和工作原理[转]-一转再转

to: gadfly
你先看看SMTP认证原理。

cram-md4 rfc 我看过了。。E文不太好。看的马马糊糊。。
xxxx login
是为了不让其它用户listen 得到你的密码。和 实现没有用户发不了邮件。
你可以装一个tcp抓包工具。抓一下看看。。用户的所有过程全可以看看。。
包括auth login
base64
base64
你可以debase64() 可以看看用户密码。。
cram-md5 就安全多了。。

注。认证不是原get user and pass 与 auth login 对比。。
你可以用脑想想。。
你的邮件用户是放在ldap中。他是crypt or md5的。。但你们auth是明文的。为什么能认证成功呢?:)
但smtp认证时。auth login都可以通过。。
说明:
smtp -->;auth login -->;enbase64(user and pass)   ===>;MTA  debase64(crypt(user) )比对 <== ldap < -- crypt user

论坛徽章:
0
4 [报告]
发表于 2003-07-03 15:35 |显示全部楼层

SMTP协议原始命令码和工作原理[转]-一转再转

你先看看 rfc2554.txt 在说。。
用户密码的确被md5.后在认证。

     Examples:
         S: 220 smtp.example.com ESMTP server ready
         C: EHLO jgm.example.com
         S: 250-smtp.example.com
         S: 250 AUTH CRAM-MD5 DIGEST-MD5
         C: AUTH FOOBAR
         S: 504 Unrecognized authentication type.
         C: AUTH CRAM-MD5
         S: 334
         PENCeUxFREJoU0NnbmhNWitOMjNGNndAZWx3b29kLmlubm9zb2Z0LmNvbT4=
         C: ZnJlZCA5ZTk1YWVlMDljNDBhZjJiODRhMGMyYjNiYmFlNzg2ZQ==
         S: 235 Authentication successful.

注:仔细看
         C: AUTH CRAM-MD5
         S: 334        PENCeUxFREJoU0NnbmhNWitOMjNGNndAZWx3b29kLmlubm9zb2Z0LmNvbT4=
出这东东表。服务已经准备好。可以认证
         C: ZnJlZCA5ZTk1YWVlMDljNDBhZjJiODRhMGMyYjNiYmFlNzg2ZQ==
用户 <空格>;  md5(密码) 发给服务器。。
         S: 235 Authentication successful.  成功了。。

我将 ZnJlZCA5ZTk1YWVlMDljNDBhZjJiODRhMGMyYjNiYmFlNzg2ZQ==
debase64后得出
fred 9e95aee09c40af2b84a0c2b3bbae786e
fred用户,后面是密码。。
不信你自己看。。

我没有测试过我是不会说的。。因为这样会误导其它人。。

论坛徽章:
0
5 [报告]
发表于 2003-07-03 16:02 |显示全部楼层

SMTP协议原始命令码和工作原理[转]-一转再转

rfc里是
base64(user md5(pass))
但我用了。不通

后来我又多次试验也没通。。
如:
base64(md5(user))
base64(md5(pass))
不行
base64(user)
base64(md5(user))
也不行。。

我在怀疑。是不是smtp不支持。。我就的是别人的qmail
163.com不支持。cram-md5

论坛徽章:
0
6 [报告]
发表于 2003-07-03 16:16 |显示全部楼层

SMTP协议原始命令码和工作原理[转]-一转再转

to:flytod
smtp <==握手 --->; 投递 ==>; smtp

应该是由MAILER-DAEMON 来完成的吧。
mailq可以看到队列。

投递是不用认证的。。就象。
你写一封信,要填地址,邮编。(相当于SMTP认让。如果不写地址邮局是不给你发的。。)--->;深圳的邮电局 ---将信或other 交给-->; 北京邮局-->;用户手里。

你可在UNIX like下用mail -s test xxx@xxx.com </etc/passwd
就可以发邮件。但不用认证。

所以你可以用第三个SMTP server 用拔号IP发拉圾邮。:)它只提供SMTP ===>; ISP SMTP。它没有收的功能。只能发。。

以上只供参考。我说的也不一定就准确。大家还要自己查资料。

论坛徽章:
0
7 [报告]
发表于 2003-07-03 16:28 |显示全部楼层

SMTP协议原始命令码和工作原理[转]-一转再转

如果大家对这个些感兴趣。
可以玩玩socket 编程。。
不要认为SOCKET很难。。说白了。就是对讲机。
police:呼叫,0101,over
0101: 明白,请讲.over
这就是握手,也就是helo过程。
police:这边有小偷,over
0101:明白,地址,over
pollice:
地址:深南中路,华强北,SEG广场,\n
楼层:四楼 \n
位置:xxxx柜台 \n
. \n
over
0101:明白,over
quit

如果深入学习。会涉及到多线程,线程间同步/通信,挺好玩的。。
当你学会SMTP,POP,其它也是同样实现的。。:)     

http://cvsweb.9812.net
news Module
这是一个新闻组client程序,是socet写的。。大家可以看看。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP