rfc821_簡單郵件傳輸協(xié)議 _第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  組織:中國互動(dòng)出版網(wǎng)(http://www.china-pub.com/)</p><p>  RFC文檔中文翻譯計(jì)劃(http://www.china-pub.com/compters/emook/aboutemook.htm)</p><p>  E-mail:ouyang@china-pub.com</p><p>  譯者:顧國飛(gg

2、fei ggfei@263.net)</p><p>  譯文發(fā)布時(shí)間:2001-3-30</p><p>  版權(quán):本中文翻譯文檔版權(quán)歸中國互動(dòng)出版網(wǎng)所有??梢杂糜诜巧虡I(yè)用途自由轉(zhuǎn)載,但必須保留本文檔的翻譯及版權(quán)信息。</p><p>  Network Working Group

3、 J. Postel</p><p>  Request for Comments: DRAFT ISI</p><p>  Replaces: RFC 788, 780, 772 August 1982</p><p>

4、;  RFC821-簡單郵件傳輸協(xié)議(SMTP)</p><p>  (RFC821 SIMPLE MAIL TRANSFER PROTOCOL)</p><p><b>  目錄</b></p><p><b>  1. 介紹2</b></p><p>  2. SMTP模型3</p&

5、gt;<p>  3. SMTP過程4</p><p>  3.1. MAIL4</p><p><b>  3.2. 轉(zhuǎn)發(fā)5</b></p><p>  3.3. 確認(rèn)和擴(kuò)展6</p><p>  3.4. 發(fā)送信件(mailing)和獲得信件(sending)7</p><

6、p>  3.5. 打開和關(guān)閉7</p><p><b>  3.6. 轉(zhuǎn)發(fā)8</b></p><p><b>  3.7. 域9</b></p><p>  3.8. 改變角色9</p><p>  4. SMTP說明9</p><p>  4.1. SMTP

7、命令9</p><p>  4.1.1. 命令語法9</p><p>  4.1.2. COMMAND語法格式13</p><p>  4.2. SMTP響應(yīng)15</p><p>  4.3. 命令和應(yīng)答序列16</p><p>  4.4. 狀態(tài)圖17</p><p>  4.5.

8、 詳細(xì)內(nèi)容18</p><p>  4.5.1. 最小實(shí)現(xiàn)18</p><p>  4.5.2. 透明性19</p><p>  4.5.3. 大小19</p><p>  附錄 A TCP傳輸服務(wù)19</p><p>  附錄 B NCP傳輸服務(wù)20</p><p>  附錄 C

9、NITS20</p><p>  附錄 D X.25傳輸服務(wù)20</p><p>  附錄 E 應(yīng)答碼構(gòu)成方法20</p><p>  附錄 F 一些例子22</p><p><b>  參考資料36</b></p><p><b>  1. 介紹</b></

10、p><p>  簡單郵件傳輸協(xié)議(SMTP)的目標(biāo)是可靠高效地傳送郵件,它獨(dú)立于傳送子系統(tǒng)而且僅要求一條可以保證傳送數(shù)據(jù)單元順序的通道。附錄A,B,C和D描述了不同傳送服務(wù)下SMTP的使用。在名詞表中還定義了本文檔中使用的術(shù)語。</p><p>  SMTP的一個(gè)重要特點(diǎn)是它能夠在傳送中接力傳送郵件,傳送服務(wù)提供了進(jìn)程間通信環(huán)境(IPCE),此環(huán)境可以包括一個(gè)網(wǎng)絡(luò),幾個(gè)網(wǎng)絡(luò)或一個(gè)網(wǎng)絡(luò)的子網(wǎng)。理

11、解到傳送系統(tǒng)(或IPCE)不是一對一的是很重要的。進(jìn)程可能直接和其它進(jìn)程通過已知的IPCE通信。郵件是一個(gè)應(yīng)用程序或進(jìn)程間通信。郵件可以通過連接在不同IPCE上的進(jìn)程跨網(wǎng)絡(luò)進(jìn)行郵件傳送。更特別的是,郵件可以通過不同網(wǎng)絡(luò)上的主機(jī)接力式傳送。</p><p>  2. SMTP模型 </p><p>  SMTP設(shè)計(jì)基于以下通信模型:針對用戶的郵件請求,發(fā)送SMTP建立與接收SMTP之間建立一

12、個(gè)雙向傳送通道。接收SMTP可以是最終接收者也可以是中間傳送者。SMTP命令由發(fā)送SMTP發(fā)出,由接收SMTP接收,而應(yīng)答則反方面?zhèn)魉汀?lt;/p><p>  一旦傳送通道建立,SMTP發(fā)送者發(fā)送MAIL命令指明郵件發(fā)送者。如果SMTP接收者可以接收郵件則返回OK應(yīng)答。SMTP發(fā)送者再發(fā)出RCPT命令確認(rèn)郵件是否接收到。如果SMTP接收者接收,則返回OK應(yīng)答;如果不能接收到,則發(fā)出拒絕接收應(yīng)答(但不中止整個(gè)郵件操作

13、),雙方將如此重復(fù)多次。當(dāng)接收者收到全部郵件后會(huì)接收到特別的序列,如果接收者成功處理了郵件,則返回OK應(yīng)答。</p><p>  SMTP提供傳送郵件的機(jī)制,如果接收方與發(fā)送方連接在同一個(gè)傳送服務(wù)下時(shí),郵件可以直接由發(fā)送方主機(jī)傳送到接收方主機(jī);或者,當(dāng)兩者不在同一個(gè)傳送服務(wù)下時(shí),通過中繼SMTP服務(wù)器傳送。為了能夠?qū)MTP服務(wù)器提供中繼能力,它必須擁有最終目的主機(jī)地址和郵箱名稱。</p><

14、p>  MAIL命令參數(shù)是回復(fù)路徑,它指定郵件從何處來;而RCPT命令的參數(shù)是轉(zhuǎn)發(fā)路徑的,它指定郵件向何處去。向前路徑是源路徑,而回復(fù)路徑是返回路徑(它用于發(fā)生錯(cuò)誤時(shí)返回郵件)。</p><p>  當(dāng)同一個(gè)消息要發(fā)往不同的接收者時(shí),SMTP遇到了向不同接收者發(fā)送同一份數(shù)據(jù)的復(fù)制品的問題,郵件命令和應(yīng)答有一個(gè)比較奇怪的語法,應(yīng)答也有一個(gè)數(shù)字代碼。在下面,例子中可以看到哪些使用實(shí)際的命令和應(yīng)答。完整的命令和應(yīng)

15、答在第四節(jié)。</p><p>  命令與應(yīng)答對大小寫不敏感,也就是說,命令和應(yīng)答可以是大寫,小寫或兩者的混合,但這一點(diǎn)對用戶郵件名稱卻不一定是對的,因?yàn)橛械闹鳈C(jī)對用戶名大小寫是敏感的。這樣SMTP實(shí)現(xiàn)中就將用戶郵箱名稱保留成初始時(shí)的樣子,主機(jī)名稱對大小寫不敏感。</p><p>  命令與應(yīng)答由ASCII字母表組成,當(dāng)傳送服務(wù)提供8位字節(jié)傳送通道,每7位字符正確傳送,而最高位被填充為0。當(dāng)

16、指定一般的命令或應(yīng)答格式后,參數(shù)會(huì)由一些類似于語言的字符串表示出來,如"<string>"或"<reverse-path>",這里尖括號表示這是一種類似于語言的變量。</p><p>  3. SMTP過程 </p><p>  本節(jié)提供了SMTP中的一些過程。頭一個(gè)說明的是基本發(fā)送過程(定義為發(fā)送操作)。下來描述向前傳送郵件

17、,確認(rèn)郵箱名稱和擴(kuò)展郵件列表,發(fā)送到終端和打開關(guān)閉交換。在本節(jié)的最后是對中斷,郵件域的說明。本節(jié)的例子只是一部分命令和應(yīng)答的序列,完整的例子見附錄F。</p><p><b>  3.1. MAIL</b></p><p>  在SMTP發(fā)送操作中有三步,操作由MAIL命令開始給出發(fā)送者標(biāo)識。一系列或更多的RCPT命令緊跟其后,給出了接收者信息,然后是DATA命令列出

18、發(fā)送的郵件內(nèi)容,最后郵件內(nèi)容指示符確認(rèn)操作。</p><p>  過程中的第一步是MAIL命令,< reverse-path >包括源郵箱。</p><p>  MAIL <SP> FROM:<reverse-path> <CRLF></p><p>  此命令告訴接收者新的發(fā)送操作已經(jīng)開始,請復(fù)位所有狀態(tài)表和緩沖區(qū)。

19、它給出反向路徑以進(jìn)行錯(cuò)誤信息返回。如果請求被接收,接收方返回一個(gè)250 OK應(yīng)答。<reverse-path>中不止包括了郵箱,它包括了主機(jī)和源郵箱的反向路由,其中的第一個(gè)主機(jī)就是發(fā)送此命令的主機(jī)。</p><p>  過程中的第二步是發(fā)送RCPT命令。</p><p>  RCPT <SP> TO:<forward-path> <CRLF>

20、</p><p>  此命令給出向前路徑標(biāo)識接收者,如果命令被接收,接收方返回一個(gè)250 OK應(yīng)答,并存儲(chǔ)向前路徑。如果接收者未知,接收方會(huì)返回一個(gè)550 Failure應(yīng)答。此過程可能會(huì)重復(fù)若干次。</p><p>  <forward-path>不僅包括郵件,它是主機(jī)和目的郵箱的路由表,在其中的第一個(gè)主機(jī)就是接收命令的主機(jī)。 過程中的第三步是發(fā)送DATA命令。</p&

21、gt;<p>  DATA <CRLF></p><p>  如果命令被接收,接收方返回一個(gè)354 Intermediate應(yīng)答,并認(rèn)定以下的各行都是信件內(nèi)容。當(dāng)信件結(jié)尾收到并存儲(chǔ)后,接收者發(fā)送一個(gè)250 OK應(yīng)答。因?yàn)猷]件是在傳送通道上發(fā)送,因此必須指明郵件內(nèi)容結(jié)尾,以便應(yīng)答對話可以重新開始。SMTP通過在最后一行僅發(fā)送一個(gè)句號來表示郵件內(nèi)容的結(jié)束,在接收方,一個(gè)對用戶透明的過程將此符

22、號過濾掉,以不影響正常的數(shù)據(jù)。</p><p>  注意:郵件內(nèi)容包括如下提示:Date, Subject, To, Cc, From。</p><p>  郵件內(nèi)容指示符確認(rèn)郵件操作并告知接收者可以存儲(chǔ)和再發(fā)送數(shù)據(jù)了。如果此命令被接收,接收方返回一個(gè)250 OK應(yīng)答。DATA命令僅在郵件操作未完成或源無效的情況下失敗。</p><p>  上面所述的過程是一個(gè)發(fā)送

23、操作。這些命令只能以上面的順序使用。下例表示了在一個(gè)發(fā)送操作中這些命令的使用。</p><p>  SMTP過程例子 此例是在Alpha.ARPA主機(jī)的Smith發(fā)送郵件給Beta.ARPA主機(jī)的Jones,Green和Brown的,這里假定主機(jī)Alpha與主機(jī)Beta直接相連。</p><p>  S: MAIL FROM:<Smith@Alpha.ARPA></p&g

24、t;<p><b>  R: 250 OK</b></p><p>  S: RCPT TO:<Jones@Beta.ARPA></p><p><b>  R: 250 OK</b></p><p>  S: RCPT TO:<Green@Beta.ARPA></p>

25、<p>  R: 550 No such user here</p><p>  S: RCPT TO:<Brown@Beta.ARPA></p><p><b>  R: 250 OK</b></p><p><b>  S: DATA</b></p><p>  R: 35

26、4 Start mail input; end with <CRLF>.<CRLF></p><p>  S: Blah blah blah...</p><p><b>  S: ...等等</b></p><p>  S: <CRLF>.<CRLF></p><p>&

27、lt;b>  R: 250 OK</b></p><p>  此信被前兩個(gè)人接收,而第三個(gè)人在此主機(jī)上沒有郵箱。</p><p><b>  3.2. 轉(zhuǎn)發(fā) </b></p><p>  下面是一些<forward-path>中目的地址不正確的,但接收者知道正確的目的地址的例子。在這些例子中,下列應(yīng)答之一應(yīng)該允許發(fā)

28、送方與獲得正確地址。</p><p>  251:用戶不在本地;將向前發(fā)送到<forward-path>。</p><p>  這個(gè)應(yīng)答意味著,接收方SMTP知道用戶的郵箱在另外的主機(jī)上,而且意味著將在未來使用正確的轉(zhuǎn)向路徑。請注意,主機(jī)或者用戶,或者它們兩者是不同的。接收方負(fù)責(zé)傳送消息。</p><p>  551 :用戶非本地,請嘗試<forw

29、ard-path></p><p>  這個(gè)應(yīng)答意味著接收SMTP知道用戶的郵箱在另外的主機(jī)上,并意味著使用了正確的轉(zhuǎn)發(fā)路徑。注意請注意,主機(jī)或者用戶,或者它們兩者是不同的。接收方拒絕接收此用戶的信件,發(fā)送者必須根據(jù)提供的信息重新發(fā)送或者向原發(fā)送者返回錯(cuò)誤信息。 下例顯示了這些響應(yīng)的應(yīng)用。</p><p><b>  轉(zhuǎn)發(fā)的例子</b></p>&

30、lt;p>  S: RCPT TO:<Postel@USC-ISI.ARPA></p><p>  R: 251 User not local; will forward to <Postel@USC-ISIF.ARPA></p><p><b>  或者</b></p><p>  S: RCPT TO:<

31、Paul@USC-ISIB.ARPA></p><p>  R: 551 User not local; please try <Mockapetris@USC-ISIF.ARPA></p><p>  3.3. 確認(rèn)和擴(kuò)展</p><p>  SMTP提供了另外的確認(rèn)用戶名和擴(kuò)展郵件列表的功能。這些功能由VREF和EXPN命令完成,它們都以字符串

