文档库 最新最全的文档下载
当前位置:文档库 › SMTP简单邮件传输协议

SMTP简单邮件传输协议

一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的

TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非TCP 传输层协议组成。使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。

在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一跳 IP 地址。

在传输文件过程中使用25号端口

编辑本段协议原理

SMTP-简单邮件传输协议(SimpleMailTransferProtocol),是定义邮件传输的协议,它是基于TCP服务的应用层协议,由RFC0821所定义。SMTP协议规定的命令是以明文方式进行的。为了说明SMTP的工作原理,我们以向163发送邮件为实例进行说明。

在linux环境下,使用"telnet smtp.163. com 25"连接smtp.163. com 的25号端口(SMTP的标准服务端口);在windows下使用telnet程序,远程主机指定为smtp.163. com,而端口号指定为25,然后连接smtp.163. com:交互过程如下:

SMTP

[lix@nslix]$telnet smtp.163. com 25

220 163 .com Anti-spam GT for Coremail System (163com[071018]) HELO smtp.163 .com

250 OK

auth login

334 dXNlcm5hbWU6

USER base64加密后的用户名

334 UGFzc3dvcmQ6

PASS base64加密后的密码

235 Authentication successful

MAILFROM:XXX@163 .COM

250 Mail OK

RCPTTO:XXX@163 .COM

250 Mail OK

DATA

354 End data with .

QUIT

SMTP

250 Mail OK queued as smtp5,D9GowLArizfIFTpIxFX8AA==.41385S2 1211766217

HELO是客户向对方邮件服务器发出的标识自己的身份的命令,这里假设发送者为ideal;MAILFROM命令用来表示发送者的邮件地址;RCPTTO:标识接收者的邮件地址,这里表示希望发送邮件给XXX@163. COM,如果邮件接收者不是本地用户,例如RCPTTO:ideal,则说明希望对方邮件服务器为自己转发(Relay)邮件,若该机器允许转发这样的邮件,则表示该邮件服务器是OPENRELAY的,否则说明该服务器不允许RELAY;DATA表示下面是邮件的数据部分,输入完毕以后,以一个"."开始的行作为数据部分的结束标识;QUIT 表示退出这次会话,结束邮件发送。

这就是一个简单的发送邮件的会话过程,其实当使用outlookexpress等客户软件发送时,后台进行的交互也是这样的,当然,SMTP协议为了处理复杂的邮件发送情况如附件等等,定义了很多的命令及规定,具体可以通过阅读RFC821来获得。

当你的一个朋友向你发送邮件时,他的邮件服务器和你的邮件服务器通过S

SMTP

MTP协议通信,将邮件传递给你邮件地址所指示的邮件服务器上(这里假设你的本地邮件服务器是Linux系统),若你通过telnet协议直接登录到邮件服务器上,则可以使用mail等客户软件直接阅读邮件,但是若你希望使用本地的MUA(MailUserAgent,如outlookexpress等客户软件)来阅读邮件,则本地客户端通过POP3或IMAP协议与邮件服务器交互,将邮件信息传递到客户端(如:win98系统)。而如果你向你的朋友回复一封信件时,你所使用的MUA也是通过SMTP协议与邮件服务(一般为发送邮件地址对应的email地址)器通信,指示其希望邮件服务器帮助转发一封邮件到你朋友的邮件地址指定的邮件服务器中。若本地邮件服务器允许你通过它转发邮件,则服务器通过SMTP协议发送邮件到对方的邮件服务器。这就是接受和发送邮件的全部过程。

编辑本段个人SMTP服务器的配置方法

安装POP3和SMTP服务组件

Windows Server 2003默认情况下是没有安装POP3和SMTP服务组件的,因此我们要手工添加。

1.安装POP3服务组件

以系统管理员身份登录Windows Server 2003 系统。依次进入“控制面板→添加或删除程序→添加/删除Windows组件”,在弹出的“Windows组件向导”对话框中选中“电子邮件服务”选项,点击“详细信息”按钮,可以看到该选项包括两部分内容:POP3服务和POP3服务Web管理。为方便用户远程Web方式管理邮件服务器,建议选中“POP 3服务Web管理”。

2.安装SMTP服务组件

选中“应用程序服务器”选项,点击“详细信息”按钮,接着在“Internet信息服务(IIS)”选项中查看详细信息,选中“SMTP Service”选项,最后点击“确定”按钮。此外,如果用户需要对邮件服务器进行远程Web管理,一定要选中“万维网服务”中的“远程管理(HTML)”组件。完成以上设置后,点击“下一步”按钮,系统就开始安装配置POP3和SMTP服务了。

配置POP3服务器

1.创建邮件域

点击“开始→管理工具→POP3服务”,弹出POP3服务控制台窗口。选中左栏中的POP3服务后,点击右栏中的“新域”,弹出“添加域”对话框,接着在“域名”栏中输入邮件服务器的域名,也就是邮件地址“@”后面的部分,

2.创建用户邮箱

选中刚才新建的,在右栏中点击“添加邮箱”,弹出添加邮箱对话框,在“邮箱名”栏中输入邮件用户名,然后设置用户密码,最后点击“确定”按钮,完成邮箱的创建。

[1][2]完成POP3服务器的配置后,就可开始配置SMTP服务器了。点击“开始→程序→管理工具→Internet信息服务(IIS)管理器”,在“IIS管理器”窗口中右键点击“默认SMTP虚拟服务器”选项,在弹出的菜单中选中“属性”,进入“默认SM TP虚拟服务器”窗口,切换到“常规”标签页,在“IP 地址”下拉列表框中选中邮件服务器的IP地址即可。点击“确定”按钮,此时SMTP服务器默认的是匿名访问,打开切换到“访问”标签页,点击“身份验证”按钮,在对话框中去掉“匿名访问“选项,选中”基本身份验证(Basic authentication)“。这样一个简单的邮件服务器就架设完成了。

编辑本段工作过程

简单邮件传输协议(SMTP)是一种基于文本的电子邮件传输协议,是在因特网中用于在邮件服务器之间交换邮件的协议。SMTP是应用层的服务,可以适应于各种网络系统。

SMTP的命令和响应都是基于文本,以命令行为单位,换行符为CR/LF。响应信息一般只有一行,由一个3位数的代码开始,后面可附上很简短的文字说明。

SMTP

SMTP要经过建立连接、传送邮件和释放连接3个阶段。具体为:(1)建立TCP连接。

(2)客户端向服务器发送HELLO命令以标识发件人自己的身份,然后客户端发送MAIL命令。

(3)服务器端以OK作为响应,表示准备接收。

(4)客户端发送RCPT命令。

(5)服务器端表示是否愿意为收件人接收邮件。

(6)协商结束,发送邮件,用命令DATA发送输入内容。

(7)结束此次发送,用QUIT命令退出。

SMTP服务器基于DNS中的邮件交换(MX)记录路由电子邮件。电子邮件系统发邮件时是根据收信人的地址后缀来定位邮件服务器的。SMTP通过用户代理程序(UA)完成邮件的编辑、收取和阅读等功能;通过邮件传输代理程序(MTA)将邮件传送到目的地。

编辑本段安全和垃圾邮件

最初的SMTP的局限之一在于它没有对发送方进行身份验证的机制。因此,后来定义了SMTP-AUTH扩展。

尽管有了身份认证机制,垃圾邮件仍然是一个主要的问题。但由于庞大的SMTP安装数量带来的网络效应,大刀阔斧地修改或完全替代SMTP被认为是不现实的。Internet Mail 2000就是一个替代SMTP的建议方案。

因此,出现了一些同SMTP工作的辅助协议。IRTF的反垃圾邮件研究小组正在研究一些建议方案,以提供简单、灵活、轻量级的、可升级的源端认证。最有可能被接受的建议方案是发送方策略框架协议。

SMTP模型

smtp提供了一种邮件传输的机制,当收件方和发件方都在一个网络上时,可以把邮件直传给对方;当双方不在同一个网络上时,需要通过一个或几个中间服务器转发。smtp首先由发件方提出申请,要求与接收方smtp建立双向的通信渠道,收件方可以是最终收件人也可以是中间转发的服务器。收件方服务器确认可以建立连接后,双发就可以开始通信。

发件方smtp向收件方发处mail命令,告知发件方的身份;如果收件方接受,就会回答ok。发件方再发出rcpt命令,告知收件人的身份,收件方smtp确认是否接收或转发,如果同意就回答ok;接下来就可以进行数据传输了。通信过程中,发件方smtp与收件方smtp 采用对话式的交互方式,发件方提出要求,收件方进行确认,确认后才进行下一步的动作。整个过程由发件方控制,有时需要确认几回才可以。

为了保证回复命令的有效,smtp要求发件方必须提供接收方的服务器及邮箱。邮件的命令和答复有严格的语法定义,并且回复具有相应的数字代码。所有的命令由ascii码组成。命令代码是大小写无关的,如mail和 mail ﹑mail是等效的。

编辑本段服务扩展

SMTP提供一种可靠的有效的传送机制,它用于传送电子邮件。虽然十几年来,它的作用已经有目共睹,可是对它功能的扩充也是必不可少的。对SMTP 服务的扩展我们介绍一下:在SMTP转发的邮件中包括信封和内容这两种东西。我们写信也写信封和信皮,我们可以借生活中的信件来帮助理解。

(1)SMTP信封比较容易理解,它被作为一系列的SMTP协议单元传送,它包括发送者地址,传送模式,还有一个或多个接收者地址。如果有不清楚的地方,请参阅《SMTP协议标准》。

SMTP

(2)至于内容,它是由两部分组成的,一部分是信头,一部分是信体,信头是由一个个的域/值对(一个域,一个值)组成的,如果信体有结构的话,它的结构是以MIME构造的。内容从根本上来说是文本的,一般也是由ASCII码构成的,但是由于使用了MIME,所以这个限制应该也是没有了,但信头却不行,一般都应该使用ASCII码表示。虽然SMTP协议是一个不错的协议,可是对它的扩展还是不可避免,本文主要说明了一种扩展方法,使用这种扩展方法,服务器和用户之间可以相互知道对方使用了扩展,使用了多少,如果进行通信。

编辑本段通讯模型

SMTP协议是TCP/IP协议族中的一员,主要对如何将电子邮件从发送方地址传送到接收方地址,也即是对传输的规则做了规定。SMTP协议的通信模型并不复杂,主要工作集中在发送SMTP和接收SMTP上:首先针对用户发出的邮件请求,由发送SMTP建立一条连接到接收SMTP的双工通讯链路,这里的接收SMTP是相对于发送SMTP而言的,实际上它既可以是最终的接收者也可以是中间传送者。发送SMTP负责向接收SMTP发送SMTP命令,而接收SMTP 则负责接收并反馈应答。 SMTP协议的命令和应答

从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的。在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响。双方如此反复多次,直至邮件处理完毕。SMTP协议共包含10个SMTP命令,列表如下:

SMTP命令命令说明

HELLO<domain><CRLF>识别发送方到接收SMTP的一个HELLO命令

MAILFROM:<reverse-path><CRLF><reverse-path>为发送者地址。此命令告诉接收方一个新邮件发送的开始,并对所有的状态和缓冲区进行初始化。此命令开始一个邮件传输处理,最终完成将邮件数据传送到一个或多个邮箱中。

RCPTTO:<forward-path><CRLF><forward-path>标识各个邮件接

收者的地址

DATA<CRLF>

接收SMTP将把其后的行为看作邮件数据去处理,以<CRLF>.<CRLF>标识数据的结尾。

REST<CRLF>退出/复位当前的邮件传输

NOOP<CRLF>要求接收SMTP仅做OK应答。(用于测试)

QUIT<CRLF>要求接收SMTP返回一个OK应答并关闭传输。

VRFY<string><CRLF>验证指定的邮箱是否存在,由于安全因素,服务器多禁止此命令。

EXPN<string><CRLF>验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用。

HELP<CRLF>查询服务器支持什么命令

编辑本段通信安全

sendmail是在Unix环境下使用最广泛的实现邮件发送/接受的邮件传输代理程序。由于Sendmail邮件服务器的特点是功能强大而复杂,因此为保证Sendmail的安全性,需要作以下一些工作。

1、设置Sendmail使用"smrsh"

smrsh程序的目的是作为在mailer中为sendmail定义的"/bin/sh"的替代shell。smrsh是一种受限shell工具,它通过"/

etc/smrsh"目录来明确指定可执行文件的列表。简而言之smrsh限制了攻击者可以执行的程序集。当它与sendmail程序一起使用的时候,smrsh有效的将sendmail可以执行的程序的范围限制在smrsh目录之下。

第一步:

决定smrsh可以允许sendmail运行的命令列表。缺省情况下应当包含以下命令,但不局限于这些命令:

"/bin/mail"(如果在你的系统中安装了的话)

"/usr/bin/procmail"(如果在你的系统中安装了的话)

注意:不可在命令列表里包括命令解释程序,例如sh(1),csh(1),

perl(1),uudecode(1)及流编辑器sed(1)。

第二步:

在"/etc/smrsh"目录中创建允许sendmail运行的程序的符号连接。

使用以下命令允许mail程序"/bin/mail"运行:

[root@deep]#cd/etc/smrsh

[root@deep]#ln-s/bin/mailmail

用以下命令允许procmail程序"/usr/bin/procmail"运行:

[root@deep]#cd/etc/smrsh

[root@deep]#ln-s/usr/bin/procmailprocmail

这将允许位于".forward"和"aliases"中的用户采用"|program"语法来

运行mail及procmail程序。

第三步

配置sendmail使之使用受限shell。mailer程序在sendmail的配置文件"/etc/sendmail .cf"中仅有一行。必须修改"sendmail. cf"文件中"Mprog"定义的那一行。将"/bin/sh"替换为"/usr/sbin/smrsh"。

编辑"sendmail .cf"文件(vi/etc/sendmail. cf)并改动下面这一行:例如:

Mprog,P=/bin/sh,F=lsDFMoqeu9,S=10/30,R=20/40,D=$z:/,T=X-Unix,A=sh-c$u

应该被改为:

Mprog,P=/usr/sbin/smrsh,F=lsDFMoqeu9,S=10/30,R=20/40,D=$z:/,T=X-Un ix,A=sh-c$u

现在用以下命令手工重起sendmail进程:

[root@deep]#/etc/rc.d/init.d/sendmailrestart

2、"/etc/aliases"文件

如果没有加以正确和严格的管理的话,别名文件被用来获取特权。例如,很多发行版本在别名文件中带有"decode"别名。现在这种情况越来越少了。

这样做的目的是为用户提供一个通过mail传输二进制文件的方便的方式。在邮件的发送地,用户把二进制文件用"uuencode"转换成ASCII格式,并把结果邮递给接收地"decode"别名。那个别名通过管道把邮件消息发送到"/usr/bin/uuencode"程序,由这个程序来完成从ASCII转回到原始的二进制文件的工作。

删除"decode"别名。类似的,对于所有用于执行没有被放在smrsh目录下的程序的别名,你都要仔细的检查,可能它们都值得怀疑并应当删除它们。要想使你的改变生效,需要运行:

[root@deep]#/usr/bin/newaliases

编辑别名文件(vi/etc/aliases)并删除以下各行:

#Basicsystemaliases--theseMUSTbepresent.

MAILER-DAEMON:postmaster

postmaster:root

#Generalredirectionsforpseudoaccounts.

bin:root

daemon:root

