王朝百科
分享
 
 
 

本地邮件传输协议

王朝百科·作者佚名  2010-01-18  
宽屏版  字体: |||超大  

本地邮件传输协议(Local Mail Transfer Protocol)

SMTP和SMTP服务扩展(ESMTP)提供了一种高效安全传送电子邮件的方法,而在实现SMTP时需要管理一个邮件传送队列,在有些时候这样做可能有麻烦,需要一种没有队列的邮件传送系统,而LMTP就是这样的一个系统,它使用ESMTP的语法,而它和ESMTP可不是一回事,而LMTP也不能用于TCP端口25。

前面已经说到了,SMTP需要管理一个队列,一个邮件操作可以把一封邮件发送向不同的接收者,而一个SMTP命令却只有一个返回码,这就带来的问题,如果服务器需要把一个邮件发向两个接收者,发送第一个的时候成功了,而发送第二个时候暂时失败了,服务器必须把这封邮件放入队列,以后再发送,而发送方却不可能知道这一切。SMTP的这种队列机制在最初设计时是为了考虑到转发的需要,但在有些时候,并不需要服务器管理这个队列,而需要由客户进行队列的管理,我们看一下下面这个例子:

上图中有三个独立的通信系统,三个方框内的就是,第一个是队列管理器,它是一个通常的SMTP服务器,第二个是使用非SMTP协议的邮件系统,邮件在这个系统内的传送由系统中的服务器来决定,而第三个是将邮件放入到一个邮件池的系统。可能用户希望将SMTP用于本地进程内通信通道,从队列管理器到传送代理间传送信息。如果需要传输代理管理它们自己的邮件队列就太麻烦了。

将邮件从本地传输代理传向队列管理器时使用LMTP不会有什么好处,但是在队列管理器传送邮件到本地传输代理时使用LMTP却十分有好处,因为这样接收者的邮件分别发送,而一封信件可以得到多个应答,这个应答指示相应的邮件是不是正确发送到接收者了。

LMTP协议与SMTP和ESMTP协议很象,除了本文内说明的一些命令改变外,其它和SMTP都一样。一个成功的RCPT命令被定义为返回确认完成应答码的RCPT命令。请注意:一般的成功命令都以2开头。为了避免和SMTP和ESMTP服务混淆,LMTP使用LHLO命令开始一个LMTP会话,它的基本语法和HELO和EHLO命令相同。对于DATA命令来说,如果RCPT命令失败,DATA命令必须返回503,并失败。每个DATA命令碰到"."时,服务器必须对所有成功的RCPT命令返回应答,这和平常的SMTP系统不同,而且顺序必须和RCPT成功的顺序一致,即使对于同一个向前路径来说有许多RCPT命令,也必须返回多个成功应答。这就意味着,服务器返回的确认应答是指服务器把邮件地发送到接收者或另一个转发代理,这一点一定要明确。下面是一个例子:(S代表服务器,C代表客户)

S: 220 foo.edu LMTP server ready //服务器准备好

C: LHLO foo.edu

S: 250-foo.edu

S: 250-PIPELINING

S: 250 SIZE

C: MAIL FROM:

S: 250 OK

C: RCPT TO:

S: 250 OK

C: RCPT TO:

S: 550 No such user here

C: RCPT TO:

S: 250 OK

C: DATA

S: 354 Start mail input; end with . //开始输出邮件内容,以回车,"."和回车结束

C: Blah blah blah... //邮件内容

C: ...etc. etc. etc. //邮件内容

C: .

S: 250 OK

S: 452 is temporarily over quota

C: QUIT //退出

S: 221 foo.edu closing connection //关闭连接

请注意:上面例子中的服务器和客户的域名是相同的,这是因为服务器和客户是同一个邮件系统的不同子系统。这里只介绍对于SMTP服务的相应内容,对于ESMPT的内容请参阅其它资料。

我们一定要清楚,LMTP和SMTP是不同的协议(虽然语法很象),所以它不能使用TCP端口25。服务器实现中必须实现PIPELINING和ENHANCEDSTATUSCODES ESMTP,也必须实现8BITMIME扩展功能。如果对于服务器来说,它能够快速响应向多个接收者传输邮件的要求,而且它能够给出多个应答时,不要使用LMTP协议;不要在广域网上使用LMTP协议;服务器必须尽快返回应答;客户必须在应答到达时处理,而不要在所有应答均到达时才处理,如果对于某些接收者的确认应答在关闭连接后到达,应该把这些应答看做是暂时失败应答。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有