32、為參數(shù)。對于VREF命令,字符串參數(shù)指的是用戶名,對此命令的響應(yīng)要包括用戶的命名和用戶的郵箱。對于EXPN命令,字符串參數(shù)指的是郵件列表,對此命令的響應(yīng)多于一個(gè),它們要包括所有列表中用戶的命名和他們的郵箱。</p><p>  “用戶名”是一個(gè)多余的項(xiàng)目,它是故意被加上的。如果主機(jī)采用VREF命令和EXPN命令,最后本地郵箱必須提供用戶名使它被主機(jī)確認(rèn)。如果主機(jī)選擇由另外的字符串作為用戶名,也是允許的。</

33、p><p>  在一些主機(jī)中,郵箱列表和一個(gè)郵箱的代名有一點(diǎn)不清楚,因?yàn)橐话愕臄?shù)據(jù)結(jié)構(gòu)可能包括兩種類型的入口。如果要發(fā)出對郵件列表的確認(rèn),應(yīng)該給出確定響應(yīng)。在接收到這個(gè)消息后,主機(jī)將把郵件傳送到列表上所有的地址上去,如果沒有接收到確定響應(yīng),就會(huì)報(bào)告錯(cuò)誤。例如,"550 That is a mail list, not a user name"。如果請求用于擴(kuò)展一個(gè)用戶名,可能通過返回包括一個(gè)名字的

34、列表來形成確定響應(yīng),如果沒有接收到確定響應(yīng),就會(huì)報(bào)告錯(cuò)誤。(例如, "550 That is a user name, not a mailing list")。</p><p>  在多個(gè)響應(yīng)的情況下(通常是對于EXPN而言的),每個(gè)應(yīng)答指定一個(gè)郵箱。在模糊請求的情況下,例如"VRFY Smith",這里兩個(gè)Smith的響應(yīng)必須是"553 User ambigu

35、ous"。</p><p>  確認(rèn)用戶名的情況如下例所示:例3:</p><p><b>  確認(rèn)用戶名</b></p><p>  S: VRFY Smith R: 250 Fred Smith <Smith@USC-ISIF.ARPA></p><p><b>  或者</b&

36、gt;</p><p>  S: VRFY Smith</p><p>  R: 251 User not local; will forward to <Smith@USC-ISIQ.ARPA></p><p><b>  或者</b></p><p>  S: VRFY Jones</p>

37、<p>  R: 550 String does not match anything.</p><p><b>  或者</b></p><p>  S: VRFY Jones</p><p>  R: 551 User not local; please try <Jones@USC-ISIQ.ARPA></p&

38、gt;<p><b>  或者</b></p><p>  S: VRFY Gourzenkyinplatz</p><p>  R: 553 User ambiguous.</p><p>  郵箱列表要求多個(gè)響應(yīng)的情況如下例所示:</p><p>  S: EXPN Example-People<

39、/p><p>  R: 250-Jon Postel <Postel@USC-ISIF.ARPA></p><p>  R: 250-Fred Fonebone <Fonebone@USC-ISIQ.ARPA></p><p>  R: 250-Sam Q. Smith <SQSmith@USC-ISIQ.ARPA></p>

40、;<p>  R: 250-Quincy Smith <@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA></p><p>  R: 250-<joe@foo-unix.ARPA></p><p>  R: 250 <xyz@bar-unix.ARPA></p><p><b>  

41、或者</b></p><p>  S: EXPN Executive-Washroom-List</p><p>  R: 550 Access Denied to You.</p><p>  VERF和EXPN命令的字符串命令參數(shù)因?yàn)榫唧w實(shí)現(xiàn)的不同而不能再加以限制了。在一些系統(tǒng)上,EXPN命令的參數(shù)可能是一個(gè)包含郵件列表的文件名,但是在Interne

42、t上有許多不同的文件結(jié)構(gòu)。</p><p>  VRFY和EXPN命令在最小實(shí)現(xiàn)中并不包括,當(dāng)它們實(shí)現(xiàn)時(shí),它們也不要求被在傳送間實(shí)現(xiàn)?!?lt;/p><p>  3.4. 發(fā)送信件(mailing)和獲得信件(sending) </p><p>  SMTP的主要目的是將郵件發(fā)送到用戶的郵箱中。由一些主機(jī)提供的類似的功能是把郵件送至用戶的終端(如果用戶正打開終端)。將郵

43、件送到用戶的郵箱中稱為發(fā)送信件(mailing);而送至用戶終端則稱之為獲得信件(sending)。因?yàn)樵谝恍┲鳈C(jī)上,這兩者的實(shí)現(xiàn)十分類似,所以它們同時(shí)被放入了SMTP中。然而,獲得信件命令在SMTP的最小實(shí)現(xiàn)中是沒有的。用戶應(yīng)該具有控制向終端上寫信息的能力。大部分主機(jī)允許用戶接受或者拒絕類似的信息。</p><p>  下面三個(gè)命令被定義來支持獲得信件。它們被用于郵件命令而不是MAIL命令,指示接收SMTP這種

44、操作的特殊意義:</p><p>  SEND <SP> FROM:<reverse-path> <CRLF></p><p>  SEND命令要求郵件內(nèi)容直接傳送到用戶終端。如果用戶未打開終端(或者未接收終端信息),450響應(yīng)將返回一個(gè)RCPT命令。如果信息被成功發(fā)送,此操作成功。 </p><p>  SOML <SP&

45、gt; FROM:<reverse-path> <CRLF> </p><p>  Send或者M(jìn)aiL命令要求將郵件內(nèi)容直接發(fā)送到用戶的終端上(如果用戶在終端上)。如果用戶不在終端上,郵件內(nèi)容直接進(jìn)入郵箱。如果郵件被發(fā)送到用戶終端或者用戶信箱,發(fā)送操作成功?!?lt;/p><p>  SAML <SP> FROM:<reverse-path>

46、<CRLF></p><p>  Send和MaiL命令要求郵件內(nèi)容直接發(fā)送到用戶終端上(如果用戶在終端上)。不管怎么樣,信件都會(huì)進(jìn)入信箱。如果信件進(jìn)入信箱,發(fā)送操作成功。</p><p>  用于MAIL命令的響應(yīng)和這些命令的響應(yīng)相同。  </p><p>  3.5. 打開和關(guān)閉 </p><p>  當(dāng)打開傳送通道時(shí),要交換

47、一些信息以確定雙方的身份。以下的命令是用于打開和關(guān)閉的:</p><p>  HELO <SP> <domain> <CRLF></p><p>  QUIT <CRLF></p><p>  在HELLO命令中,主機(jī)自己發(fā)送命令,此命令可以被解釋為:“你好,我是XX”。</p><p><

48、;b>  打開聯(lián)結(jié)的例子</b></p><p>  R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready</p><p>  S: HELO USC-ISIF.ARPA</p><p>  R: 250 BBN-UNIX.ARPA</p><p><b>

