在分析和总结电子邮件系统的安全性之前,先来模拟一次邮件收发过程。SMTP协议传递的数据都是人可读的文本数据,因此可以使用Telnet来仿真和观察SMTP协议的握手过程(假设邮件系统服务器IF,是192.168.100.100).
Telnet 192.168.100.100 25, 25是TCP/IP协议给SHTP定义的端口号
<<<220 smtp.my.corn ESHTP Service (SMTP server) ready at日期、时间+0800
>>>helo haha.com
<<<250 satp.my.com Hello haha.com ([192.168.100.50]). pleased to meet you
>>>mail from: abc@abc.com
<<<250 abc@abc.com... Sender OK
>>>rcpt to: realname.my.com
<<<250 realname@my.com... Recipient OK
>>>data
<<<354 Enter message,end with"." on a line by itself
>>>Reply-to: ccc@ccc.com
>>>From: aaa@aaa.com
>>>To:bb@bbb.com
>>>Subjects: testest
>>>
>>>This is a Test Email.
>>>.
>>>This is a Test Email.
>>>.
<<<250 Message accepted for delivery
>>>quit
<<<221 smtp.my.corn SMTP Service closing transmission channel
这样就用Telnet直接向smtp.my.com送人了一封给realname用户的电子邮件。收到的这封电子邮件的源文件如下:
Received, from haha.com ([192.168.100.50])
by smtp.my.com (SMTP server)
with SMTP id 2004062314152297-16 576 ;
Wed,23 Jun 2004 14:15:22 +0800
Reply-to: ccc@ccc.com
From: aaa@aaa.com
To: bbb@bbb.com
Subject:testest
X-MIMETrack: Itemize by SMTP Server on Mail/my( )at 2004-06-23 14:17:10,
Serialize by POP3 Server on Mail/my() at 2004-06-23 14:18:45
Serialize complete at 2004-06-23 14:18:45
Date: Wed,23 Jun 2004 14:17:10+0800
Message-ID: <OF39FF5AC9.A74F14E2-ON48256EBC.00228835@my.com>
This is a Test Email.
从上面的模拟过程可以看出,该电子邮件在邮件头中声称邮件来自aaa@aaa.com,要发给bbb@bbb.com;而在SMTP握手中声称使用计算机haha.com,邮件来自abc@abc.com。要发给realname@my.com(这是真正收到该邮件的用户)。邮件头的说法和SMTP握手中的说法完全不同,而当用户(realname@my. com)收到此邮件时,他所能看到的只是邮件头中所声称的内容和发送该邮件所声称的计算机名和IP地址。可以看出,要使用户realname收到这封邮件,除了SMTP握手中rcpt to必须是真实的以外,其他所有东西都可以伪造,From:和To:的内容都可以不写。尤其不幸的是:为了返回错误提示邮件,SMTP协议甚至允许mail from:后面是空白。
上面data后的内容是真正的邮件,data之前的内容是SMTP握手(或称信封)。用户收到的邮件己没有信封,但SMTP服务器可能会根据信封内容在data的信头部分增加Received数据,以保存一些信封的内容。
在邮件客户端,用户将看到邮件来自aaa@aaa.com而回复时,自动将ccc@ccc.com作为目的地址。
上述邮件模拟发送过程中,只有收件人地址是真实的;收到的邮件中,只有最后一个发件IP地址是真实的(前面如果还有IP地址,也可能是伪造的)。
本文由:行业新闻于(2012-04-17)发表了关于邮件系统中模拟smtp协议收发邮件的文章 。如转载请注明出处:http://www.cdcy-mail.com
如果您对此感兴趣,可以通过以下联系方式与我们联系: