更新时间:2021-07-18 12:23
邮件头是电子邮件三大组成部分之一,是正文之前的一行标头,主要包含了邮件的传输信息,例如发件人、收件人、日期和主题。
虽然在讨论中尽量有意避免如何伪造一封邮件的讨论,但是在讨论中的内容可能被恶意读者用作创建伪造邮件的基础。因为要在文章中举例说明,因此在文章中有若干虚构的域名和随意分配的IP地址作为示例使用。这些域名和IP都是任意选择和伪造的,和Internet上真实的域名和IP没有任何关系。
二、Email的传输过程
这部分包含一个简单的对一个电子邮件生命周期的分析。这对于理解邮件头能为你提供哪些信息是非常重要的背景信息。
从表面上看来邮件似乎是直接从发送者机器传递到接收者地址,但通常情况下事情并不是这样。一个典型的电子邮件在其生命周期中至少要经过四台计算机。
这是因为大多数企业或组织都有一个被称为“邮件服务器”专用服务器来处理电子邮件,而这一般并不是用户阅读邮件的计算机。对于ISP来说,用户从家里面的计算机拨号接入ISP网络,这里将用户家中的计算机称为客户机,而将ISP专门处理邮件的计算机称为邮件服务器。当一个用户发送邮件,他一般是在自己的计算机上编辑邮件,然后将邮件发送到ISP的邮件服务器上。客户机就此已经完成了自己的工作,而后面的工作则由ISP的邮件服务器来完成。首先ISP邮件服务器查找接收者指定的邮件服务器的IP地址,然后将邮件发送给该目的服务器。现在邮件则存储在接收者邮件服务器上等待接收者收取。当接收者从接受邮件服务器取得发送给他的邮件到自己的PC机以后,通常该邮件将被删除。
这部分内容相对其它部分来说具有更多原理性内容,主要讨论邮件是如何从一点传输到另外一点的细节。你不需要理解每一句话,但是熟悉这方面的内容有助于在邮件传输出现奇怪现象时弄明白问题所在。由于垃圾电子邮件发送者常常故意制造一些奇怪的情况以掩饰自己的身份,因此能理解这些奇怪的现象对对付这些家伙是非常有用的。
为了在网络上传输数据,计算机网络协议使用了称为端口的访问入口,你可以将端口看做是一个通道,通过它计算机可以监听网络通信以提供服务。为了同时监听多个通信,计算机需要有使用端口号码标识多个不同的端口以区别这些通信。而和电子邮件传输相关的端口是25。
DATA命令指示开始实际的邮件内容传输。DATA命令后输入的任何内容都被看做是邮件的一部分。而格式并没有任何限制。以一个英文单词加冒号开始的行一般被邮件程序看做是邮件头。以英文句号符号(.)开始的行被认为是邮件内容结束。
QUIT命令终止连接。
SMTP协议规范定义在RFC 821中。
非正常情况
上面的例子有些过于简单。上面的例子有一个假设前提:两个组织的邮件服务器相互之间能直接访问,而不需要经过代理、防火墙等安全设备。这在当前Internet环境下情况往往是这样的。但由于安全对于某些组织来说非常重要,而且网络或组织可能变得越来越庞大,情况就不那么简单了。对于具有代理型防火墙系统的邮件传输来说,区别就在于在邮件的头中多了一次转发过程的记录,也就是邮件首先从发送者邮件服务器发送到防火墙上,然后再从防火墙发送到目的邮件服务器。
四、邮件中继
出现邮件中继是由于历史的原因,使用邮件中继是有它的好处的。到八十年代末期,很多网络中的计算机都不是直接通信来传输邮件。而是通过邮件路由来传递邮件,通过邮件路由服务器一步一步地进行邮件传输。这样做是非常麻烦的,发送者往往需要手工指定一封邮件需要经过哪些邮件路由服务器,比如需要从San Francisco发送一封邮件到New York,则需要在信封中添加如下内容:
San Francisco,Sacramento,Reno,Salt Lake City,Rock Springs,Laramie,North Platte,Lincoln,Omaha,Des Moines,Cedar Rapids,Dubuque,Rockford,Chicago,Gary,Elkhart,Fort Wayne,Toledo,Cleveland,Erie,Elmira,Williamsport,Newark,New York City,Greenwich Village,#12 Desolation Row,Apt. #35,R.A. Zimmermann
如果从邮局工作人员的角度来考虑,这种模型是非常有用的。在Gary的邮局只需要知道如何和临近的邮局Chicago和Elkhart通信,而无需消耗资源计算如何将邮件发送到New York(这时候就很清楚为什么这种模式对于邮件发送者来说非常糟糕,为什么这种方法被抛弃了)。但是这就是邮件被传输的过程。因此服务器具有这样的中继的能力在那时是很重要的。