49、  關(guān)閉聯(lián)結(jié)的例子</b></p><p><b>  S: QUIT</b></p><p>  R: 221 BBN-UNIX.ARPA Service closing transmission channel</p><p><b>  3.6. 轉(zhuǎn)發(fā)</b></p><p>  

50、轉(zhuǎn)發(fā)路徑可能是如下格式:"@ONE,@TWO:JOE@THREE",在這里,ONE,TWO和THREE是主機(jī)。這種格式用于強(qiáng)調(diào)地址和路徑的區(qū)別。郵箱是絕對地址,路徑是關(guān)于如何到達(dá)的信息。這兩個(gè)概念不應(yīng)該被混淆。</p><p>  概念上,轉(zhuǎn)發(fā)路徑的元素被移動(dòng)到回復(fù)路徑作為從一個(gè)SMTP服務(wù)器到另一個(gè)SMTP服務(wù)器的信息?;貜?fù)路徑是一個(gè)反向數(shù)據(jù)源路徑,例如從當(dāng)前信息的位置到發(fā)起者的位置。當(dāng)一個(gè)

51、SMTP服務(wù)器從轉(zhuǎn)發(fā)路徑中刪除自己的標(biāo)記并將它插入到回復(fù)路徑中時(shí),它必須使用它發(fā)送環(huán)境能夠理解的名稱來進(jìn)行,以防它的名稱在不同的環(huán)境中被理解為不同的名字。</p><p>  如果當(dāng)SMTP接收到信息的轉(zhuǎn)發(fā)路徑的第一個(gè)元素不是此SMTP的標(biāo)記時(shí),此元素不從轉(zhuǎn)發(fā)路徑中刪除,而被用來決定下一個(gè)應(yīng)該發(fā)送到的SMTP服務(wù)器。在任何情況下,SMTP都將自己的標(biāo)記加入反向路徑中。</p><p>  

52、使用源路徑時(shí),接收SMTP接收轉(zhuǎn)發(fā)的郵件并發(fā)送到另一接收SMTP服務(wù)器上。接收服務(wù)器可以接受或拒絕轉(zhuǎn)發(fā)本地用戶的郵件。接收SMTP通過將它自己的標(biāo)記從轉(zhuǎn)發(fā)路徑移至回復(fù)路徑的開始處來改變命令參數(shù)。這時(shí),接收SMTP變成了發(fā)送SMTP,也就建立了到下一個(gè)轉(zhuǎn)發(fā)路徑中SMTP的通道,然后,它向這個(gè)SMTP發(fā)送郵件。</p><p>  在回復(fù)路徑上的頭一個(gè)主機(jī)應(yīng)是發(fā)送SMTP命令的主機(jī),在轉(zhuǎn)發(fā)路徑上第一個(gè)主機(jī)應(yīng)是接收SM

53、TP命令的主機(jī)。</p><p>  注意:轉(zhuǎn)發(fā)路徑和回復(fù)路徑出現(xiàn)在SMTP命令和應(yīng)答中,但不一定要出現(xiàn)在信息中。也就是說,沒有必須要這樣的路徑特別這種格式出現(xiàn)在信息頭的"To:","From:"和"CC:"等域中。</p><p>  如果SMTP服務(wù)器接受了轉(zhuǎn)發(fā)任務(wù),但后來它發(fā)現(xiàn)因?yàn)檗D(zhuǎn)發(fā)路徑不正確或者其它原理無法發(fā)送郵件,它必

54、須建立一"undeliverable mail"信號,將它此信號送到此信的發(fā)主者那里。</p><p>  此信號必須是從此主機(jī)的SMTP服務(wù)上發(fā)出的,當(dāng)然了,此服務(wù)器不應(yīng)該再報(bào)告出錯(cuò)信息的錯(cuò)誤。一種阻止這種出錯(cuò)報(bào)告循環(huán)的情況是在信號的郵件命令的回復(fù)路徑上置空。在傳送此信息時(shí),允許將回復(fù)路徑也置為空。一個(gè)MAIL命令后的回復(fù)路徑為空表現(xiàn)為如下形式:</p><p>  

55、MAIL FROM:<></p><p>  下例中顯示了不可傳送的郵件信息。此信息是對從HOSTW上的JOE發(fā)出的郵件經(jīng)過在HOSTX需要經(jīng)過HOSTZ到達(dá)HOSTY時(shí)出錯(cuò)的回應(yīng)。我們看到的例子是在HOSTX和HOSTY之間發(fā)生的。</p><p>  不可傳送郵件信息的例子</p><p>  S: MAIL FROM:<></p&

56、gt;<p><b>  R: 250 ok</b></p><p>  S: RCPT TO:<@HOSTX.ARPA:JOE@HOSTW.ARPA></p><p><b>  R: 250 ok</b></p><p><b>  S: DATA</b></p&g

57、t;<p>  R: 354 send the mail data, end with .</p><p>  S: Date: 23 Oct 81 11:22:33</p><p>  S: From: SMTP@HOSTY.ARPA</p><p>  S: To: JOE@HOSTW.ARPA</p><p>  S: S

58、ubject: Mail System Problem</p><p><b>  S:</b></p><p>  S: Sorry JOE, your message to SAM@HOSTZ.ARPA lost.</p><p>  S: HOSTZ.ARPA said this:</p><p>  S: &qu

59、ot;550 No Such User"</p><p><b>  S: .</b></p><p><b>  R: 250 ok</b></p><p><b>  3.7. 域 </b></p><p>  域是最近被引入ARPA Internet郵件系統(tǒng)的。

60、使用域可以使地址空間從一個(gè)平面的普通字符串主機(jī)名變成全局地址的一個(gè)層次結(jié)構(gòu)。主機(jī)由一個(gè)域名取代,起始主機(jī)是由一系列元串組成,它們由逗號按最特殊到一般的順序排列。</p><p>  例如,"USC-ISIF.ARPA","Fred.Cambridge.UK"和"PC7.LCS.MIT.ARPA"可能是主機(jī)-域標(biāo)識符。</p><p&g

61、t;  無論域名在SMTP中如何使用,只有正式的名稱才可以被使用,不可以使用假名或昵稱。</p><p><b>  3.8. 改變角色</b></p><p>  TURN命令可以用來改變在傳輸信道上通信的程序的角色。如果程序A現(xiàn)在是發(fā)送SMTP,它發(fā)送TURN命令并接到OK應(yīng)答(250)后,它就變?yōu)榻邮誗MTP了。同理,程序B也可以從接收SMTP變?yōu)榘l(fā)送SMTP。

62、若要拒絕改變角色,接收方可以發(fā)送502作為應(yīng)答。</p><p>  注意:此命令是可選的。在使用TCP的傳輸信道時(shí),一般不使用此命令。然而,當(dāng)建立傳輸信道的代價(jià)比較大時(shí),此命令很有用。例如,此命令可以支持一般公共交換電話系統(tǒng)作為傳輸信道。</p><p>  4. SMTP說明 </p><p>  4.1. SMTP命令 </p><p>

