转自:http://www.chinalinuxpub.com/
1. Email系统的基本原理
[1]internet地址
(1)标准的internet地址
所有Internet的地址通用形式为:
userid(用户标识)@domain(域名)
例:qinghua0000@sohu.com
harley@fuzzball.ucsb.edu
(2)域名与子域
用户标识不是唯一的,
一般,术语“gateway”(网关)
(3)最高级域
一般有两种形式的最高级域:一般称之为机构域,
域 类型
com 商业机构 (全称:commercialorganization)
edu 教育机构 (全称:educationalinstitution)
gov 政府部门 (全称:government)
int 国际性机构 (全称:internationalorganization)
mil 军队 (全称:military)
net 网络机构 (全称:networhimgorganization)
org 非盈利机构 (全称:non-profitorganization)
表一、最高级域机构名属性对照表
域 国家
at 奥地利 (全称:Austria)
au 澳大利亚 (全称:Australia)
ca 加拿大 (全称:Canada)
ch 瑞士 (全称:Switzerland"
cn 中国 (全称:China)
de 德国 (全称:Genmark"Deutschland")
dk 丹麦 (全称:Denmark)
es 西班牙 (全称:Spain"Espana")
fr 法国 (全称:Fance)
gr 希腊 (全称:Greece)
ie 爱尔兰共和国 (全称:Republic of Zreland)
jp 日本 (全称:Japan)
nz 新西兰 (全称:New zealand)
uk 英国 (全称:United Kingdow)
us 美国 (全称:United States)
(4)伪Internet地址
有许多机构希望与Internet相连接,
(5)IP地址与 host命令
可以在使用正规地址的任何地方使用IP地址。
如果要测试 DNS,可以使用host命令。有以下两种格式:
host standard-address
host IP-address
如果你从一个标准地址入手:
host ucsd.edu
DNS将显示IP地址:
host 128.54.16.1
反之如果你从一个IP地址入手,DNS将显示标准地址。
只有Internet主机才有IP地址(仿真终端是没有的)。
如果指定的地址是未与Internet直接连接的计算机的。
host not found
host 命令并不适用于所有的计算机。如果你的系统没有host,
(6)UUCP
所有Unix系统都有一个叫做UUCP的内置联网系统。
UUCP的功能不及TCP/IP强。例如,
它提供了一种经济的方式在计算机之间远距离传送邮件。但是,
(7)UUCP地址和Bang路径
建立一个由名字依次排列组成的地址,名字之间用!符号分开。
mailbeta!gamma!delta!murray
在Unix术语中,!符号的专门术语名字之一是bang。因此,
(8)简化的UUCP地址
为了使得UUCP获取地址方便,
因此,有时可能看见一种使用UUCP的最高级域的地址。例如,
albert@gendeau.uucp
当使用这样一个地址时,就等于向邮件路由软件发出了一个信号,
[2]INTERNET邮件系统
(1)intrenet电子邮件系统基础
<1> 传送受理程序
邮件系统是可输送各类信息的综合服务系统:像文献、印刷品、
SMTP,表示简易邮件传送协议(
在大多数系统中,传送受理程序在“后台”中运行,
每一个Unix系统都有各种隐放在“后台”
<2>电子邮件系统接口(Interface)
a. 用户邮件程序: 做为一个用户,你不会直接与你系统中的传送受理程序发生联系;
b.Unix基础邮件程序
通用的有ELM(全屏) 、PINE(菜单驱动)、MH(文件操作者)、MUSH (Zmail)、RMAIL(
C.邮件信头编写
标准格式的邮件是由两部分组成:“信头”和“主体”。
下面是一个样本文件。信头格式在操作系统中也许有变动,
Fromrick@tsi.com WedMar3114:47:021993(From+地址+
Received:fromhub.ucsb.edu by engineering.ucsb.edu
id AA15594toharley: Wed, 31Mar9313:19: 25PST
Received:from fuzzball(fuzzball.ucsb.edu)byh
id AA11868
Sendmail4.1/UCSB2.0sun
Wed.3lNar9313:23:58SPST for harley@cs.ucsb.edu
Received:by FUZZBALL(5.57/UCSB-V2)
id AA07200:Wed,31Mar9313:17:40PST
Received:fromtsi.combyucsd.edu
Send mail 5.67/UCSD-2.2 sunvia SMTP
Wed.31 Mar 9313:23:520800 for harley@fuzzball.ucsb.edu
Received:bysdcc12.UCSD.EDU(4.
id AA25582 to harley@fuzzball.ucsb.edu;
Wed.31 Mar 9313:23:51PST
Date:Wed.31 Mar 9313:23:51PST
From:rick@tsi.com(RickStout)
MessageId:9303311840.AA067ll@
X.Mailer:MailUser's Shell(7.1.27/11/90)
To:harley@fuzball.ucsb.edu
Subject:this is the subject
Cc:ad die@nipper.com kim@nipper.com
Status:Ro
Harley:I have setup an appoint ment for next Thursday afternoon.
PIease let me know if you can attend.
...Rick
来源: rick@tsi.com1993年3月31日星期三14点47
接收: from hub.ucsb.edu by engineering.ucsb.edu
id AA15594 to harley:93年3月31日星期三13:19:25PST
接收: from fuzzball(fuzzball.ucsb.edu)by hub.ucsb.edu
id AA11868
传送邮件4.1/UCSB-2.Osun
93年3月31日早期三13:23:58PST到harley@
接收: 由fuzzball(5.57/UCSB-v2)
id AA07200; 93年3月31日星期三,时间13:17:40PST
接收:来自tsi.com by ucsd.edu;idAA03169
传送邮件通过SMTP5.67/UCSD-2.2sun
93年3月31日星期三时间13:25:520800到harl
接收:由sdcc12.UCSD.EDU(4.1/
发送id AA25582至harley@fuzzball.ucsb.
93年3月31日星期三;13:23:51PST
日期:93年3月31日星湖三13:23:51PST
来源: rick@tsi.com(Rick Stout)
文件标识符:93O3311840.AA06711@tsi
X-邮件者: Mail User's Shell(7.1.27/11/90)
至: harley@fuzzball.ucsb.edu
标题:具体题目
副本(Cc): addie@nipper.com kim@nipper.com
状态:RO
Harley:在下星期四下午,我安排了一次会见,
Rick
以上例子说明,在信头中的第一行总是单词“ From”,该行表明发信人的地址。在我们这个例子中,文件是从
d.用MIME传送二进制数据(
为了收发二进制数据,
[3]基本的网络协议
(1)SMTP
下图显示了SMTP的基本模型。
图一、 SMTP模型
邮件传输过程的下一步是传输RCPT命令以标识报文的目的端,
第三步是发送DATA命令。
(1.1)地址段格式
发送方SMTP使用了一个标准的送地址和接收地址格式,
local-part@domain-name
因此SMTP名字遵从了域名系统(DNS)的概念,
Jones@beta.aus.edu
其中本地用户名为Jones,beta.aus.edu是Jon
² 一个直接的连接(use@host)
² 邮件接收方位于一台非SMTP主机,通过一个邮件网关接收邮件(
² 多台主机间的应答(@host-b@host-c@hostd)
(2)POP3
首先,P O P 3服务器启动P O P 3服务,并监听110端口。当客户机要仅用P O P 3服务时,它先与 POP3服务器建立一条TCP连接。若连接成功建立,
每个POP3会话总是处于一系列的状态变化中。
(2.1)POP3的基本命令
² USER
这个命令以用户的帐号名称作为参数。
² PASS
这个命令以用户的口令作为参数,
² STAT
该命令无参数,仅用于“命令交互状态”。
获取当前用户邮件总数和邮件总大小。
C: STAT
S: +OK 2320
² LIST
该命令可以没有参数也可以有一个参数,该参数代表邮件的序
号,但该序号不能是已删除邮件。
该命令仅用于“命令交互状态”。
C: LIST
S: +OK 2 messages( 320 octets)
S: 1 120
S: 2 200
S: .
......
C: LIST 2
S: +OK 2 200
......
C: LIST 3
S: -ERR no such mesage, only 2 message in maildrop.
² RETR
该命令必须带有一个邮件序号,该邮件序号不能是已删除邮件。
该命令仅用于“命令交互状态”。
若POP3服务器返回一个成功响应,则随后的响应属于多行响应。
C: RETR 1
S: +OK 120 octets
S: <>
C: RETR 5
S: -ERR no such message.
² DELE
该命令必须带一个邮件序号参数。仅用于“命令交互状态”
POP3服务器把该邮件标志为“已删除”,之后,
C: DELE 1
S: +OK message 1 deleted
......
C: DELE 1
S: -ERR message 2 already deleted
² NOOP
该命令不待参数,实际上也不做任何事情。仅用于“命令交互状态”
C: NOOP
S: +OK
² RSET
该命今不带参数。仅用于“命令交互状态”。
POP3服务器将所有已被标志为删除的邮件的删除标志取消,
C: RSET
S: +OK maildrop has 2 messages ( 320 octets)
² QUIT
该命令无参数,仅用于“命令交互状态”。
POP3服务器把所有已标志为删除的邮件删除,并释放在“
2.SMTP
1、概述
SMTP被用来在因特网上传递电子邮件。
协议的原理很简单。无非是一个客户端计算机向服务器发送命令,
首先要与邮件服务器连接,服务器将返回文本。
220-ns.cinfo.ru Sendmail 8.6.12/8.6.9 ready at Wed, 22 Apr 1998 22:54:41 +0300
220 ESMTP spoken here
这些描述可能会因服务器而异。
向服务器传递的第一个命令是HELO. 该命令包含一个参数,即你的邮箱名。
HELO oleg
注意: 在RFC821中,HELO是一个可选择性命令,
如果命令成功,服务器会返回一个代码为250的回应。
下一步用MAIL FROM命令告诉服务器你想发一封邮件。
MAIL FROM: oleg@vbip.com
发完命令后,如果服务器返回一个代码为250回应,
RCPT TO命令以收信人地址为参数,
RCPT TO: somebody@domain.com
如果你想将邮件发给多个收件人的话。你需要多次使用RCPT TO命令,对每个命令,服务器都会返回代码为250的回应。
现在可以向服务器发送邮件正文了。
用DATA命令告诉服务器以下的内容为邮件正文。
Subject: My first e-mail message.
First line of a message.
Second line.
注意上面最后一行的最后一个字符是一个小数点。
250 WAA10568 Message accepted for delivery
任务完成了,可以继续发送下封邮件,也可以断开同服务器的连接。
QUIT
221 ns.cinfo.ru closing connection
2、工作机制
SMTP设计基于以下通信模型:针对用户的邮件请求,
一旦传送通道建立,
SMTP提供传送邮件的机制,
MAIL命令参数是回复路径,它指定邮件从何处来;
3、基本命令(所有的命令都是四个字母组成)
发送邮件操作涉及到不同的数据对象,它们由不同的参数相互连接。
(0)HELO(HELLO)
HELO〈SP〉〈domain〉〈CRLF>
通知服务器客户的身份。
此命令用于向接收SMTP确认发送SMTP。
(1)MAIL
MAIL FROM:
此命令用于开始将邮件发送到一个多个邮箱中。
此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,
(2)RCPT(recipient)
RCPT TO:
此命令用于确定邮件内容的唯一接收者;
此命令给出向前路径标识接收者,如果命令被接收,
不仅包括邮件,它是主机和目的邮箱的路由表,
(3)DATA
DATA
如果命令被接收,接收方返回一个354 Intermediate应答,并认定以下的各行都是信件内容。
注意:邮件内容包括如下提示:Date, Subject, To, Cc, From。
邮件内容指示符确认邮件操作并告知接收者可以存储和再发送数据了
(4)RSET
RSET
此命令指示当送邮件操作将被放弃。任何保存的发送者,
(5)SEND
SENDFROM:〈reverse-path>
此命令用于开始一个发送命令,将邮件发送到一个或多个终端上。
回复路径包括一个可选的主机列表和发送者邮箱。
此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,
(6)SOML(send or mail)
SOMLFROM:〈reverse-path>
此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,
回复路径包括一个可选的主机列表和发送者邮箱。
此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,
(7)SAML(send and mail)
SAMLFROM:〈reverse-path>
此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,
回复路径包括一个可选的主机列表和发送者邮箱。
此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,
(8)VRFY(verify vt.证实,查证;证明)
VRFY〈string〉
此命令要求接收者确认参数是一个用户。如果这是(已经知道的)
(9)EXPN(expand vt.扩大;使膨胀)
EXPN〈string〉
此命令要求接收者确认参数指定了一个邮件发送列表,
(10)NOOP
NOOP
此命令不影响任何参数和已经发出的命令。
(11)QUIT
QUIT
此命令指示接收方必须发送OK应答然后关闭传送信道。