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

[入库:2005年9月21日] [更新:2007年3月24日]

本文简介:

 tutux 回复于:2003-05-28 08:00:19 [quote:5fa50b0871="aaa2520"]呵呵 不错,有没有POP3 协议的?[/quote:5fa50b0871]     

唉~~~没得救~~~这些公开的常用的协议怎么会没有?自己搜索一下不就得了?

 居士 回复于:2003-07-02 13:59:07 好东西,正在消化中~~~

 flytod 回复于:2003-07-02 15:22:08 SMTP协议中如何区分连接的是客户端还是另一个SMTP服务器??

 gadfly 回复于:2003-07-02 17:39:44 为什么要区分?从smtp服务本身来说,只要使用smtp服务的就是客户端。

所以smtp服务器,既是服务器,也是客户端。

 startdd 回复于:2003-07-02 22:24:06 透彻!

 netkiller 回复于:2003-07-02 22:58:12 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 就可得到

 flytod 回复于:2003-07-03 10:35:22 如果是客户端的话,它要进行auth login 会话,就象netkiller 给出的例子一样,那如果一个smtp服务器连接上来,肯定是不会进行auth login会话的。那么就不会允许这个smtp服务器来发信。

可以看看我的这个帖子:是我抓的客户端连接smtp服务器A的auth login会话,还有smtp服务器B连接A的会话(没有auth login).
http://www.chinaunix.net/forum/viewtopic.php?t=104457

BTW: 我在sun的qmail的auth又不起作用了,TNND。难道又要铲掉重来。

 netkiller 回复于:2003-07-03 11:27:59 目前主流SMTP认证是cram-md5
我没有做成功。
CRAM-MD5 LOGIN
base64(user)
base64(md5(passwd))
不过我没做成功:(     
base64(user  md5(passwd))
了没成功:(

 gadfly 回复于:2003-07-03 11:42:18 ??
你查过cram-md5确实是这样的么?

md5难道还可逆?我觉得不会这样吧?

找找cram-md5的协议看看吧

 netkiller 回复于:2003-07-03 11:57:04 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

 gadfly 回复于:2003-07-03 15:14:45 faint?

这怎么会一样呢?你也可以用脑子想一想。

一个是明文的用户名。当然可以用对比密码加密后的方法了。
你看看你自己怎么写的?用户名都是加过密的(md5),服务器怎么知道是哪个用户?

 flytod 回复于:2003-07-03 15:26:17 to:netkiller
你给的这个例子是客户端软件连接一个auth smtp服务器的例子。你能给我讲讲某个smtp服务器连接一个需要auth smtp服务器之间的应答情况吗?我实在是弄不清楚了。

 netkiller 回复于:2003-07-03 15:35:12 你先看看 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.

注:仔细看

本文关键:SMTP协议原始命令码和工作原理[转]-一转再转
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top