63、;  4.1.1. 命令語法 </p><p>  SMTP命令定義了郵件傳輸或由用戶定義的系統(tǒng)功能。它的命令是由<CRLF>結(jié)束的字符串。而在帶有參數(shù)的情況下,命令本身由<SP>和參數(shù)分開,如果未帶參數(shù)可以直接和<CRLF>連接。郵箱的語法格式必須和接收站點(diǎn)的格式一致。下面討論SMTP命令和應(yīng)答。</p><p>  發(fā)送郵件操作涉及到不同的數(shù)據(jù)對象,

64、它們由不同的參數(shù)相互連接?;貜?fù)路徑就是MAIL命令的參數(shù),而轉(zhuǎn)發(fā)路徑則是RCPT命令的參數(shù),郵件日期是DATA命令的參數(shù)。這些參數(shù)或者數(shù)據(jù)對象必須跟在命令后。這種模式也就要求有不同的緩沖區(qū)來存儲(chǔ)這些對象,也就是說,有一個(gè)回復(fù)路徑緩沖區(qū),一個(gè)轉(zhuǎn)發(fā)路徑緩沖區(qū),一個(gè)郵件內(nèi)容緩沖區(qū)。特定的命令產(chǎn)生自己的緩沖區(qū),或使一個(gè)或多個(gè)緩沖的內(nèi)容被清除。</p><p>  HELLO (HELO)</p><p

65、>  此命令用于向接收SMTP確認(rèn)發(fā)送SMTP。參數(shù)域包括發(fā)送SMTP的主機(jī)名。接收SMTP通過連接確認(rèn)命令來向發(fā)送SMTP確認(rèn)接收SMTP。引命令和OK響應(yīng)確認(rèn)發(fā)送和接收SMTP進(jìn)入了初始狀態(tài),也就是說,沒有操作正在執(zhí)行,所有狀態(tài)表和緩沖區(qū)已經(jīng)被子清除。</p><p>  MAIL (MAIL) </p><p>  此命令用于開始將郵件發(fā)送到一個(gè)多個(gè)郵箱中。參數(shù)域包括回復(fù)路徑。

66、返回路徑中包括了可選的主機(jī)和發(fā)送者郵箱列表。當(dāng)有主機(jī)列表時(shí),它是一個(gè)回復(fù)路徑源,它說明此郵箱是由在表中的主機(jī)一一傳遞發(fā)送(第一個(gè)主機(jī)是最后一個(gè)接收到此郵件的主機(jī))過來的。此表也有作向發(fā)送者返回非傳遞信號的源路徑。因?yàn)槊總€(gè)傳遞主機(jī)地址都被加在此表起始處,它就必須使用發(fā)送IPCE而不是接收IPCE(如果它們不是一個(gè)IPCE的話)清楚的名稱。一些出錯(cuò)信息的回復(fù)路徑可能就是空的。</p><p>  此命令清除回復(fù)路徑緩

67、沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū),并且將此命令的回復(fù)路徑信息插入到回復(fù)路徑緩沖區(qū)中。</p><p>  RECIPIENT (RCPT)</p><p>  此命令用于確定郵件內(nèi)容的唯一接收者;多個(gè)接收者將由多個(gè)此命令指定。轉(zhuǎn)發(fā)路徑中包括一個(gè)可選的主機(jī)和一個(gè)必須的目的郵箱。當(dāng)出現(xiàn)主機(jī)列表時(shí),這就是一個(gè)源路徑,它指明郵件必須向列表中的上一個(gè)主機(jī)發(fā)送。如果接收SMTP未實(shí)現(xiàn)郵件的傳遞發(fā)送

68、,就會(huì)返回如未知本地用戶(550)的信息給用戶。</p><p>  當(dāng)郵件被傳遞發(fā)送時(shí),傳遞主機(jī)必須將自己的名稱由轉(zhuǎn)發(fā)路徑的開始處移至回復(fù)路徑的結(jié)束處。當(dāng)郵件最終到達(dá)目的地時(shí),接收SMTP將以它的主機(jī)郵件格式自己的名稱插入目標(biāo)郵件中。例如,由傳遞主機(jī)A接收的帶有如下參數(shù)的郵件時(shí),</p><p>  FROM:<USERX@HOSTY.ARPA></p><

69、;p>  TO:<@HOSTA.ARPA,@HOSTB.ARPA:USERC@HOSTD.ARPA></p><p><b>  將會(huì)變成如下形式:</b></p><p>  FROM:<@HOSTA.ARPA:USERX@HOSTY.ARPA></p><p>  TO:<@HOSTB.ARPA:USER

70、C@HOSTD.ARPA>.</p><p>  此命令導(dǎo)致它的轉(zhuǎn)發(fā)路徑參數(shù)加入轉(zhuǎn)發(fā)路徑緩沖區(qū)中。</p><p>  DATA (DATA)</p><p>  接收者將跟在命令后的行作為郵件內(nèi)容。此命令導(dǎo)致此命令后的郵件內(nèi)容加入郵件內(nèi)容緩沖區(qū)。郵件內(nèi)容可以包括所有128個(gè)ASCII碼字符。郵件內(nèi)容由只包括一個(gè)句號的行結(jié)束,也就是如下的字符序列:"

71、<CRLF>.<CRLF>",它指示了郵件的結(jié)束。</p><p>  郵件內(nèi)容的結(jié)束指示要求接收者現(xiàn)在就處理保存的郵件內(nèi)容。此過程將回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū)的內(nèi)容全部清空。如果操作成功,接收者必須返回OK應(yīng)答;如果失敗也必須返回失敗應(yīng)答。</p><p>  當(dāng)接收SMTP收到一條信息時(shí),無論是用作轉(zhuǎn)發(fā)還是此郵件已經(jīng)到達(dá)目的地,它都

72、必須在郵件內(nèi)容的開始處加上時(shí)間戳這一行,這一行指示了接收到郵件主機(jī)和發(fā)出此郵件主機(jī)的標(biāo)識,以及接收到郵件內(nèi)容的時(shí)間和日期。轉(zhuǎn)發(fā)的信件將有多行這樣的時(shí)間戳。當(dāng)接收SMTP作最后一站的傳送時(shí),它將返回路徑信息行插入郵件中。此行包括了發(fā)送命令中的<reverse-path>的信息。在這里,最后一站的傳送的意思是郵件將被送到目的用戶手中,但在一些情況下,郵件可能需要更進(jìn)一步的加工并由另外的郵件系統(tǒng)傳送。</p><

73、;p>  可能在返回路徑中的郵箱與實(shí)際發(fā)送的郵件不一致,這個(gè)情況可能發(fā)生在需要傳送一個(gè)特定的錯(cuò)誤處理信箱而不是信件發(fā)送者那里。上面所述說明了,最后的郵件內(nèi)容由一個(gè)返回路徑行,和在其后的一個(gè)或多個(gè)時(shí)間戳行構(gòu)成。這些行后面是郵件內(nèi)容的頭和體信息。</p><p>  當(dāng)處理后面的郵件數(shù)據(jù)指示部分成功時(shí)就需要特定的說明。這種情況可能發(fā)生在發(fā)送SMTP發(fā)現(xiàn)當(dāng)郵件需要傳送給多個(gè)用戶時(shí),只能夠成功地向其中的一部分發(fā)送信

