?? lmtp協(xié)議規(guī)范.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0044)http://www.longen.org/L-R/detaill~r/LMTP.htm -->
<HTML><HEAD><TITLE>本地郵件傳輸協(xié)議</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD>
<BODY>
<TABLE width="100%" border=0>
<TBODY>
<TR>
<TD width="100%"><STRONG>本地郵件傳輸協(xié)議(Local Mail Transfer
Protocol)<BR></STRONG><BR>SMTP和SMTP服務擴展(ESMTP)提供了一種高效安全傳送電子郵件的方法,而在實現(xiàn)SMTP時需要管理一個郵件傳送隊列,在有些時候這樣做可能有麻煩,需要一種沒有隊列的郵件傳送系統(tǒng),而LMTP就是這樣的一個系統(tǒng),它使用ESMTP的語法,而它和ESMTP可不是一回事,而LMTP也不能用于TCP端口25。
<P>前面已經(jīng)說到了,SMTP需要管理一個隊列,一個郵件操作可以把一封郵件發(fā)送向不同的接收者,而一個SMTP命令卻只有一個返回碼,這就帶來的問題,如果服務器需要把一個郵件發(fā)向兩個接收者,發(fā)送第一個的時候成功了,而發(fā)送第二個時候暫時失敗了,服務器必須把這封郵件放入隊列,以后再發(fā)送,而發(fā)送方卻不可能知道這一切。SMTP的這種隊列機制在最初設計時是為了考慮到轉發(fā)的需要,但在有些時候,并不需要服務器管理這個隊列,而需要由客戶進行隊列的管理,我們看一下下面這個例子:</P>
<P align=center><IMG height=260 alt=LMTP傳送 src="LMTP協(xié)議規(guī)范.files/LMTP.gif"
width=355></P>
<P>上圖中有三個獨立的通信系統(tǒng),三個方框內(nèi)的就是,第一個是隊列管理器,它是一個通常的SMTP服務器,第二個是使用非SMTP協(xié)議的郵件系統(tǒng),郵件在這個系統(tǒng)內(nèi)的傳送由系統(tǒng)中的服務器來決定,而第三個是將郵件放入到一個郵件池的系統(tǒng)。可能用戶希望將SMTP用于本地進程內(nèi)通信通道,從隊列管理器到傳送代理間傳送信息。如果需要傳輸代理管理它們自己的郵件隊列就太麻煩了。</P>
<P>將郵件從本地傳輸代理傳向隊列管理器時使用LMTP不會有什么好處,但是在隊列管理器傳送郵件到本地傳輸代理時使用LMTP卻十分有好處,因為這樣接收者的郵件分別發(fā)送,而一封信件可以得到多個應答,這個應答指示相應的郵件是不是正確發(fā)送到接收者了。</P>
<P>LMTP協(xié)議與SMTP和ESMTP協(xié)議很象,除了本文內(nèi)說明的一些命令改變外,其它和SMTP都一樣。一個成功的RCPT命令被定義為返回確認完成應答碼的RCPT命令。請注意:一般的成功命令都以2開頭。為了避免和SMTP和ESMTP服務混淆,LMTP使用LHLO命令開始一個LMTP會話,它的基本語法和HELO和EHLO命令相同。對于DATA命令來說,如果RCPT命令失敗,DATA命令必須返回503,并失敗。每個DATA命令碰到"."時,服務器必須對所有成功的RCPT命令返回應答,這和平常的SMTP系統(tǒng)不同,而且順序必須和RCPT成功的順序一致,即使對于同一個向前路徑來說有許多RCPT命令,也必須返回多個成功應答。這就意味著,服務器返回的確認應答是指服務器把郵件地發(fā)送到接收者或另一個轉發(fā)代理,這一點一定要明確。下面是一個例子:(S代表服務器,C代表客戶)<BR><BR>S:
220 foo.edu LMTP server ready //服務器準備好<BR>C: LHLO foo.edu<BR>S:
250-foo.edu<BR>S: 250-PIPELINING<BR>S: 250 SIZE<BR>C: MAIL
FROM:<chris@bar.com><BR>S: 250 OK<BR>C: RCPT
TO:<pat@foo.edu><BR>S: 250 OK<BR>C: RCPT
TO:<jones@foo.edu><BR>S: 550 No such user here<BR>C: RCPT
TO:<green@foo.edu><BR>S: 250 OK<BR>C: DATA<BR>S: 354 Start mail
input; end with <CRLF>.<CRLF> //開始輸出郵件內(nèi)容,以回車,"."和回車結束<BR>C:
Blah blah blah... //郵件內(nèi)容<BR>C:
...etc. etc. etc. //郵件內(nèi)容<BR>C:
.<BR>S: 250 OK<BR>S: 452 <green@foo.edu> is temporarily over
quota <BR>C: QUIT
//退出<BR>S: 221 foo.edu closing connection
//關閉連接<BR><BR><BR>請注意:上面例子中的服務器和客戶的域名是相同的,這是因為服務器和客戶是同一個郵件系統(tǒng)的不同子系統(tǒng)。這里只介紹對于SMTP服務的相應內(nèi)容,對于ESMPT的內(nèi)容請參閱其它資料。</P>
<P>我們一定要清楚,LMTP和SMTP是不同的協(xié)議(雖然語法很象),所以它不能使用TCP端口25。服務器實現(xiàn)中必須實現(xiàn)PIPELINING和ENHANCEDSTATUSCODES
ESMTP,也必須實現(xiàn)8BITMIME擴展功能。如果對于服務器來說,它能夠快速響應向多個接收者傳輸郵件的要求,而且它能夠給出多個應答時,不要使用LMTP協(xié)議;不要在廣域網(wǎng)上使用LMTP協(xié)議;服務器必須盡快返回應答;客戶必須在應答到達時處理,而不要在所有應答均到達時才處理,如果對于某此接收者的確認應答在關閉連接后到達,應該把這些應答看做是暫時失敗應答。</P></TD></TR></TBODY></TABLE></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -