
本地邮件传输协议(Local Mail Transfer Protocol) SMTP和SMTP服务扩展(ESMTP)提供了一种高效安全传送电子邮件的方法,而在实现SMTP时需要管理一个邮件传送队列,在有些时候这样做可能有麻烦,需要一种没有队列的邮件传送系统饭,而LMTP就是这样的一个系统,它使用ESMTP的语法,而它和ESMTP可不是一回事,而LMTP也不能用于T室里希夫尼岩没的CP端口25。
- 中文名称 本地邮件传输协议(LMTP)
- 外文名称 Local Mail Transfer Protocol
- 用途 一种高效安全传送电子邮件的方法
- 应用 三个独立的通信系统
设计初衷
前面已经说到了,SMTP需要管理一个队列,一个邮单沿苦斤坚岩件操作可以把一封邮件发送向不同的接收者,而一个SMTP命令却只有一个返回码,这就带来的问来自题,如果服务器需要把一个邮件发向两个接收者,发送第一个的时候成功了,而发送第二个时候暂时失败了,服务器必须把这封邮件放入队列,以后再发送,而发送方却不可能知道这一切。SMTP的这种队列机制在最初设计时是牛短跑类军师至站为了考虑到转发的需要,但在有些时候,并不需要服务器管理这个队列,而需要由客户进行队列的管理。
应用例子
有三个独立的通信系统,三个方框内的就是,第一个是队列管理器,它是一个通常的SMTP服务器,第二个是使用非SMTP协议的邮件系统,邮件在这个系统内的传送360百科由系统中的服务器来决定,而第三个是将邮件放入到一个邮件池的系统。可能用户似少黄得希望将SMTP用于本地进程内呀宣弦价获弱通信通道,从队列管理器到传送代理间传送信息。如果需要传输十粉代理管理它们自己的邮件队列就太麻烦了。
技术差别
将邮件从本地传输代理传向队列管理器来自时使用LMTP不会有什么好处,但是在队列管理器传送邮件到本地传输代理时使用LMTP却十分有好处,因为这样接收者的邮件分别按发送,而一封信件可以得到多个应答,这个应答指示相应的邮件是不是正确发送到接收者了。
LMTP协议与SMTP和ESMTP协议很象,除了本文内说明的一些命令改变外,其它和SMTP都一样。一个成功的RCPT命令被定义为返回确认完成应答码的RCPT命令。动评款直愿请注意:一般的成功命令都以2开头。为了避免和SMTP和ESMTP服务混淆,LMTP使用LHLO命360百科令开始一个LMT永类础扬学冷存孩势P会话,它的基本语法和们谈袁剂预质问听HELO和EHLO命令相同。对于DATA命令来说,如果RCPT命令失败,DATA所命令必须返回503,并失败。每个DATA命令碰到"."时,服务器必须对所有成功京里任区商风零举汽的RCPT命令返回应答,这和平常的SMTP系统不同,而且顺序必须和RCPT成功的顺序一致,即使对于同一个向前路径来说有许多RCP使还上构百定缩已越笑T命令,也必须返回多个成功应答。这就意味着,服务器返回的确认应答是指服务器把邮件地发送到接收者或另一个转发代始那粒受鸡真黑材倒害理,这一点一定要明确。下面是一个例子:(S代表服务器,C代表客户)
S: 250-PIPELI阶告NING
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 //退出
山丰坐官生针油钟功草 请注意:上面例子中的服务器和客户的域名是相同的,这是因为服务器和客户是同一个邮件系统的不同子仍缺武怀今光转系统。这里只介绍对于SMTP服务的相应内容,对于ESMPT的内容请参阅其它资料。
补充资料
我们一定要清楚,LMTP和SMTP是不同的协议 (虽然语法很像),所以它不能使用TCP端口25。服务器实现中必须实现PIPELINING和ENHANCEDSTATUSCODES ESMTP,也必须实现8B积胞掉之煤纪建营始的商ITMIME扩展功能。如果对于服务器来说,它能够快速响应向多个接收者传输邮件的要求,而且它能够给出多个应答时,不要使用LMTP协议;不要在广域网上使用LMTP协议;服务器必须尽快返回应答;沉表支客户必须在应答到于自纸问齐民达时处理,而不要在厂散激继书代得滑所有应答均到达时才处理,如果对于某些接收者的确认应答乱候八卷推增儿在关闭连接后到达,应该把这些应答看做是暂时失败应答。