74、息這種情況下。在這種情況下,必須對DATA命令發(fā)送OK應(yīng)答,而接收SMTP組織并發(fā)送一個(gè)"不可傳遞郵件"信息到信息的發(fā)送者。在此信息中或者發(fā)送一個(gè)不成功接收者的列表,或者每次發(fā)送一個(gè)不成接收者,而發(fā)送多次。所有不可傳遞郵件信息由MAIL命令發(fā)送。</p><p>  返回路徑和接收時(shí)間戳例子</p><p>  Return-Path: <@GHI.ARPA,@D

75、EF.ARPA,@ABC.ARPA:JOE@ABC.ARPA></p><p>  Received: from GHI.ARPA by JKL.ARPA ; 27 Oct 81 15:27:39 PST</p><p>  Received: from DEF.ARPA by GHI.ARPA ; 27 Oct 81 15:15:13 PST</p><p>

76、;  Received: from ABC.ARPA by DEF.ARPA ; 27 Oct 81 15:01:59 PST</p><p>  Date: 27 Oct 81 15:01:01 PST </p><p>  From: JOE@ABC.ARPA </p><p>  Subject: Improved Mailing System Install

77、ed </p><p>  To: SAM@JKL.ARPA </p><p>  This is to inform you that ... </p><p>  SEND (SEND)</p><p>  此命令用于開始一個(gè)發(fā)送命令,將郵件發(fā)送到一個(gè)或多個(gè)終端上。參數(shù)域包括了一個(gè)回復(fù)路徑,此命令如果成功就將郵件發(fā)送到終端上了。 <

78、/p><p>  回復(fù)路徑包括一個(gè)可選的主機(jī)列表和發(fā)送者郵箱。當(dāng)出現(xiàn)主機(jī)列表時(shí),表示這是一個(gè)傳送路徑,郵件就是經(jīng)過這個(gè)路徑上的每個(gè)主機(jī)發(fā)送到這里的(列表上第一個(gè)主機(jī)是最后經(jīng)手的主機(jī))。此表用于返回非傳遞信號到發(fā)送者。因?yàn)槊總€(gè)傳遞主機(jī)地址都被加在此表起始處,它就必須使用發(fā)送IPCE而不是接收IPCE(如果它們不是一個(gè)IPCE的話)清楚的名稱。一些出錯(cuò)信息的回復(fù)路徑可能就是空的。</p><p>

79、  此命令清除回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū),并且將此命令的回復(fù)路徑信息插入到回復(fù)路徑緩沖區(qū)中。</p><p>  SEND OR MAIL (SOML)</p><p>  此命令用于開始一個(gè)郵件操作將郵件內(nèi)容傳送到一個(gè)或多個(gè)終端上,或者傳送到郵箱中。對于每個(gè)接收者,如果接收者終端打開,郵件內(nèi)容將被傳送到接收者的終端上,否則就送到接收者的郵箱中。參數(shù)域包括回復(fù)路徑,如果

80、成功地將信息送到終端或郵箱中此命令成功。</p><p>  回復(fù)路徑包括一個(gè)可選的主機(jī)列表和發(fā)送者郵箱。當(dāng)出現(xiàn)主機(jī)列表時(shí),表示這是一個(gè)傳送路徑,郵件就是經(jīng)過這個(gè)路徑上的每個(gè)主機(jī)發(fā)送到這里的(列表上第一個(gè)主機(jī)是最后經(jīng)手的主機(jī))。此表用于返回非傳遞信號到發(fā)送者。因?yàn)槊總€(gè)傳遞主機(jī)地址都被加在此表起始處,它就必須使用發(fā)送IPCE而不是接收IPCE(如果它們不是一個(gè)IPCE的話)清楚的名稱。一些出錯(cuò)信息的回復(fù)路徑可能就是

81、空的。</p><p>  此命令清除回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū),并且將此命令的回復(fù)路徑信息插入到回復(fù)路徑緩沖區(qū)中。</p><p>  SEND AND MAIL (SAML)</p><p>  此命令用于開始一個(gè)郵件操作將郵件內(nèi)容傳送到一個(gè)或多個(gè)終端上,并傳送到郵箱中。如果接收者終端打開,郵件內(nèi)容將被傳送到接收者的終端上和接收者的郵箱中。參

82、數(shù)域包括回復(fù)路徑,如果成功地將信息送到郵箱中此命令成功。</p><p>  回復(fù)路徑包括一個(gè)可選的主機(jī)列表和發(fā)送者郵箱。當(dāng)出現(xiàn)主機(jī)列表時(shí),表示這是一個(gè)傳送路徑,郵件就是經(jīng)過這個(gè)路徑上的每個(gè)主機(jī)發(fā)送到這里的(列表上第一個(gè)主機(jī)是最后經(jīng)手的主機(jī))。此表用于返回非傳遞信號到發(fā)送者。因?yàn)槊總€(gè)傳遞主機(jī)地址都被加在此表起始處,它就必須使用發(fā)送IPCE而不是接收IPCE(如果它們不是一個(gè)IPCE的話)清楚的名稱。一些出錯(cuò)信息的

83、回復(fù)路徑可能就是空的。</p><p>  此命令清除回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū),并且將此命令的回復(fù)路徑信息插入到回復(fù)路徑緩沖區(qū)中。</p><p>  RESET (RSET)</p><p>  此命令指示當(dāng)送郵件操作將被放棄。任何保存的發(fā)送者,接收者和郵件內(nèi)容應(yīng)該被拋棄,所有緩沖區(qū)和狀態(tài)表應(yīng)該被清除,接收方必須返回OK應(yīng)答。</p&g

84、t;<p>  VERIFY (VRFY)</p><p>  此命令要求接收者確認(rèn)參數(shù)是一個(gè)用戶。如果這是(已經(jīng)知道的)用戶名,返回用戶的全名和指定的郵箱。此命令對回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū)沒有影響。</p><p>  EXPAND (EXPN)</p><p>  此命令要求接收者確認(rèn)參數(shù)指定了一個(gè)郵件發(fā)送列表,如果是一個(gè)郵件

85、發(fā)送列表,就返回表中的成員。如果這是(已經(jīng)知道的)用戶名,返回用戶的全名和指定的郵箱。此命令對回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū)沒有影響。</p><p>  HELP (HELP)</p><p>  此命令導(dǎo)致接收者向HELP命令的發(fā)送者發(fā)出幫助信息。此命令可以帶參數(shù),并返回特定的信息作為應(yīng)答。此命令對回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū)沒有影響。</p&g

86、t;<p>  NOOP (NOOP) </p><p>  此命令不影響任何參數(shù)和已經(jīng)發(fā)出的命令。它只是說明沒有任何操作而不是說明接收者發(fā)送了一個(gè)OK應(yīng)答。此命令對回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū)沒有影響。</p><p>  QUIT (QUIT)</p><p>  此命令指示接收方必須發(fā)送OK應(yīng)答然后關(guān)閉傳送信道。接收方在接到QU

87、IT命令并做出響應(yīng)之前不應(yīng)該關(guān)閉通信信道。發(fā)送方在發(fā)送QUIT命令和接收到響應(yīng)之前也不應(yīng)該關(guān)閉信道。即使出錯(cuò),也不應(yīng)該關(guān)閉信道。如果連接被提前關(guān)閉,接收方應(yīng)該象接收到RSET命令一樣,取消所有等待的操作,但不恢復(fù)原先已經(jīng)做過的操作。而發(fā)送方應(yīng)該象接收到暫時(shí)錯(cuò)誤(4XX)一樣假定命令和操作仍在支持之中。</p><p>  TURN (TURN)</p><p>  此命令指定接收方要么發(fā)送

88、OK應(yīng)答并改變角色為發(fā)送SMTP,要么發(fā)送拒絕信息并保持自己的角色。如果程序A現(xiàn)在是發(fā)送SMTP,它發(fā)出TURN命令后接收到OK(250)應(yīng)答,它就變成了接收SMTP。程序A就進(jìn)入初始狀態(tài),好象通信信道剛打開一樣,這時(shí)它發(fā)送220準(zhǔn)備好服務(wù)信號。如果程序B現(xiàn)在是接收SMTP,它發(fā)出TURN命令后接收到OK(250)應(yīng)答,它就變成了發(fā)送SMTP。程序A就進(jìn)入初始狀態(tài),好象通信信道剛打開一樣,這時(shí)它準(zhǔn)備接收220準(zhǔn)備好服務(wù)信號。</p

89、><p>  若要拒絕改變角色,接收方可以發(fā)送502應(yīng)答。</p><p>  對于這些命令的順序有一定的限制。對話的第一個(gè)命令必須是HELLO命令,此命令在此后的會(huì)話中也可以使用。如果HELLO命令的參數(shù)不可接受,必須由返回一個(gè)501失敗應(yīng)答,同時(shí)接收到的SMTP必須保持在與剛才一致的狀態(tài)下。 NOOP,HELP,EXPN和VRFY命令可以在會(huì)話的任何時(shí)候使用。MAIL,SEND,SOML或

90、SAML命令開始一個(gè)郵件操作。一旦開始了以后就要發(fā)送RCPT和DATA命令。郵件操作可以由RSET命令終止。在一個(gè)會(huì)話中可以有一個(gè)或多個(gè)操作。</p><p>  如果在操作開始參數(shù)不可接受,必須返回501失敗應(yīng)答,同時(shí)接收到的SMTP必須保持在與剛才一致的狀態(tài)下。如果操作中的命令順序出錯(cuò),必須返回503失敗應(yīng)答,同時(shí)接收到的SMTP必須保持在與剛才一致的狀態(tài)下。</p><p>  會(huì)話

91、的最后一個(gè)命令必須是QUIT命令。此命令在會(huì)話的其它時(shí)間不能使用。</p><p>  4.1.2. COMMAND語法格式</p><p>  命令是由命令碼和其后的參數(shù)域組成的。命令碼是四個(gè)字母組成的,不區(qū)別大小寫。因?yàn)橄旅娴拿畹淖饔檬窍嗤模?lt;/p><p>  MAIL Mail mail MaIl mAIl</p><p>  這

92、對于引導(dǎo)任何參數(shù)值的標(biāo)記也是適用的,如TO和to就是一樣的。命令碼和參數(shù)由一個(gè)或多個(gè)空格分開。然而在回復(fù)路徑和轉(zhuǎn)發(fā)路徑中的參數(shù)是區(qū)別大小寫的。特別是在一些主機(jī)上,"smith"和"Smith"就根本不是一個(gè)用戶。</p><p>  參數(shù)域由不定長的字符串組成,它由<CRLF>結(jié)束,接收方在完全接收到此序列前不會(huì)采取任何行動(dòng)。方括號代表可選的參數(shù)域。如果不選擇的

93、話,系統(tǒng)選擇默認(rèn)的設(shè)置。</p><p>  下面是SMTP命令: HELO <SP> <domain> <CRLF> MAIL <SP> FROM:<reverse-path> <CRLF></p><p>  RCPT <SP> TO:<forward-path> <CRLF>&

94、lt;/p><p>  DATA <CRLF></p><p>  RSET <CRLF></p><p>  SEND <SP> FROM:<reverse-path> <CRLF></p><p>  SOML <SP> FROM:<reverse-path>

95、 <CRLF></p><p>  SAML <SP> FROM:<reverse-path> <CRLF></p><p>  VRFY <SP> <string> <CRLF></p><p>  EXPN <SP> <string> <CRLF&g

96、t;</p><p>  HELP [<SP> <string>] <CRLF></p><p>  NOOP <CRLF></p><p>  QUIT <CRLF></p><p>  TURN <CRLF></p><p>  上面參數(shù)域的格

97、式在下面給BNF的格式給出,其中的"..."代表對于一個(gè)域的一次或多次的重復(fù)。</p><p>  <reverse-path> ::= <path></p><p>  <forward-path> ::= <path></p><p>  <path> ::= "<&

98、quot; [ <a-d-l> ":" ] <mailbox ̄??愼搭氭 ̄??愼?潤慭湩 ̄?愼?潤慭湩 ̄??愼搭氭?愼?潤慭湩 ̄????搼浯楡??搼浯楡????汥浥湥?簠?汥浥湥?∠∮?潤慭湩?攼敬敭瑮 ̄??渼浡?簠∠∣?畮扭牥 ̄?嬢?搼瑯畮?∠??洼楡揚(yáng)硯 ̄??氼捯污瀭牡?∠??潤慭湩?氼捯污瀭牡????潤?瑳楲杮 ̄?焼潵整?瑳楲杮?渼浡??????摬?瑳??敬?楤??氼榿猭牴 ̄??氼瑥搭榪栭灹 ̄

99、?氼瑥搭榪栭灹 ̄氼榿猭牴?氼瑥搭榪 ̄??愼 ̄?搼?氼瑥搭榪栭灹 ̄??愼 ̄?搼 ̄???搼瑯猭牴湩?????字符串> | <字符串> "." <dot-string></p><p>  <字符串> ::= <字符> | <字符> <字符串></p><p>  <quoted-string

100、> ::= """ <qtext> """</p><p>  <qtext> ::= "\" <x> | "\" <x> <qtext> | <q> | <q> <qtext></p><p&

101、gt;  <字符> ::= <c> | "\" <x></p><p>  <dotnum> ::= <snum> "." <snum> "." <snum> "." <snum></p><p>  <num

102、ber> ::= <d> | <d> <number></p><p>  <CRLF> ::= <CR> <LF></p><p>  <CR> ::= 回車符(ASCII碼13) <LF> ::= (ASCII碼10)</p><p>  <SP>

103、::= 空格(ASCII碼32) <snum> ::=由一個(gè),兩個(gè)或三個(gè)數(shù)字組成的介于0-255之間的數(shù)字</p><p>  <a> ::= 所有A-Z的52個(gè)大小寫英文字母</p><p>  <c> ::= 128個(gè)ASCII字符,但不包括空格和特殊字符</p><p>  <d> ::= 0-9數(shù)字</p

104、><p>  <q> ::=不包括<CR>,<LF>,"或\的128個(gè)ASCII字符</p><p>  <x> ::=所有128個(gè)ASCII字符</p><p>  <special> ::= "<" | ">" | "(" |

105、 ")" | "[" | "]" | "\" | "." | "," | ";" | ":" | "@" """ 或控制字符</p><p>  注意: "\"是一個(gè)轉(zhuǎn)意字符,它表示在其

106、后的字符代表另外的意義。例如"Joe\,Smith"用于表示單獨(dú)一個(gè)由逗號分隔的用戶名。主機(jī)通常由轉(zhuǎn)化為地址的名稱代表。注意:域的名稱元素是正式的名稱,不能夠使用昵稱或假名。</p><p>  有時(shí)候名稱的轉(zhuǎn)變機(jī)制可能不知道主機(jī),這就造成了通信的阻塞。為了解決這個(gè)問題,可以采取兩種方法:一種方法是:在"#"后加入一個(gè)十進(jìn)制數(shù)表示主機(jī)地址;另一種方法是在其后加入32位的IP

107、地址,IP地址的形式是由句號分隔的四個(gè)介于0-255之間的十進(jìn)制數(shù)。時(shí)間戳行和返回路徑行的格式通常由下面定義:</p><p>  <return-path-line> ::= "Return-Path:" <SP><reverse-path><CRLF></p><p>  <time-stamp-line>

108、 ::= "Received:" <SP> <stamp> <CRLF></p><p>  <stamp> ::= <from-domain> <by-domain> <opt-info> ";" <daytime></p><p>  <from

109、-domain> ::= "FROM" <SP> <域> <SP></p><p>  <by-domain> ::= "BY" <SP> <域> <SP></p><p>  <opt-info> ::= [<via>] [<wi

110、th>] [<id>] [<for>]</p><p>  <via> ::= "VIA" <SP> <連接> <SP></p><p>  <with> ::= "WITH" <SP> <協(xié)議> <SP></p>

111、<p>  <id> ::= "ID" <SP> <字符串> <SP></p><p>  <for> ::= "FOR" <SP> <路徑> <SP></p><p>  <連接> ::= 在網(wǎng)絡(luò)信息中心注冊的連接的標(biāo)準(zhǔn)名稱&l

112、t;/p><p>  <協(xié)議> ::= 在網(wǎng)絡(luò)中心注冊的協(xié)議的名稱</p><p>  <daytime> ::= <SP> <日> <SP> <時(shí)間></p><p>  <日期> ::= <日> <SP> <月> <SP> <年&

113、gt;</p><p>  <時(shí)間> ::= <小時(shí)> ":" <分> ":" <秒> <SP> <時(shí)區(qū)></p><p>  <dd> ::= 由一個(gè)或兩個(gè)數(shù)字組成的每月1-31日</p><p>  <月> ::= "

114、JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" | "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"</p>&

115、lt;p>  <年> ::= 由兩位數(shù)字表示本世界的年代00-99</p><p>  <小時(shí)> ::= 每天的24小時(shí),由0到24</p><p>  <分> ::= 每小時(shí)的分鐘數(shù)0-59</p><p>  <秒> ::= 每分鐘的秒數(shù)0-59</p><p>  <時(shí)區(qū)>

116、; ::= 全球標(biāo)準(zhǔn)時(shí)區(qū)</p><p><b>  返回路徑例子</b></p><p>  Return-Path: <@CHARLIE.ARPA,@BAKER.ARPA:JOE@ABLE.ARPA></p><p><b>  時(shí)間戳行例子</b></p><p>  Receiv

117、ed: FROM ABC.ARPA BY XYZ.ARPA ; 22 OCT 81 09:23:59 PDT</p><p>  Received: from ABC.ARPA by XYZ.ARPA via TELENET with X25</p><p>  id M12345 for Smith@PDQ.ARPA ; 22 OCT 81 09:23:59 PDT</p>

118、<p>  4.2. SMTP響應(yīng)</p><p>  對SMTP命令的響應(yīng)是多樣的,它確定了在郵件傳輸過程中請求和處理的同步,也保證了發(fā)送SMTP知道接收SMTP的狀態(tài)。每個(gè)命令必須有且只有一個(gè)響應(yīng)。</p><p>  SMTP響應(yīng)由三位數(shù)字組成,其后跟一些文本。數(shù)字幫助決定下一個(gè)應(yīng)該進(jìn)入的狀態(tài),而文本對人是有意義的。三位的響應(yīng)已經(jīng)包括了足夠的信息,不用再閱讀文本,文本可以

119、直接拋棄或者傳遞給用戶。特別的是,文本是與接收和環(huán)境相關(guān)的,所以每次接收到的文本可能不同。在附錄E中可以看到全部的響應(yīng)碼。正規(guī)的情況下,響應(yīng)由下面序列構(gòu)成:三位的數(shù)字,<SP>,一行文本和一個(gè)<CRLF>,或者也可以是一個(gè)多行響應(yīng)。只有EXPN和HELP命令可以導(dǎo)致多行應(yīng)答,然而,對所有命令,多行響應(yīng)都是允許的。</p><p>  4.2.1. REPLY CODES BY FUNCTI

120、ON GROUPS 500 格式錯(cuò)誤,命令不可識別(此錯(cuò)誤也包括命令行過長)</p><p>  501 參數(shù)格式錯(cuò)誤</p><p>  502 命令不可實(shí)現(xiàn)</p><p>  503 錯(cuò)誤的命令序列</p><p>  504 命令參數(shù)不可實(shí)現(xiàn)</p><p>  211 系統(tǒng)狀態(tài)或系統(tǒng)幫助響應(yīng)</p>

121、;<p><b>  214 幫助信息</b></p><p>  220 <domain> 服務(wù)就緒</p><p>  221 <domain> 服務(wù)關(guān)閉傳輸信道 </p><p>  421 <domain> 服務(wù)未就緒,關(guān)閉傳輸信道(當(dāng)必須關(guān)閉時(shí),此應(yīng)答可以作為對任何命令的響應(yīng))<

122、/p><p>  250 要求的郵件操作完成</p><p>  251 用戶非本地,將轉(zhuǎn)發(fā)向<forward-path></p><p>  450 要求的郵件操作未完成,郵箱不可用(例如,郵箱忙)</p><p>  550 要求的郵件操作未完成,郵箱不可用(例如,郵箱未找到,或不可訪問)</p><p>

123、  451 放棄要求的操作;處理過程中出錯(cuò)</p><p>  551 用戶非本地,請嘗試<forward-path></p><p>  452 系統(tǒng)存儲(chǔ)不足,要求的操作未執(zhí)行</p><p>  552 過量的存儲(chǔ)分配,要求的操作未執(zhí)行</p><p>  553 郵箱名不可用,要求的操作未執(zhí)行(例如郵箱格式錯(cuò)誤)</p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論