games:root??删除这一行

ingres:root??删除这一行

nobody:root

system:root??删除这一行

toor:root??删除这一行

uucp:root??删除这一行

#Well-knownaliases.

manager:root??删除这一行

dumper:root??删除这一行

operator:root??删除这一行

#trapdecodetocatchsecurityattacks

decode:root??删除这一行

#Personwhoshouldgetroot'smail

#root:marc

最后应该运行"/usr/bin/newaliases"程序使改动生效

3、避免你的Sendmail被未授权的用户滥用

最新版本的Sendmail(8.9.3)加入了很强的防止欺骗的特性。它们可以防止你的邮件服务器被未授权的用户滥用。编辑你的"/etc/sendmail.c f"文件,修改一下这个配置文件,使你的邮件服务器能够挡住欺骗邮件。

编辑"sendmail.c f"文件(vi/etc/sendmail. cf)并更改下面一行:OPrivacyOptions=authwarnings

改为:

OPrivacyOptions=authwarnings,noexpn,novrfy

设置"noexpn"使sendmail禁止所有SMTP的"EXPN"命令,它也使sendmail 拒绝所有SMTP的"VERB"命令。设置"novrfy"使sendmail禁止所有SMTP的"VRFY"命令。这种更改可以防止欺骗者使用"EXPN"和"VRFY"命令,而这些命令恰恰被那些不守规矩的人所滥用。

4、SMTP的问候信息

当sendmail接受一个SMTP连接的时候,它会向那台机器发送一个问候信息,这些信息作为本台主机的标识,而且它所做的第一件事就是告诉对方它已经准备好了。

编辑"sendmail. cf"文件(vi/etc/sendmail. cf)并更改下面一行:OSmtpGreetingMessage=$jSendmail$v/$Z;$b

改为:

OSmtpGreetingMessage=$jSendmail$v/$Z;$bNOUCEC=xxL=xx

现在手工重起一下sendmail进程,使刚才所做的更改生效:

[root@deep]#/etc/rc.d/init.d/sendmailrestart

以上的更改将影响到Sendmail在接收一个连接时所显示的标志信息。你应该把"`C=xxL=xx"条目中的"xx"换成你所在的国家和地区代码。后面的更改其实不会影响任何东西。但这是"https://www.wendangku.net/doc/2b10577537.html,-abuse.email"新闻组的伙伴们推荐的合法做法。

5、限制可以审核邮件队列内容的人员

通常情况下,任何人都可以使用"mailq"命令来查看邮件队列的内容。为了限制可以审核邮件队列内容的人员,只需要在"/etc/sendmail .cf"文件中指定"restrictmailq"选项即可。在这种情况下,sendmail只允许与这个队列所在目录的组属主相同的用户可以查看它的内容。这将允许权限为0700的邮件队列目录被完全保护起来,而我们限定的合法用户仍然可以看到它的内容。

编辑"sendmail. cf"文件(vi/etc/sendmail. cf)并更改下面一行:OPrivacyOptions=authwarnings,noexpn,novrfy

改为:

OPrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq

现在我们更改邮件队列目录的权限使它被完全保护起来:

[root@deep]#chmod0700/var/spool/mqueue

注意:我们已经在sendmail.c f中的"PrivacyOptions="行中添加了"noexpn"和"novrfy"选项,现在在这一行中我们接着添加"restrictmailq"选项。

任何一个没有特权的用户如果试图查看邮件队列的内容会收到下面的信息:

[user@deep]$/usr/bin/mailq

Youarenotpermittedtoseethequeue

SMTP

6、限制处理邮件队列的权限为"root"

通常,任何人都可以使用"-q"开关来处理邮件队列,为限制只允许root 处理邮件队列,需要在"/etc/sendma il. cf"文件中指定"restrictqrun"。

编辑"sendmail. cf"文件(vi/etc/sendmail. cf)并更改下面一行:OPrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq

改为:

OPrivacyOptions=authwarnings,noexpn,novrfy,restrictmailq,restrictq run

任何一个没有特权的用户如果试图处理邮件队列的内容会收到下面的信息:

[user@deep]$/usr/sbin/sendmail-q

Youdonothavepermissiontoprocessthequeue

7、在重要的sendmail文件上设置不可更改位

可以通过使用"chattr"命令而使重要的Sendmail文件不会被擅自更改,可以提高系统的安全性。具有"+i"属性的文件不能被修改:它不能被删除和改名,不能创建到这个文件的链接,不能向这个文件写入数据。只有超级用户才能设置和清除这个属性。

为"sendmail. cf"文件设置不可更改位:

[root@deep]#chattr+i/etc/sendmail. cf

为"sendmail.cw"文件设置不可更改位:

[root@deep]#chattr+i/etc/sendmail.cw

为"sendmail. mc"文件设置不可更改位:

[root@deep]#chattr+i/etc/sendmail. mc

为"null. mc"文件设置不可更改位:

[root@deep]#chattr+i/etc/null. mc

为"aliases"文件设置不可更改位:

[root@deep]#chattr+i/etc/aliases

为"access"文件设置不可更改位:

[root@deep]#chattr+i/etc/mail/access

qmail安全

qmail有一个名为rcpthosts(该文件名源于RCPTTO命令)的配置文件,其决定了是否接受一个邮件。只有当一个RCPTTO命令中的接收者地址的域名存在于rcpthosts文件中时,才接受该邮件,否则就拒绝该邮件。若该文件不存在,则所有的邮件将被接受。当一个邮件服务器不管邮件接收者和邮件接收者是谁,而是对所有邮件进行转发(relay),则该邮件服务器就被称为开放转发(openrelay)的。当qmail服务器没有rcpthosts时,其是开放转发的。

设置自己服务器为非openrelay的最简单的办法就是将你的邮件服务器的所有域名(若DNS的MX记录指向该机器,也应该包括该域名。但是这将导

致你的本地客户也被拒绝使用你的服务器转发邮件,而要支持客户使用MUA 来发送邮件,必须允许客户使用服务器转发邮件。qmail-smtpd支持一种有选择性的忽略rcpthosts文件的方法:若qmail-smtpd的环境变量RELAYCLIENT被设置,则rcpthost文件将被忽略,relay将被允许。但是如何识别一个邮件发送者是否是自己的客户呢?qmail并没有采用密码认证的方法,而是判断发送邮件者的源IP地址,若该IP地址属于本地网络,则认为该发送者为自己的客户。

这里就要使用ucspi-tcp软件包。在这里我们要使用该软件包的tcpserver程序。该程序的功能类似于inetd-监听进入的连接请求,为要启动的服务设置各种环境变量,然后启动指定的服务。

tcpserver的配置文件是/etc/tcp.smtp,该文件定义了是否对某个网络设置RELAYCLIENT环境变量。例如,本地网络是地址为192.168.10.0/24的C类地址,则tcp.smtp的内容应该设置如下:

127.0.0.1:allow,RELAYCLIENT=""

192.168.10.:allow,RELAYCLIENT=""

:allow

这几个规则的含义是指若连接来自127.0.0.1和192.168.10则允许,并且为其设置环境变量RELAYCLIENT,否则允许其他连接,但是不设置RELAYCLIENT环境变量。这样当从其他地方到本地的25号连接将会被允许,但是由于没有被设置环境变量,所以其连接将会被qmail-smptd所拒绝。

但是tcopserver并不直接使用/etc/tcp.smtp文件,而是需要先将该文件转化为cbd文件:

[lix@mail/etc]$#tcprulestcp.smtp.cdbtcp.smtp.temp

然后再回头看在/service/qmail-smtpd目录下的run文件中有

/usr/local/bin/tcpserver-v-p-x/etc/tcp.smtp.cdb

可以看到,tcpserver利用了/etc/smtp.cbd文件。若本地有多个网络,则需要这些网络都出现在/etc/tcp.smtp文件中。

这样就实现了允许本地客户relay邮件,而防止relay被滥用。

参考资料

?1

详解个人SMTP服务器的配置方法

https://www.wendangku.net/doc/2b10577537.html,/20090429/95892.html

?2

轻松架设自己的SMTP服务器

https://www.wendangku.net/doc/2b10577537.html,/nic_kna/blog/item/ab2ea8597b337dd89c8204c7.html

电子邮件协议综述

常见的电子邮件协议有以下几种:SMTP(简单邮件传输协议)、POP3(邮局协议)、IMAP (Internet邮件访问协议)。这几种协议都是由TCP/IP协议族定义的。SMTP(Simple Mail Transfer Protocol):SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。POP(Post Office Protocol):目前的版本为POP3,POP3是把邮件从电子邮箱中传输到本地计算机的协议。IMAP(Internet Message Access Protocol):目前的版本为IMAP4,是POP3的一种替代协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看到邮件的标电子邮件 题摘要,从邮件客户端软件就可以对服务器上的邮件和文件夹目录等进行操作。IMAP协议增强了电子邮件的灵活性,同时也减少了垃圾邮件对本地系统的直接危害,同时相对节省了用户察看电子邮件的时间。除此之外,IMAP协议可以记忆用户在脱机状态下对邮件的操作(例如移动邮件,删除邮件等)在下一次打开网络连接的时候会自动执行。 除了我们常见的通用协议SMTP、POP3、IMAP ,现在有一些邮件系统厂商自主研发了私有协议,比如去年Coremail就研发了了私有协议,这个私有协议达到了邮件加速的目的,邮件发送接收比使用普通协议快了一倍,不过既然是私有协议,目前只能使用在同一个系统中,比如网易邮箱和139手机邮箱都用了Coremail邮件系统,他们之间互相收发邮件比收发其它系统的邮件要快一半。 这种私有协议一般是实力雄厚、终端用户多的厂商才具有研发的意义。 什么是POP 大家一听这个POP,读起来有点像是中文中的泡泡,其实这是一个英文术语的缩写。POP 的全称是Post Office Protocol,即邮局协议,用于电子邮件的接收,它使用TCP的110端口。现在常用的是第三版,所以简称为POP3。POP3仍采用Client/Server工作模式,Client被称为客户端,一般我们日常使用电脑都是作为客户端,而Server(服务器)则是网管人员进行管理的。举个形象的例子,Server(服务器)是许多小信箱的集合,就像我们所居住楼房的信箱结构,而客户端就好比是一个人拿着钥匙去信箱开锁取信一样的道理。 POP在网络模型中的层次 大家都知道网络是分层的,而这个分层就好比是一个企业里的组织结构一样。在日常使用电脑过程中,人操作着电脑,人就好比是指挥电脑对因特网操作的首席执行官。当我们打开Foxmail这个邮件软件收取邮件时,Foxmail这个软件就会调用TCP/IP参考模型中的应用层协议—POP协议。 应用层协议建立在网络层协议之上,是专门为用户提供应用服务的,一般是可见的。如利用FTP(文件传输协议)传输一个文件请求一个和目标计算机的连接,在传输文件的过程中,用户和远程计算机交换的一部分是能看到的。而这时POP协议则会指挥下层的协议为它传送数据服务器,最后Foxmail通过一系列协议对话后成功将电子邮件保存到了Foxmail 的收件箱里。TCP/IP参考模型是Internet的基础。和OSI的7层协议比较,TCP/IP参考模型中没有会话层和表示层。通常说的TCP/IP是一组协议的总称,TCP/IP实际上是一个协议族(或协议包),包括100多个相互关联的协议,其中IP(Internet Protocol,网际协议)是网络层最主要的协议;TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是传输层中最主要的协议。一般认为IP、TCP、UDP是最根本的三种协议,是其它协议的基础。 相信读者了解TCP/IP框架之后,一定会对各层产生一定的兴趣,不过我们对于这个模型的理解也是一步步来的。在这里,我们首先只要知道相应的软件会调用应用层的相应协议,比如Foxmail会调用POP协议,而IE浏览器则会调用DNS协议先将网址解析成IP地址。在

SMTP协议发邮件流程

HELO v domain >v CRLF > 用 C++ 发邮件 近段时间,实验室电脑的 IP 频繁地改变,搞得想用远程偷下懒都不行。这时想到的 解决方法有:静态IP,动态域名,自己解决。静态 IP 虽然可以自己指定,但一关机后,与 对方冲突就完了,作罢。免费的动态域名又要手机认证,也作罢。最后只能自己解决。解决 方案是写一个程序不断地检测本机 IP ,如果改变了,就发邮件通知。检测本机 IP 很简单, 就略过。这里介绍下怎样发邮件吧。 发邮件前,需要理解 SMTP(Simple Mail Transfer Protocol) 。 SMTP 是电子邮件从 客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。 SMTP 是请 求/ 响应协议,命令和响应都是基于 ASCII 文本,并以 CR 和 LF 符结束。响应包括一个 表示返回状态的三位数字代码。在 TCP 协议 25 端口监听连接请求。其命令如下: SMTP 命令 命令说明 识 别发送方到接收 SMTP 的一个 HELO 命令 AUTH LOGIN 登陆服务器的命令。在这条命令之后,要发送用 Base64 编 码后的用户名与密码进行登陆 MAIL FROM: v reverse-path >v CRLF>v reverse-path >为发送者地址。 此命令告 诉接收方一个新邮件发送的开始, 并对所有的状态和缓冲区进行初始化。 此命令开始一个邮 件传输处理,最终完成将邮件数据传送到一个或多个邮箱中。

RCPT TO:v forward-path >v CRLF>v forward-path >标识各个邮件接收者的地

使用telnet协议来收发邮件

第一部分邮件传输协议 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)定义了邮件客户端软件与SMTP服务器之间,以及两台SMTP服务器间的通信规则。SMTP服务器之间的通信规则。 SMTP协议中一共定义了18条命令,发送一封电子邮件的过程通常只需要使用其中6条命令,表1中按照发送命令的先后顺序列出了这6条命令,并描述了其语法格式及功能说明,其中,代表空格,代表回车和换行。 表1 对于SMTP邮件发送程序发送的每一条命令,SMTP邮件程序接收程序都将回应一条响应信息。每条响应信息都以一个响应状态码开发如下所示: 250 ok 响应状态吗用于表示SMTP服务器对请求命令的处理结果和状态,它是一个三位的十进制数。响应状态码的最高位数字代表了不同的分类,当其为2时表示命令执行成功,为5时表示命令执行失败。为3时表示命令没有完成。 动手实践:借助telnet程序手工发送邮件 1)在sina()中申请两个电子邮件地址,,第一个邮箱的登录为:javamail,读者应注册自已的电子邮箱进行实验。 2)要给某个SMTP服务器发送邮件,首先要获知该SMTP服务器的主机名,其中新浪的SMTP服务器主机名为 https://www.wendangku.net/doc/2b10577537.html, 25。 3)当SMTP服务器要对邮件客户端软件进行用户身份验证时,邮件客户端软件需要对用户名和密码进行BASE64编 码后再传递给SMTP服务器,因此要编写一个能对用户名和密码进行BASE64编码的工具程序。下面是用Java 语言编写的一个对用户名和密码分别进行BASE64编码的工具程序。 例:BASE64Util.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import sun.misc.BASE64Encoder; class BASE64Util { public static void main(String[] args) throws IOException {

pop3-imap-exchange协议

Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Applicationlayer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。 HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是你为什么在浏览器中看到的网页地址都是以“http://”开头的原因。 POP3(Post Office Protocol 3) POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。 IMAP(Internet消息访问协议)是与POP3对应的另一种协议,为美国斯坦福大学在1986年开始研发的多重邮箱电子邮件系统。它能够从邮件服务器上获取有关E-mail的信息或直接收取邮件,具有高性能和可扩展性的优点。IMAP 为很多客户端电子邮件软件所采纳,如OutlookExpress、NetscapeMessenger 等,支持IMAP的服务器端的软件也越来越多,如CriticalPath、Eudora、iPlanet、Sendmail等。 POP3 和IMAP4 功能概述 这两个协议具有下列优点和局限性: ?POP3 POP3 用于支持脱机邮件处理。使用 POP3 时,如果未将客户端设置为在服务器上保留邮件,电子邮件将从服务器中删除并存储在本地POP3 客户端上。这会使数据管理和安全责任都转由用户负责。POP3 不提供高级协作功能,例如日历、联系人和任务。 ?IMAP4 IMAP4 可提供脱机和联机访问功能,但与POP3 一样,IMAP4 不提供高级协作功能,例如日历、联系人和任务。 POP3 和IMAP4 无法用于将邮件从客户端应用程序发送到电子邮件服务器。使用 POP3 和IMAP4 发送邮件的电子邮件应用程序依赖SMTP 协议来发送邮件。会在每个中心传输服务器上自动创建用于从使用POP3 或IMAP4 的客户端应用程序接收电子邮件提交的连接器。有关连接器的详细信息,请参阅了解接收连接器。

POP3协议命令原始码及工作原理

POP3协议命令原始码及工作原理 一简介: 1. POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。脱机模型即不能在线操作,不像IMAP4(netscape支持IMAP4) 2. 当客户机与服务器连接并查询新电子邮件时,被该客户机指定的所有将被下载的邮件都将被程序下载到客户机,下载后,电子邮件客户机就可以删除或修改任意邮件,而无需与电子邮件服务器进一步交互。 3. POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。 服务器响应是由一个单独的命令行组成,或多个命令行组成,响应第一行以ASCII文本OK或-ERR指出相应的操作状态是成功还是失败 4. 在POP3协议中有三种状态,认可状态,处理状态,和更新状态。 当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出quit命令,则进入更新状态,更新之后最后重返认可状态。如下图 等待连接身份确认quit命令 ——|认可|—————|处理|——————|更新| |__________________________________|

重返认可状态 5. 认可状态的命令语句 一般情况下,大多数现有的POP3客户与服务器执行采用ASCII 明文发送用户名和口令,在认可状态等根据专家观察,这样的理论和现象都是值得各位站长深思的,所以希望大家多做研究学习,争取总结出更多更好的经验! 待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发送明文用户名和口令给服务器 进行身份确认。一旦确认成功,便转入处理状态。 为了避免发送明文口令的问题,有一种新的认证方法,命令为APOP,使用APOP,口令在传输之前被加密。 当第一次与服务器连接时,POP3服务器向客户机发送一个ASCII 码问候,这个问候由一串字符组成对每个客户机是唯一的,与当时的时间有关,然后,客户机把它的纯文本口令附加到从服务器接收到的字符串之后,然后计算出结果字符串的MD5单出函数消息摘要,客户机把用户名与MD5消息摘要作为APOP命令的参数一起发送出去。 目前,大多数windows上的邮件客户软件不支持APOP命令,qpopper支持。 6. POP3命令码如下: 命令参数状态描述 ------------------------------------------

SMTP协议的命令和应答

从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP 命令和接收SMTP反馈的应答来完成的。在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响。双方如此反复多次,直至邮件处理完毕。SMTP协议共包含10个SMTP命令,列表如下: SMTP命令命令说明 HELLO<domain><CRLF>识别发送方到接收SMTP的一个HELLO命令 MAILFROM:<reverse-path><CRLF><reverse-path>为发送者地址。此命令告诉接收方一个新邮件发送的开始,并对所有的状态和缓冲区进行初始化。此命令开始一个邮件传输处理,最终完成将邮件数据传送到一个或多个邮箱中。 RCPTTO:<forward-path><CRLF><forward-path>标识各个邮件接收者的地址 DATA<CRLF> 接收SMTP将把其后的行为看作邮件数据去处理,以<CRLF>.<CRLF>标识数据的结尾。 REST<CRLF>退出/复位当前的邮件传输 NOOP<CRLF>要求接收SMTP仅做OK应答。(用于测试) QUIT<CRLF>要求接收SMTP返回一个OK应答并关闭传输。 VRFY<string><CRLF>验证指定的邮箱是否存在,由于安全因素,服务器多禁止此命令。 EXPN<string><CRLF>验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用。 HELP<CRLF>查询服务器支持什么命令 注:<CRLF>为回车、换行,ASCII码分别为13、10(十进制)。 SMTP协议的每一个命令都会返回一个应答码,应答码的每一个数字都是有特定含义的,如第一位数字为2时表示命令成功;为5表失败;3表没有完成。一些较复杂的邮件程序利用该特点,首先检查应答码的首数字,并根据其值来决定下一步的动作。下面将SMTP的应答码列表如下: 应答码说明 501参数格式错误 502命令不可实现 503错误的命令序列 504命令参数不可实现 211系统状态或系统帮助响应 214帮助信息 220<domain>服务就绪 221<domain>服务关闭 421<domain>服务未就绪,关闭传输信道 250要求的邮件操作完成 251用户非本地,将转发向<forward-path> 450要求的邮件操作未完成,邮箱不可用 550要求的邮件操作未完成,邮箱不可用 451放弃要求的操作;处理过程中出错 551用户非本地,请尝试<forward-path> 452系统存储不足,要求的操作未执行

SMTP简单邮件传输协议

一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非TCP 传输层协议组成。使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。 在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一跳 IP 地址。 在传输文件过程中使用25号端口 编辑本段协议原理 SMTP-简单邮件传输协议(SimpleMailTransferProtocol),是定义邮件传输的协议,它是基于TCP服务的应用层协议,由RFC0821所定义。SMTP协议规定的命令是以明文方式进行的。为了说明SMTP的工作原理,我们以向163发送邮件为实例进行说明。 在linux环境下,使用"telnet smtp.163. com 25"连接smtp.163. com 的25号端口(SMTP的标准服务端口);在windows下使用telnet程序,远程主机指定为smtp.163. com,而端口号指定为25,然后连接smtp.163. com:交互过程如下: SMTP [lix@nslix]$telnet smtp.163. com 25 220 163 .com Anti-spam GT for Coremail System (163com[071018]) HELO smtp.163 .com 250 OK auth login 334 dXNlcm5hbWU6 USER base64加密后的用户名 334 UGFzc3dvcmQ6 PASS base64加密后的密码 235 Authentication successful MAILFROM:XXX@163 .COM 250 Mail OK RCPTTO:XXX@163 .COM

计算机网络原理 简单邮件传送协议(SMTP)

计算机网络原理简单邮件传送协议(SMTP) 简单邮件传送协议(SMTP)是一种电子邮件协议,它既具有客户机(发送者)功能,又具有服务器(接收者)功能。SMTP是Internet上的基础传输机制,大多数系统使用它在计算机服务器之间发送邮件。SMTP允许将电子邮件从一个计算机邮件服务器发送到另一个计算机邮件服务器。SMTP服务器接受本地用户的邮件,以将它传输到网络外部的服务器上。 大多数系统通过本地邮件系统服务器在本地按路径发送电子邮件。SMTP发送程序从输出邮件队列中得到报文,通过多个TCP连接将它们传输到目标主面的25号端口上,将这些报文传输到正确的目的计算机。在发送过程中,SMTP接收程序必须能名证实本地邮件目的地址,并处理各种差错,包括传输差错以及没有足够的磁盘空间等。 SMTP发送程序对报文所负的责任直到SMTP接收程序指示传送完成为止。SMTP协议的作用范围仅限于SMTP发送程序和SMTP接收程序之间的对话过程。SMTP主要功能是传送报文。 SMTP规定了14条命令和21种应答信息,每条命令由一行文本组,并以4个字母组成,而每一种应答信息由一个3位数据代码开始,后面附加很简单的文字说明。下面我们来了解SMTP通信最主要的命令和响应信息,一般分三个阶段: 1.连接建立 发送方将需要发送的邮件发送到邮件缓存。SMTP发送程序将每隔一定时间对邮件缓存进行扫描一次。如有邮件未发送,将使用SMTP程序端口号(25号)与目的计算机的SMTP 服务器建立连接。 当连接建立后,将发送“220 Service ready(服务就绪)”,并向SMTP服务器发送HELO 命令来标识自己。 接收方SMTP程序,接收到所发来的标识后,则返还应答“250 OK(一切正常)”来接受发送程序的身份标识。 如果接收方的邮件服务不可用,则返还应答“421 Service not available(服务不可用)”。2.邮件传送 当连接建立后,SMTP发送程序将向SMTP接收程序发送报文信息。报文传送有3个逻辑阶段: ●用一个MAIL命令标识出报文发起方。例如:MAIL FROM: 。 ●用一个或者多个RCPT命令标识该报文的接收方。例如:RCPT TO:<收信人地址>。 ●用一个DATA命令传送报文文本。 发送MAIL命令后,若SMTP服务器已经准备好接收邮件时,则应答“250 OK”。否则,返回代码,并指出原因。例如:451(处理时出错),452(存储空间不够),500(命令无法识别)等。 RCPT命令标识邮件数据的接收方,通过多次使用这个命令就能够指定多个接收者。并且每RCPT命令都会返还一个单独的应答。例如:“550 No such user here(无此用户)”,即不存在此邮箱。RCPT命令的作用是:先查清接SMTP接收服务器是否准备好接收邮件,然后再将邮件发送。 3.释放连接 邮件发送完毕后,发送方SMTP服务器程序将发送QUIT命令。接收方SMTP服务器程序返还应答“211(服务关闭)”信息,表示发送发SMTP服务器程序同意释放TCP连接。 上述的SMTP服务器交互的过程都被电子邮件系统的用户代理屏蔽了,所以用户在使用

SMTP与POP协议简析

SMTP、POP协议简析

作者:李鹏博时间:2016/06

1.SMTP协议与POP协议说明 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 POP(Post Office Protocol)即邮局协议,用于电子邮件的接收。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。本文只介绍POP3。 2.SMTP协议简析 通过抓包,可以看到清晰的服务器与客户端的交流过程。如下图。

如上图,将整个流程分为三部分:握手阶段、认证阶段、发送数据阶段。其中TCP三次握手在上图中未体现,握手成功后,进入认证阶段。 SMTP命令字说明 HELO客户端为标识自己的身份而发送的命令(通常带域名) EHLO使服务器可以表明自己支持扩展简单邮件传输协议(ESMTP) 命令。 MAIL FROM标识邮件的发件人;以MAIL FROM: 的形式使用。 RCPT TO标识邮件的收件人;以RCPT TO: 的形式使用。 DATA客户端发送的、用于启动邮件内容传输的命令。 RSET使整个邮件的处理无效,并重置缓冲区。 QUIT终止会话。 对于服务器的每个回复,都有一个返回码,这个返回码标志着上次的请求操作完成状态。如果第一个数字是2表示操作成功;3表示操作正在进行;5表示操作失败。 握手阶段 认证阶段 握手成功后,邮件服务器(上面示例是163的邮件服务器)会发送欢迎连接信息。然后是客户端HELO(或EHLO),向服务器标识用户身份;接下来进行认证操作。认证成功后,客户端告诉服务器这封邮件从哪个邮箱来,到哪个邮箱去,mail from只有一个,但是recpt to 后面可以跟多个收件人地址。成功后,客户端请求发送邮件数据。 数据发送阶段 服务器回复DATA命令后,会有一个结束符说明。如上图,就是以.结束邮件DATA。其中即为“\r\n”;

简单邮件传输协议

简单邮件传输协议 院系:信息工程学院 专业:通信工程 简单邮件传输协议 SMTP 分析 实验目的 1.了解什么是SMTP协议以及它规定的命令和响应 2.掌握SMTP的通信和收发邮件的过程 3.学会使用Wireshark软件对SMTP分组俘虏更详细了解 实验环境 本实验要求实验室主机能够连接到Internet,具有事先申请好可用的电子邮件帐户,并且能够支持SMTP 和POP3 协议。 实验室主机安装有Outlook Express 软件,学生可以进行账号的配置,并利用其进行收发邮件的的操作。 实验拓扑如图所示: 实验拓扑图 实验原理 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送电子邮件的规则,由它来控制电子邮件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转电子邮件时找到下一个目的地。通过SMTP协议所指定的服务器,我们可以把E-mail寄到收信人的服务器上了。SMTP服务器是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。 SMTP 协议是两个报文传输代理之间的通信协议。它规定了两个相互通信MTA 之间如何交换信息。SMTP 协议的最大特点是简单,它规定了发送程序和接收程序之间的命令和应答格式。 SMTP 提供可靠且有效电子邮件传输,是建模在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。 SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。SMTP 重要特性之一是其能跨越网络传输邮件,即SMTP 邮件中继。通常,一个网络可以由互联网上可通过TCP 相互访问的主机、防火墙分隔的 TCP/IP 网络上可通过TCP 相互访问的主机,及其它利用非TCP 传输层协议的局域网或广域网中的主机组成。使用 SMTP,可实现相同网络上主机之间的邮件传输,也可通过中继器或网关实现某主机与其它网络之间的邮件传输。 SMTP 使用的是TCP 的端口25。 SMTP 命令 SMTP 命令是发送于 SMTP 主机之间的 ASCII 信息,可能命令如下表所示:

基于POP3与SMTP协议的邮件收发程序的开发

一、设计思想 电子邮件指用电子手段传送信件、单据、资料等信息的通信方法。电子邮件综合了电话通信和邮政信件的特点,它传送信息的速度和电话一样快,又能象信件一样使收信者在接收端收到文字记录。电子邮件系统又称基于计算机的邮件报文系统。它承担从邮件进入系统到邮件到达目的地为止的全部处理过程。电子邮件不仅可利用电话网络, 而且可利用任何通信网传送。在利用电话网络时, 还可利用其非高峰期间传送信息,这对于商业邮件具有特殊价值。由中央计算机和小型计算机控制的面向有限用户的电子系统可以看作是一种计算机会议系统。 电子邮件的工作过程遵循客户- 服务器模式。每份电子邮件的发送都要涉及到发送方与接收方,发送方式构成客户端,而接收方构成服务器,服务器含有众多用户的电子信箱。发送方通过邮件客户程序,将编辑好的电子邮件向邮局服务器(SMTP服务器)发送。邮局服 务器识别接收者的地址,并向管理该地址的邮件服务器(POP3服务器)发送消息。 一个邮件系统的传输包含用户代理User Agent 传输代理TransferAgent 及接受代理DeliveryAgent 三大部分。 用户代理是一个用户发信和收信的程序, 负责将电子邮件按照一定的标准包装,然后送至邮件服务器, 或由邮件服务器收回。传输代理负责信件的交换和传输。将信件传送至适当的邮件主机, 再由接受代理将信件分发至不同的邮件信箱。传输代理必须要能够接受用户邮件程序送来的信件,解读收信人的地址,根据SMTP协议将它正确无误地传递到目的地。现在一般的传输代理已采用Sendmail 程序完成工作。电子邮件到达邮件主机后, 在经接收代理POP协议被用户读取至自己的主机。 电子邮件在发送与接收过程中都要遵循SMTP POP3等协议,这些协议确保了电子邮件 在各种不同系统之间的传输。其中,SMTP负责电子邮件的发送,而POP3则用于接收In ternet 上的电子邮件。 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/ IP协议族, 它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器, 我们就可以把E—mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP!务器则是遵循SMTP 协议的发送邮件服务器,用来发送或中转你发出的电子邮件。 POP3(Post Office Protocol 3)即邮局协议,目前已发展到第三版,称POP3它规 定怎样将个人计算机连接到Internet 的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议 的接收邮件服务器,用来接收电子邮件的。总的来说POP3协议是让用户把服务器上的信收 到本地来所需要的一种协议。 本程序为一个基于SMTP和POP3协议的小型EMAIL收发程序,简单的实现了邮件的收发功能。

试验七 电子邮件协议

试验七电子邮件协议(SMTP, POP3和IMAP) 练习一:使用Outlook发送电子邮件 1. 主机B启动协议分析器进行数据捕获,并设置过滤条件(提取SMTP协议)。 2. 主机A打开邮件工具Outlook Express并设置一个邮件帐号,邮件接收服务器为POP3, 编辑并发送一封电子邮件给主机A。注:Outlook使用方法及具体配置见附录 3. 察看主机B捕获的数据,保存会话命令(方法:会话交互视图/单击右键/保存会话命令菜单,保存为Smtp.zdt)。 (1)SMTP使用的TCP端口是25。 (2)找出传输用户帐号及密码的数据包,能不能看到用户密码?答:能。 (3)结合Smtp.zdt的SMTP传输过程,填写下表。 表15-5 实验结果 ●邮件的内容首部包括一些关键信息,如From、Subject、To等,请分析邮件首部格式。 ●分析在邮件的首部字段中有关MIME的信息。 练习二:使用Outlook接收电子邮件 本练习将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。现仅以主机A、B所在组为例,其它组的操作参考主机A、B所在组的操作。 1. 使用POP3协议接收 (1)主机B启动协议分析器进行数据捕获,并设置过滤条件(提取POP3协议)。

(2)主机A接收练习一中发送的邮件。 (3)察看主机B捕获的数据,保存会话命令(方法:会话交互视图/单击右键/保存会话命令菜单,保存为POP3.zdt)。 ● POP3使用的TCP端口是110 。 ●找出传输用户帐号及密码的数据包,能不能看到用户密码? 答:能。 ●结合POP3.zdt的内容,分析POP3协议的工作过程并画出邮件接收过程简图,比较它与SMTP协议的不同点。 答:POP3是POP(电子邮局传输协议)的第三个版本,是规定了怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是Internet电子邮件的第一个离线协议标准。简单点说,POP3就是一个简单而实用的邮件信息传输协议。 SMTP(简单邮件传输协议)是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP服务器就是遵循SMTP协议的发送邮件服务器。 ●找到接收邮件内容的报文(命令RETR的响应报文),察看是否与发送的内容一致? 答:一致。 使用IMAP协议接收 (1)主机B重新进行数据捕获,并设置过滤条件(提取IMAP协议)。 (2)主机A使用Outlook Express设置一个邮件账号,邮件接收服务器为IMAP。发送一封邮件并对其接收。 (3)察看主机B捕获的数据,保存会话命令(会话交互视图/单击右键/保存会话命令菜 2.单,保存为IMAP.zdt)。 ● IMAP使用的TCP端口是143 。 ●找出传输用户帐号及密码的数据包,能不能看到用户密码? 答:能。 ●结合IMAP.zdt的内容,分析IMAP协议的工作过程并画出邮件接收过程简图,比较它与POP3协议的异同点。 答:POP3提供了快捷的邮件下载服务,用户可以利用POP3把邮箱里的信下载到PCh上进行离线阅读。一旦邮件进入PC的本地硬盘,就可以选择把邮件从服务器上删除,然后脱离Internet的连接并选择在任何时候阅读已经下载的邮件。 IMAP同样提供了方便的邮件下载服务,让用户服务能进行离线阅读,但IMAP能完成的却远远不只这些。首先,IMAP提供的摘要浏览功能可以让你阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。也就是说,你不必等所有的邮件都下载完毕后才知道空间邮件里都有些什么。如果你根据摘要信息就可以决定某些邮件对你毫无用处,你就可以直接在服务器上把这些邮件删除掉,而不必浪费你宝贵的上网时间。 练习三:使用TCP工具和SMTP命令实现邮件发送 本练习将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。现仅以主机A、

SMTP协议原理

SMTP协议原理 SMTP协议原理 SMTP-简单邮件传输协议(SimpleMailTransferProtocol),是定义邮件传输最常用的协议,它是基于TCP服务的应用层协议,由RFC821所定义。SMTP协议规定的命令是以明文方式进行的。为了说明SMTP的工作原理,我们以向163发送邮件为实例进行说明。 在linux环境下,使用"telnet smtp.163. com 25"连接smtp.163. com的25号端口(SMTP的标准服务端口);在windows下使用telnet程序,远程主机指定为smtp.163. com,而端口号指定为25,然后连接smtp.163. com:交互过程如下:[lix@nslix]$telnet smtp.163. com 25 220 163 .com Anti-spam GT for Coremail System (163com[071018]) HELO smtp.163 .com 250 OK auth login 334 dXNlcm5hbWU6 USER base64加密后的用户名 334 UGFzc3dvcmQ6 PASS base64加密后的密码 235 Authentication successful MAILFROM:XXX@163 .COM

250 Mail OK RCPTTO:XXX@163 .COM 250 Mail OK DATA 354 End data with . QUIT 250 Mail OK queued as smtp5,D9GowLArizfIFTpIxFX8AA==.41385S2 HELO是客户向对方邮件服务器发出的标识自己的身份的命令,这里假设发送者为ideal;MAILFROM命令用来表示发送者的邮件地址;RCPTTO:标识接收者的邮件地址,这里表示希望发送邮件给XXX@163. COM,如果邮件接收者不是本地用户,例如RCPTTO:ideal,则说明希望对方邮件服务器为自己转发(Relay)邮件,若该机器允许转发这样的邮件,则表示该邮件服务器是OPENRELAY的,否则说明该服务器不允许RELAY;DATA表示下面是邮件的数据部分,输入完毕以后,以一个"."开始的行作为数据部分的结束标识;QUIT表示退出这次会话,结束邮件发送。 这就是一个简单的发送邮件的会话过程,其实当使用outlookexpress等客户软件发送时,后台进行的交互也是这样的,当然,SMTP协议为了处理复杂的邮件发送情况如附件等等,定义了很多的命令及规定,具体可以通过阅读RFC821来获得。当你的一个朋友向你发送邮件时,他的邮件服务器和你的邮件服务器通过SMTP协议通信,将邮件传递给你邮件地址所指示的邮件服务器上(这里假设你的本地邮件服务器是Linux系统),若你通过telnet协议直接登录到邮件服务器上,则可以使用mail 等客户软件直接阅读邮件,但是若你希望使用本地的MUA(MailUserAgent,如

互联网收费电子邮箱服务合同通用范本

内部编号:AN-QP-HT328 版本 / 修改状态:01 / 00 In Daily Life, When Two Or More Parties Deal With Something, They Conclude The Contract In Order To Determine Their Respective Rights And Obligations. Once The Contract Is Signed, They Need T o Abide By Its Provisions, And All Parties Involved In The Contract Are Legally Protected And Restricted. 甲方:__________________ 乙方:__________________ 日期:__________________ 互联网收费电子邮箱服务合同通用范 本

互联网收费电子邮箱服务合同通用范本 使用指引:本合同文件可用于生活中两方或多方当事人之间在办理某事时,为了确定各自的权利和义务而订立,一旦签订完成需各自遵守其中的条文,参与合同的多方都受到合法的保护与限制。资料下载后可以进行自定义修改,可按照所需进行删减和使用。 互联网收费电子邮箱服务合同 互联网收费电子邮箱服务合同 编号:_________ 用户(甲方):__________ 公民身份号码:__________ 住所:___________ 联系电话:______________ 备用电子邮箱:__________ 服务商(乙方):_______________ 许可证号:______________ 住所:___________ 邮政编码:______________

SMTP协议RFC文档中文版

RFC821 简单邮件传输协议(SMTP) (RFC821 SIMPLE MAIL TRANSFER PROTOCOL) 目录 1. 介绍 2 2. SMTP模型 3 3. SMTP过程 4 3.1. MAIL 4 3.2. 转发 5 3.3. 确认和扩展 6 3.4. 发送信件(mailing)和获得信件(sending) 7 3.5. 打开和关闭7 3.6. 转发 8 3.7. 域9 3.8. 改变角色9 4. SMTP说明9 4.1. SMTP命令9 4.1.1. 命令语法9 4.1.2. COMMAND语法格式13 4.2. SMTP响应15 4.3. 命令和应答序列16 4.4. 状态图17 4.5. 详细内容18 4.5.1. 最小实现18 4.5.2. 透明性19 4.5.3. 大小19 附录 A TCP传输服务19 附录 B NCP传输服务20 附录 C NITS 20 附录 D X.25传输服务 20 附录 E 应答码构成方法20 附录 F 一些例子22 参考资料36 1. 介绍

简单邮件传输协议(SMTP)的目标是可靠高效地传送邮件,它独立于传送子系统而且仅要求一条可以保证传送数据单元顺序的通道。附录A,B,C和D描述了不同传送服务下SMTP的使用。在名词表中还定义了本文档中使用的术语。 SMTP的一个重要特点是它能够在传送中接力传送邮件,传送服务提供了进程间通信环境(IPCE),此环境可以包括一个网络,几个网络或一个网络的子网。理解到传送系统(或IPCE)不是一对一的是很重要的。进程可能直接和其它进程通过已知的IPCE通信。邮件是一个应用程序或进程间通信。邮件可以通过连接在不同IPCE上的进程跨网络进行邮件传送。更特别的是,邮件可以通过不同网络上的主机接力式传送。 2. SMTP模型 SMTP设计基于以下通信模型:针对用户的邮件请求,发送SMTP建立与接收SMTP之间建立一个双向传送通道。接收SMTP可以是最终接收者也可以是中间传送者。SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方面传送。 一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK 应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答。 SMTP提供传送邮件的机制,如果接收方与发送方连接在同一个传送服务下时,邮件可以直接由发送方主机传送到接收方主机;或者,当两者不在同一个传送服务下时,通过中继SMTP服务器传送。为了能够对SMTP服务器提供中继能力,它必须拥有最终目的主机地址和邮箱名称。 MAIL命令参数是回复路径,它指定邮件从何处来;而RCPT命令的参数是转发路径的,它指定邮件向何处去。向前路径是源路径,而回复路径是返回路径(它用于发生错误时返回邮件)。 当同一个消息要发往不同的接收者时,SMTP遇到了向不同接收者发送同一份数据的复制品的问题,邮件命令和应答有一个比较奇怪的语法,应答也有一个数字代码。在下面,例子中可以看到哪些使用实际的命令和应答。完整的命令和应答在第四节。 命令与应答对大小写不敏感,也就是说,命令和应答可以是大写,小写或两者的混合,但这一点对用户邮件名称却不一定是对的,因为有的主机对用户名大小写是敏感的。这样SMTP实现中就将用户邮箱名称保留成初始时的样子,主机名称对大小写不敏感。 命令与应答由ASCII字母表组成,当传送服务提供8位字节传送通道,每7位字符正确传送,而最高位被填充为0。当指定一般的命令或应答格式后,参数会由一些类似于语言的字符串表示出来,如""或"",这里尖括号表示这是一种类似于语言的变量。 3. SMTP过程 本节提供了SMTP中的一些过程。头一个说明的是基本发送过程(定义为发送操作)。下来描述向前传送邮件,确认邮箱名称和扩展邮件列表,发送到终端和打开关闭交换。在本节的最后是对中断,邮件域的说明。本节的例子只是一部分命令和应答的序列,完整的例子见附录F。 3.1. MAIL 在SMTP发送操作中有三步,操作由MAIL命令开始给出发送者标识。一系列或更多的RCPT命令紧跟其后,给出了接收者信息,然后是DATA命令列出发送的邮件内容,最后邮件内容指示符确认操作。

计算机网络应用 SMTP协议

计算机网络应用SMTP协议 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是一种电子邮件协议,它既具有客户端(发送方)发送邮件的功能,又具有服务器(接收方)接收邮件的功能。SMTP 协议允许将电子邮件从一个计算机邮件服务器发送到另一个计算机邮件服务器,并且SMTP 服务器接收本地用户发送的邮件,以便将其传输到互联网中其他邮件服务器上。 在互联网中,大多数计算机系统通过本地邮件系统服务器在本地按路径发送电子邮件。SMTP发送程序从输出邮件队列中得到邮件报文,通过多个TCP连接将邮件报文传输到目标主机的25号端口上。在发送过程中,SMTP接收程序必须能够证实本地邮件目的地址,并处理各种差错,包括传输差错以及没有足够接收空间等。 SMTP发送程序对报文的作用直到SMTP接收程序指示传输完成才结束,因此SMTP协议的作用范围仅限于SMTP发送程序和SMTP接收程序之间的对话过程。SMTP协议的主要功能是传送报文,为了保证正确传送报文,SMTP协议规定了14条命令和21种响应信息。其中,每条命令由一行文本组和四个字母的命令组成;而每一种响应信息由一个三位数据代码和简单的文字说明组成。下面介绍SMTP协议通信过程中,各阶段主要用到的命令和响应信息。 1.建立连接 邮件发送方将需要发送的邮件发送到邮件缓存中,SMTP发送程序将每隔一定时间对邮件缓存进行扫描。如果缓存有未发送的电子邮件,则使用SMTP程序端口号与目的计算机的SMTP服务器建立连接。 建立连接后,发送方将发送“220 Service ready(服务就绪)”的信息,并向SMTP服务器发送用来标识自己的HELLO命令。当接收方的SMTP程序接收到发送方所发送的信息后,则返回响应信息“250 OK(一切正常)”,以便接收发送方SMTP发送程序的身份标识。如果接收方的邮件服务器不可用,则返回响应信息“421 Service not available(服务不可用)”。2.传输邮件 当连接建立成功后,SMTP发送程序将向SMTP接收程序发送邮件报文信息。邮件报文传送包括以下三个逻辑阶段: ●用一个EAIL命令标识出邮件报文的发送方。例如,MAIL FROM: 。 ●用一个或者多个RCPT命令标识该邮件报文的接收方。例如,RCPT TO: <收信人电子 邮箱地址>。 ●用一个DATA命令标识该邮件报文的内容。 发送MAIL命令后,如果SMTP服务器已经做好接收邮件的准备,则返回响应信息“250 OK(一切正常)”。否则,返回有关无法接收邮件原因的响应信息,例如451(处理时出错)、452(存储空间不够)、500(命令无法识别)等。 RCPT命令标识邮件接收方的电子邮箱地址,多次使用该命令能够为邮件指定多个接收者,并且每个RCPT命令都会返回一个单独的响应信息。例如“550 No such user here(无此用户)”,即不存在此电子邮箱地址。RCPT命令的作用是:先检测SMTP接收服务器是否做好接收邮件的准备,然后在进行邮件传输。 3.关闭连接 邮件发送完毕后,发送方SMTP服务器程序将发送QUIT命令。当接收方SMTP服务器程序返回响应信息“211(服务关闭)”时,表明接收方SMTP服务器程序同意关闭TCP连接。

相关文档