SMTP简单邮件传输协议.docx

上传人:b****6 文档编号:13455135 上传时间:2023-06-14 格式:DOCX 页数:18 大小:54.03KB
下载 相关 举报
SMTP简单邮件传输协议.docx_第1页
第1页 / 共18页
SMTP简单邮件传输协议.docx_第2页
第2页 / 共18页
SMTP简单邮件传输协议.docx_第3页
第3页 / 共18页
SMTP简单邮件传输协议.docx_第4页
第4页 / 共18页
SMTP简单邮件传输协议.docx_第5页
第5页 / 共18页
SMTP简单邮件传输协议.docx_第6页
第6页 / 共18页
SMTP简单邮件传输协议.docx_第7页
第7页 / 共18页
SMTP简单邮件传输协议.docx_第8页
第8页 / 共18页
SMTP简单邮件传输协议.docx_第9页
第9页 / 共18页
SMTP简单邮件传输协议.docx_第10页
第10页 / 共18页
SMTP简单邮件传输协议.docx_第11页
第11页 / 共18页
SMTP简单邮件传输协议.docx_第12页
第12页 / 共18页
SMTP简单邮件传输协议.docx_第13页
第13页 / 共18页
SMTP简单邮件传输协议.docx_第14页
第14页 / 共18页
SMTP简单邮件传输协议.docx_第15页
第15页 / 共18页
SMTP简单邮件传输协议.docx_第16页
第16页 / 共18页
SMTP简单邮件传输协议.docx_第17页
第17页 / 共18页
SMTP简单邮件传输协议.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

SMTP简单邮件传输协议.docx

《SMTP简单邮件传输协议.docx》由会员分享,可在线阅读,更多相关《SMTP简单邮件传输协议.docx(18页珍藏版)》请在冰点文库上搜索。

SMTP简单邮件传输协议.docx

SMTP简单邮件传输协议

SMTP〔SimpleMailTransferProtocol〕即简单传输协议,它是一组用于由源地址到目的地址传送的规那么,由它来控制信件的中转方式。

SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。

通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。

SMTP服务器那么是遵循SMTP协议的发送服务器,用来发送或中转发出的电子。

详细简介

协议原理

个人SMTP服务器的配置方法

1.安装POP3和SMTP服务组件

2.配置POP3服务器

工作过程

安全和垃圾

服务扩展

通讯模型

通信安全

详细简介

协议原理

个人SMTP服务器的配置方法

1.安装POP3和SMTP服务组件

2.配置POP3服务器

工作过程

安全和垃圾

服务扩展

通讯模型

通信安全

展开

编辑本段详细简介

  SMTP是一种提供可靠且有效电子传输的协议。

SMTP是建模在FTP文件传输服务上的一种服务,主要用于传输系统之间的信息并提供来信有关的通知。

  SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。

SMTP重要特性之一是其能跨越网络传输,即“SMTP中继〞。

通常,

  

SMTP

一个网络可以由公用互联网上TCP可相互访问的主机、防火墙分隔的TCP/IP网络上TCP可相互访问的主机,与其它LAN/WAN中的主机利用非TCP传输层协议组成。

使用SMTP,可实现一样网络上处理机之间的传输,也可通过中继器或网关实现某处理机与其它网络之间的传输。

  在这种方式下,的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。

域名服务系统〔DNS〕的交换服务器可以用来识别出传输的下一跳IP地址。

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

编辑本段协议原理

  SMTP-简单传输协议〔SimpleMailTransferProtocol〕,是定义传输的协议,它是基于TCP服务的应用层协议,由RFC0821所定义。

SMTP协议规定的命令是以明文方式进展的。

为了说明SMTP的工作原理,我们以向163发送为实例进展说明。

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

交互过程如下:

  

SMTP

[lixnslix]$telnetsmtp.163.25

  220163.Anti-spamGTforCoremailSystem(163[071018])

  HELOsmtp.163.

  250OK

  authlogin

  334dXNlcm5hbWU6

  USERbase64加密后的用户名

  334UGFzc3dvcmQ6

  PASSbase64加密后的密码

  235Authenticationsuccessful

  MAILFROM:

##X163.

  250MailOK

  RCPTTO:

##X163.

  250MailOK

  DATA

  354Enddatawith.

  QUIT

  

SMTP

250MailOKqueuedassmtp5,D9GowLArizfIFTpIxFX8AA==.41385S21211766217

  HELO是客户向对方服务器发出的标识自己的身份的命令,这里假设发送者为ideal;MAILFROM命令用来表示发送者的地址;RCPTTO:

标识接收者的地址,这里表示希望发送给##X163.,如果接收者不是本地用户,例如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服务组件

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

  1.安装POP3服务组件

  以系统管理员身份登录WindowsServer2003系统。

依次进入“控制面板→添加或删除程序→添加/删除Windows组件〞,在弹出的“Windows组件向导〞对话框中选中“电子服务〞选项,点击“详细信息〞按钮,可以看到该选项包括两局部内容:

POP3服务和POP3服务Web管理。

为方便用户远程Web方式管理服务器,建议选中“POP3服务Web管理〞。

  2.安装SMTP服务组件

  选中“应用程序服务器〞选项,点击“详细信息〞按钮,接着在“Internet信息服务〔IIS〕〞选项中查看详细信息,选中“SMTPService〞选项,最后点击“确定〞按钮。

此外,如果用户需要对服务器进展远程Web管理,一定要选中“万维网服务〞中的“远程管理〔HTML〕〞组件。

完成以上设置后,点击“下一步〞按钮,系统就开始安装配置POP3和SMTP服务了。

配置POP3服务器

  1.创建域

  点击“开始→管理工具→POP3服务〞,弹出POP3服务控制台窗口。

选中左栏中的POP3服务后,点击右栏中的“新域〞,弹出“添加域〞对话框,接着在“域名〞栏中输入服务器的域名,也就是地址“〞后面的局部,

  2.创建用户

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

[1][2]完成POP3服务器的配置后,就可开始配置SMTP服务器了。

点击“开始→程序→管理工具→Internet信息服务〔IIS〕管理器〞,在“IIS管理器〞窗口中右键点击“默认SMTP虚拟服务器〞选项,在弹出的菜单中选中“属性〞,进入“默认SMTP虚拟服务器〞窗口,切换到“常规〞标签页,在“IP地址〞下拉列表框中选中服务器的IP地址即可。

点击“确定〞按钮,此时SMTP服务器默认的是匿名访问,打开切换到“访问〞标签页,点击“身份验证〞按钮,在对话框中去掉“匿名访问“选项,选中〞根本身份验证〔Basicauthentication〕“。

这样一个简单的服务器就架设完成了。

编辑本段工作过程

  简单传输协议〔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被认为是不现实的。

InternetMail2000就是一个替代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可以执行的程序的X围限制在smrsh目录之下。

  第一步:

  决定smrsh可以允许sendmail运行的命令列表。

缺省情况下应当包含以下命令,但不局限于这些命令:

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

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

  注意:

不可在命令列表里包括命令解释程序,例如sh

(1),csh

(1),perl

(1),uudecode

(1)与流编辑器sed

(1)。

  第二步:

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

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

  [rootdeep]#cd/etc/smrsh

  [rootdeep]#ln-s/bin/mailmail

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

  [rootdeep]#cd/etc/smrsh

  [rootdeep]#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-Unix,A=sh-c$u

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

  [rootdeep]#/etc/rc.d/init.d/sendmailrestart

  2、"/etc/aliases"文件

  如果没有加以正确和严格的管理的话,别名文件被用来获取特权。

例如,很多发行版本在别名文件中带有"decode"别名。

现在这种情况越来越少了。

  这样做的目的是为用户提供一个通过mail传输二进制文件的方便的方式。

在的发送地,用户把二进制文件用"uuencode"转换成ASCII格式,并把结果邮递给接收地"decode"别名。

那个别名通过管道把消息发送到"/usr/bin/uuencode"程序,由这个程序来完成从ASCII转回到原始的二进制文件的工作。

  删除"decode"别名。

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

要想使你的改变生效,需要运行:

  [rootdeep]#/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.cf"文件,修改一下这个配置文件,使你的服务器能够挡住欺骗。

  编辑"sendmail.cf"文件〔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=##L=##

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

  [rootdeep]#/etc/rc.d/init.d/sendmailrestart

  以上的更改将影响到Sendmail在接收一个连接时所显示的标志信息。

你应该把"`C=##L=##"条目中的"##"换成你所在的国家和地区代码。

后面的更改其实不会影响任何东西。

但这是"-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

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

  [rootdeep]#chmod0700/var/spool/mqueue

  注意:

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

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

  [userdeep]$/usr/bin/mailq

  Youarenotpermittedtoseethequeue

  SMTP

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

  通常,任何人都可以使用"-

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2