简单说,SMTP是发邮件时所用到的协议。
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
SMTP 是一种提供可靠且有效电子邮件传输的协议。 SMTP 是建模在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。
SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。 SMTP 重要特性之一是其能跨越网络传输邮件,即“ SMTP 邮件中继”。通常,
SMTP
一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP 传输层协议组成。使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。
在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一跳 IP 地址。
在传输文件过程中使用25号端口
协议原理 SMTP-简单邮件传输协议(SimpleMailTransferProtocol),是定义邮件传输的协议,它是基于TCP服务的应用层协议,由RFC0821所定义。SMTP协议规定的命令是以明文方式进行的。为了说明SMTP的工作原理,我们以发送邮件为实例进行说明。
SMTP
DATA
354Entermail,endwith"."onalinebyitself
hello,Plstogettomeetu:)goodluck
.
2502.0.0e8I5j1M11204Messageacceptedfordelivery
SMTP
QUIT
Connectionclosedbyforeignhost.
其中黑体部分是输入的命令,其他内容是对方邮件服务器输出的状态信息。
这就是一个简单的发送邮件的会话过程,其实当使用outlookexpress等客户软件发送时,后台进行的交互也是这样的,当然,SMTP协议为了处理复杂的邮件发送情况如附件等等,定义了很多的命令及规定,具体可以通过阅读RFC821来获得。
当你的一个朋友向你发送邮件时,他的邮件服务器和你的邮件服务器通过SMTP协议通信,将邮件传递给你邮件地址所指示的邮件服务器上(这里假设你的本地邮件服务器是Linux系统),若你通过telnet协议直接登录到邮件服务器上,则可以使用mail等客户软件直接阅读邮件,但是若你希望使用本地的MUA(MailUserAgent,如outlookexpress等客户软件)来阅读邮件,则本地客户端通过POP3或IMAP协议与邮件服务器交互,将邮件信息传递到客户端(如:win98系统)。而如果你向你的朋友回复一封信件时,你所使用的MUA也是通过SMTP协议与邮件服务(一般为发送邮件地址对应的email地址)器通信,指示其希望邮件服务器帮助转发一封邮件到你朋友的邮件地址指定的邮件服务器中。若本地邮件服务器允许你通过它转发邮件,则服务器通过SMTP协议发送邮件到对方的邮件服务器。这就是接受和发送邮件的全部过程。
什么是mailRelay
邮件服务器一般具有一个或若干个域名(这些域名应该出现在某个配置文件内),邮件服务器在运行时将监听25号端口,等待远程的发送邮件的请求。网络上其他的mail服务器或者请求发送邮件的MUA(MailUserAgent,如outlookexpress、foxmail等等)会连接邮件服务器的25号端口,请求发送邮件,SMTP会话过程一般是从远程标识自己的身份开始,过程如下:
SMTP
域名并不一定是邮件接受服务器的所具有的本地域名,也就是说邮件目的可能不是上面协议交互中的接收方,而是邮件发送者希望接收邮件服务器帮助其转发邮件。这时候本地系统可能有两种回答,接受它:
250OK
或者拒绝接受它:
553sorry,.thatdomainisnotinmydomainlistofallowedrecphosts
第一种情况下,本地邮件服务器是允许relay的,它接收并同意传递一个目的地址不是本地的邮件;而第二种情况则不接收非本地邮件。
为什么不能配置邮件服务器为openrelay?
如果系统管理员将自己的邮件服务器设置为openrelay,将会导致一些垃圾邮件发送者将你的邮件服务器作为转发自圾邮件的中继站,这将使垃圾邮件的接收者将矛头对准你,可能会导致报复性的邮件攻击;垃圾邮件还能消耗你大量的资源,占用你的带宽。更为糟糕的事情可能是你的名字可能会上了黑名单,成为其他邮件接收者共同抵制的目标,你的邮件将被这些接收者所拒绝。
个人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协议是一个不错的协议,可是对它的扩展还是不可避免,本文主要说明了一种扩展方法,使用这种扩展方法,服务器和用户之间可以相互知道对方使用了扩展,使用了多少,如果进行通信。
以上内容转自:http://baike.baidu.com/view/5450.htm
分享到:
相关推荐
SMTP协议是互联网上电子邮件系统的核心,它定义了邮件服务器之间交换邮件的规则。通过SMTP,用户可以将邮件从一个服务器发送到另一个服务器,最终到达收件人的邮箱。易语言实现SMTP协议主要涉及以下几个关键概念: ...
#### SMTP协议简介 SMTP是一种基于TCP/IP的应用层协议,主要用于在计算机之间传输电子邮件。它的核心功能是规定了如何将一封邮件从发件人的地址传递到收件人的地址。SMTP协议的通信模型相对简单,主要涉及两个角色...
### SMTP协议核心知识点详解 #### 1. 引言 简单邮件传输协议(Simple Mail Transfer Protocol,简称SMTP)是一项互联网标准协议,旨在实现电子邮件的可靠、高效传输。它独立于具体的传输子系统,并且只需要一个能...
### SMTP协议分析实验知识点 #### 一、SMTP协议概述 简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)是用于在互联网上发送电子邮件的标准协议之一。SMTP最初由Jon Postel和Raymond L. Moon在1982年定义,并...
在这个场景下,"易语言简单SMTP协议源码"应该是指使用易语言编写的实现SMTP协议的程序代码。 SMTP协议的基本工作流程包括以下几个步骤: 1. **连接**:客户端首先与SMTP服务器建立TCP连接。 2. **HELO/EHLO**:...
### SMTP协议分析 #### 1. SMTP概述 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是互联网中用于电子邮件发送的基本协议之一。它的工作原理基于客户端/服务器模型(C/S模式),主要用于从发件人的...
易语言源码易语言简单SMTP协议源码.rar 易语言源码易语言简单SMTP协议源码.rar 易语言源码易语言简单SMTP协议源码.rar 易语言源码易语言简单SMTP协议源码.rar 易语言源码易语言简单SMTP协议源码.rar 易语言源码...
核心代码中,关键类`SmtpMail`用于实现SMTP协议的邮件发送,它可能包含多个子类或成员,如委托和事件来处理邮件发送过程的监控,确保邮件发送的正确性和可靠性。 在程序设计中,`SmtpMail`类会封装SMTP连接、认证、...
在C++编程环境中,实现SMTP协议通常涉及到以下几个关键知识点: 1. **SMTP连接**:首先,你需要建立一个TCP连接到SMTP服务器。这通常通过`socket`编程实现,使用`connect()`函数连接到服务器的特定端口(通常是25或...
Wireshark 抓包分析 POP3 和 SMTP 协议 Wireshark 是一个功能强大且免费的网络协议 analyzer,能够抓包并分析各种网络协议。在这个实验中,我们将使用 Wireshark 抓包分析 POP3 和 SMTP 协议。 一、POP3 协议...
**计算机网络课程设计报告:基于SMTP协议的模拟邮件系统** 本次课程设计的目标是构建一个模拟邮件系统,该系统基于SMTP(Simple Mail Transfer Protocol)协议,实现了邮件的发送和接收功能。设计内容包括用户注册...
SMTP 协议简介 SMTP(Simple Mail Transfer Protocol)是一种用于发送电子邮件的协议。SMTP 协议工作在应用层,使用 TCP 协议作为传输层协议。SMTP 协议使用 25 号端口作为默认端口。 Java Socket 实现 SMTP 协议 ...
SMTP协议的工作原理涉及多个关键步骤和概念,下面将对其进行详细的解析。 ### 1. SMTP协议的基本工作流程 SMTP协议通过TCP协议在端口25上进行数据传输,它主要由以下步骤组成: 1. **建立连接**:客户端(通常是...
在这个"smtp 协议实例"中,我们可以看到一个C++实现的SMTP邮件发送程序,这对于理解和实践SMTP协议以及C++编程具有很高的价值。 首先,我们来看核心文件`SMTP.cpp`,它可能包含了实现SMTP会话的主要逻辑。在SMTP...
Java 实现基于 SMTP 协议的邮件收发是一项常见的任务,尤其在开发自动化通知系统或者服务端消息传递时。SMTP(Simple Mail Transfer Protocol)是一种互联网标准,用于在邮件服务器之间发送电子邮件。以下将详细介绍...
实验报告请私聊-升级版见其它资源 关于要求:编程实现通过用户界面,用户登录信箱认证过程(含base64方式...这意味着除了使用SMTP协议发送邮件外,还需设计使用POP3协议接收邮件,在接收的时候采用黑白名单过滤的功能。
SMTP(Simple Mail Transfer ...总的来说,SMTP协议是电子邮件系统的核心部分,使得用户可以通过简单的命令与服务器进行交互,发送和接收邮件。了解SMTP协议的工作原理对于开发和维护邮件服务相关应用至关重要。
在这个系统中,Java Servlet作为客户端,通过SMTP协议与邮件服务器进行交互,实现邮件的自动化发送。 1. SMTP协议基础: SMTP是一个文本协议,主要用于在邮件服务器之间交换邮件。它定义了如何建立连接、发送命令...
在这个C++实现的SMTP模块中,我们关注的重点是如何通过编程的方式利用SMTP协议来发送邮件,特别是涉及到了身份验证这一重要环节。 首先,SMTP协议是基于TCP/IP的,它定义了客户端与邮件服务器之间的通信规则。在...
在Java编程中,我们可以利用JavaMail API来实现SMTP协议,从而实现邮件的发送功能。 JavaMail API是Java平台上的一个标准库,提供了一系列接口和类,用于处理邮件的创建、发送和接收。在实现SMTP协议时,主要涉及`...