明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

RFC821-容易郵件傳輸協(xié)議(SMTP)中文版 - 1

[摘要]3.7. 域  域是最近被引入ARPA Internet郵件系統(tǒng)的。使用域可以使地址空間從一 個(gè)平面的普通字符串主機(jī)名變成全局地址的一個(gè)層次結(jié)構(gòu)。主機(jī)由一個(gè)域名取 代,起始主機(jī)是由一系列元串組成,它...
3.7. 域
  域是最近被引入ARPA Internet郵件系統(tǒng)的。使用域可以使地址空間從一
個(gè)平面的普通字符串主機(jī)名變成全局地址的一個(gè)層次結(jié)構(gòu)。主機(jī)由一個(gè)域名取
代,起始主機(jī)是由一系列元串組成,它們由逗號(hào)按最特殊到一般的順序排列。
  例如,"USC-ISIF.ARPA","Fred.Cambridge.UK"和"PC7.LCS.MIT.ARPA"可
能是主機(jī)-域標(biāo)識(shí)符。
  無(wú)論域名在SMTP中如何使用,只有正式的名稱(chēng)才可以被使用,不可以使用
假名或昵稱(chēng)。

3.8. 改變角色
  TURN命令可以用來(lái)改變?cè)趥鬏斝诺郎贤ㄐ诺某绦虻慕巧。如果程序A現(xiàn)在是
發(fā)送SMTP,它發(fā)送TURN命令并接到OK應(yīng)答(250)后,它就變?yōu)榻邮誗MTP了。同
理,程序B也可以從接收SMTP變?yōu)榘l(fā)送SMTP。若要拒絕改變角色,接收方可以發(fā)
送502作為應(yīng)答。
  注意:此命令是可選的。在使用TCP的傳輸信道時(shí),一般不使用此命令。然
而,當(dāng)建立傳輸信道的代價(jià)比較大時(shí),此命令很有用。例如,此命令可以支持一
般公共交換電話系統(tǒng)作為傳輸信道。

4. SMTP說(shuō)明
4.1. SMTP命令
4.1.1. 命令語(yǔ)法
  SMTP命令定義了郵件傳輸或由用戶(hù)定義的系統(tǒng)功能。它的命令是由<CRLF>
結(jié)束的字符串。而在帶有參數(shù)的情況下,命令本身由<SP>和參數(shù)分開(kāi),如果
未帶參數(shù)可以直接和<CRLF>連接。郵箱的語(yǔ)法格式必須和接收站點(diǎn)的格式一致。
下面討論SMTP命令和應(yīng)答。
  發(fā)送郵件操作涉及到不同的數(shù)據(jù)對(duì)象,它們由不同的參數(shù)相互連接;
復(fù)路徑就是MAIL命令的參數(shù),而轉(zhuǎn)發(fā)路徑則是RCPT命令的參數(shù),郵件日期是
DATA命令的參數(shù)。這些參數(shù)或者數(shù)據(jù)對(duì)象必須跟在命令后。這種模式也就要
求有不同的緩沖區(qū)來(lái)存儲(chǔ)這些對(duì)象,也就是說(shuō),有一個(gè)回復(fù)路徑緩沖區(qū),一
個(gè)轉(zhuǎn)發(fā)路徑緩沖區(qū),一個(gè)郵件內(nèi)容緩沖區(qū)。特定的命令產(chǎn)生自己的緩沖區(qū),
或使一個(gè)或多個(gè)緩沖的內(nèi)容被清除。

  HELLO (HELO)
  此命令用于向接收SMTP確認(rèn)發(fā)送SMTP。參數(shù)域包括發(fā)送SMTP的主機(jī)名。
接收SMTP通過(guò)連接確認(rèn)命令來(lái)向發(fā)送SMTP確認(rèn)接收SMTP。引命令和OK響應(yīng)確
認(rèn)發(fā)送和接收SMTP進(jìn)入了初始狀態(tài),也就是說(shuō),沒(méi)有操作正在執(zhí)行,所有狀態(tài)
表和緩沖區(qū)已經(jīng)被子清除。

  MAIL (MAIL)
  此命令用于開(kāi)始將郵件發(fā)送到一個(gè)多個(gè)郵箱中。參數(shù)域包括回復(fù)路徑。
返回路徑中包括了可選的主機(jī)和發(fā)送者郵箱列表。當(dāng)有主機(jī)列表時(shí),它是一
個(gè)回復(fù)路徑源,它說(shuō)明此郵箱是由在表中的主機(jī)一一傳遞發(fā)送(第一個(gè)主機(jī)
是最后一個(gè)接收到此郵件的主機(jī))過(guò)來(lái)的。此表也有作向發(fā)送者返回非傳遞信
號(hào)的源路徑。因?yàn)槊總(gè)傳遞主機(jī)地址都被加在此表起始處,它就必須使用發(fā)送
IPCE而不是接收IPCE(如果它們不是一個(gè)IPCE的話)清楚的名稱(chēng)。一些出錯(cuò)信
息的回復(fù)路徑可能就是空的。
  此命令清除回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū),并且將
此命令的回復(fù)路徑信息插入到回復(fù)路徑緩沖區(qū)中。
  RECIPIENT (RCPT)
  此命令用于確定郵件內(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ā)送,就會(huì)返回如未知本地用戶(hù)(550)的信息給用戶(hù)。
  當(dāng)郵件被傳遞發(fā)送時(shí),傳遞主機(jī)必須將自己的名稱(chēng)由轉(zhuǎn)發(fā)路徑的開(kāi)始處
移至回復(fù)路徑的結(jié)束處。當(dāng)郵件最終到達(dá)目的地時(shí),接收SMTP將以它的主機(jī)郵
件格式自己的名稱(chēng)插入目標(biāo)郵件中。例如,由傳遞主機(jī)A接收的帶有如下參
數(shù)的郵件時(shí),
  FROM:<USERX@HOSTY.ARPA>
  TO:<@HOSTA.ARPA,@HOSTB.ARPA:USERC@HOSTD.ARPA>
  將會(huì)變成如下形式:
  FROM:<@HOSTA.ARPA:USERX@HOSTY.ARPA>
  TO:<@HOSTB.ARPA:USERC@HOSTD.ARPA>.
  此命令導(dǎo)致它的轉(zhuǎn)發(fā)路徑參數(shù)加入轉(zhuǎn)發(fā)路徑緩沖區(qū)中。

  DATA (DATA)
  接收者將跟在命令后的行作為郵件內(nèi)容。此命令導(dǎo)致此命令后的郵件內(nèi)容
加入郵件內(nèi)容緩沖區(qū)。郵件內(nèi)容可以包括所有128個(gè)ASCII碼字符。郵件內(nèi)容由只
包括一個(gè)句號(hào)的行結(jié)束,也就是如下的字符序列:"<CRLF>.<CRLF>",它指示了
郵件的結(jié)束。
  郵件內(nèi)容的結(jié)束指示要求接收者現(xiàn)在就處理保存的郵件內(nèi)容。此過(guò)程將回復(fù)
路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū)的內(nèi)容全部清空。如果操作成功,
接收者必須返回OK應(yīng)答;如果失敗也必須返回失敗應(yīng)答。
  當(dāng)接收SMTP收到一條信息時(shí),無(wú)論是用作轉(zhuǎn)發(fā)還是此郵件已經(jīng)到達(dá)目的地,
它都必須在郵件內(nèi)容的開(kāi)始處加上時(shí)間戳這一行,這一行指示了接收到郵件主
機(jī)和發(fā)出此郵件主機(jī)的標(biāo)識(shí),以及接收到郵件內(nèi)容的時(shí)間和日期。轉(zhuǎn)發(fā)的信件
將有多行這樣的時(shí)間戳。當(dāng)接收SMTP作最后一站的傳送時(shí),它將返回路徑信息
行插入郵件中。此行包括了發(fā)送命令中的<reverse-path>的信息。在這里,最
后一站的傳送的意思是郵件將被送到目的用戶(hù)手中,但在一些情況下,郵件可
能需要更進(jìn)一步的加工并由另外的郵件系統(tǒng)傳送。
  可能在返回路徑中的郵箱與實(shí)際發(fā)送的郵件不一致,這個(gè)情況可能發(fā)生在
需要傳送一個(gè)特定的錯(cuò)誤處理信箱而不是信件發(fā)送者那里。上面所述說(shuō)明了,
最后的郵件內(nèi)容由一個(gè)返回路徑行,和在其后的一個(gè)或多個(gè)時(shí)間戳行構(gòu)成。這
些行后面是郵件內(nèi)容的頭和體信息。
  當(dāng)處理后面的郵件數(shù)據(jù)指示部分成功時(shí)就需要特定的說(shuō)明。這種情況可能
發(fā)生在發(fā)送SMTP發(fā)現(xiàn)當(dāng)郵件需要傳送給多個(gè)用戶(hù)時(shí),只能夠成功地向其中的一
部分發(fā)送信息這種情況下。在這種情況下,必須對(duì)DATA命令發(fā)送OK應(yīng)答,而接
收SMTP組織并發(fā)送一個(gè)"不可傳遞郵件"信息到信息的發(fā)送者。在此信息中或者
發(fā)送一個(gè)不成功接收者的列表,或者每次發(fā)送一個(gè)不成接收者,而發(fā)送多次。
所有不可傳遞郵件信息由MAIL命令發(fā)送。

  返回路徑和接收時(shí)間戳例子
  Return-Path: <@GHI.ARPA,@DEF.ARPA,@ABC.ARPA:JOE@ABC.ARPA>
  Received: from GHI.ARPA by JKL.ARPA ; 27 Oct 81 15:27:39 PST
  Received: from DEF.ARPA by GHI.ARPA ; 27 Oct 81 15:15:13 PST
  Received: from ABC.ARPA by DEF.ARPA ; 27 Oct 81 15:01:59 PST
  Date: 27 Oct 81 15:01:01 PST
  From: JOE@ABC.ARPA
  Subject: Improved Mailing System Installed
  To: SAM@JKL.ARPA

  This is to inform you that ...


  SEND (SEND)
  此命令用于開(kāi)始一個(gè)發(fā)送命令,將郵件發(fā)送到一個(gè)或多個(gè)終端上。參數(shù)
域包括了一個(gè)回復(fù)路徑,此命令如果成功就將郵件發(fā)送到終端上了。
  回復(fù)路徑包括一個(gè)可選的主機(jī)列表和發(fā)送者郵箱。當(dāng)出現(xiàn)主機(jī)列表時(shí),
表示這是一個(gè)傳送路徑,郵件就是經(jīng)過(guò)這個(gè)路徑上的每個(gè)主機(jī)發(fā)送到這里的
(列表上第一個(gè)主機(jī)是最后經(jīng)手的主機(jī))。此表用于返回非傳遞信號(hào)到發(fā)送者。
因?yàn)槊總(gè)傳遞主機(jī)地址都被加在此表起始處,它就必須使用發(fā)送IPCE而不是接
收IPCE(如果它們不是一個(gè)IPCE的話)清楚的名稱(chēng)。一些出錯(cuò)信息的回復(fù)路徑
可能就是空的。
  此命令清除回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū),并且將
此命令的回復(fù)路徑信息插入到回復(fù)路徑緩沖區(qū)中。

  SEND OR MAIL (SOML)
  此命令用于開(kāi)始一個(gè)郵件操作將郵件內(nèi)容傳送到一個(gè)或多個(gè)終端上,或者
傳送到郵箱中。對(duì)于每個(gè)接收者,如果接收者終端打開(kāi),郵件內(nèi)容將被傳送到
接收者的終端上,否則就送到接收者的郵箱中。參數(shù)域包括回復(fù)路徑,如果成
功地將信息送到終端或郵箱中此命令成功。
  回復(fù)路徑包括一個(gè)可選的主機(jī)列表和發(fā)送者郵箱。當(dāng)出現(xiàn)主機(jī)列表時(shí),表
示這是一個(gè)傳送路徑,郵件就是經(jīng)過(guò)這個(gè)路徑上的每個(gè)主機(jī)發(fā)送到這里的(列
表上第一個(gè)主機(jī)是最后經(jīng)手的主機(jī))。此表用于返回非傳遞信號(hào)到發(fā)送者。因
為每個(gè)傳遞主機(jī)地址都被加在此表起始處,它就必須使用發(fā)送IPCE而不是接收
IPCE(如果它們不是一個(gè)IPCE的話)清楚的名稱(chēng)。一些出錯(cuò)信息的回復(fù)路徑可
能就是空的。
  此命令清除回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū),并且將
此命令的回復(fù)路徑信息插入到回復(fù)路徑緩沖區(qū)中。

  SEND AND MAIL (SAML)
  此命令用于開(kāi)始一個(gè)郵件操作將郵件內(nèi)容傳送到一個(gè)或多個(gè)終端上,并傳
送到郵箱中。如果接收者終端打開(kāi),郵件內(nèi)容將被傳送到接收者的終端上和接
收者的郵箱中。參數(shù)域包括回復(fù)路徑,如果成功地將信息送到郵箱中此命令成
功。
  回復(fù)路徑包括一個(gè)可選的主機(jī)列表和發(fā)送者郵箱。當(dāng)出現(xiàn)主機(jī)列表時(shí),表
示這是一個(gè)傳送路徑,郵件就是經(jīng)過(guò)這個(gè)路徑上的每個(gè)主機(jī)發(fā)送到這里的(列
表上第一個(gè)主機(jī)是最后經(jīng)手的主機(jī))。此表用于返回非傳遞信號(hào)到發(fā)送者。因
為每個(gè)傳遞主機(jī)地址都被加在此表起始處,它就必須使用發(fā)送IPCE而不是接收
IPCE(如果它們不是一個(gè)IPCE的話)清楚的名稱(chēng)。一些出錯(cuò)信息的回復(fù)路徑可
能就是空的。
  此命令清除回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件內(nèi)容緩沖區(qū),并且將
此命令的回復(fù)路徑信息插入到回復(fù)路徑緩沖區(qū)中。

  RESET (RSET)
  此命令指示當(dāng)送郵件操作將被放棄。任何保存的發(fā)送者,接收者和郵件內(nèi)
容應(yīng)該被拋棄,所有緩沖區(qū)和狀態(tài)表應(yīng)該被清除,接收方必須返回OK應(yīng)答。

  VERIFY (VRFY)
  此命令要求接收者確認(rèn)參數(shù)是一個(gè)用戶(hù)。如果這是(已經(jīng)知道的)用戶(hù)名,
返回用戶(hù)的全名和指定的郵箱。此命令對(duì)回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵
件內(nèi)容緩沖區(qū)沒(méi)有影響。

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

  HELP (HELP)
  此命令導(dǎo)致接收者向HELP命令的發(fā)送者發(fā)出幫助信息。此命令可以帶參數(shù),
并返回特定的信息作為應(yīng)答。此命令對(duì)回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵件
內(nèi)容緩沖區(qū)沒(méi)有影響。

  NOOP (NOOP)
  此命令不影響任何參數(shù)和已經(jīng)發(fā)出的命令。它只是說(shuō)明沒(méi)有任何操作而不是
說(shuō)明接收者發(fā)送了一個(gè)OK應(yīng)答。此命令對(duì)回復(fù)路徑緩沖區(qū),轉(zhuǎn)發(fā)路徑緩沖區(qū)和郵
件內(nèi)容緩沖區(qū)沒(méi)有影響。

  QUIT (QUIT)
  此命令指示接收方必須發(fā)送OK應(yīng)答然后關(guān)閉傳送信道。接收方在接到QUIT命
令并做出響應(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)做過(guò)
的操作。而發(fā)送方應(yīng)該象接收到暫時(shí)錯(cuò)誤(4XX)一樣假定命令和操作仍在支持
之中。

  TURN (TURN)
  此命令指定接收方要么發(fā)送OK應(yīng)答并改變角色為發(fā)送SMTP,要么發(fā)送拒絕信
息并保持自己的角色。如果程序A現(xiàn)在是發(fā)送SMTP,它發(fā)出TURN命令后接收到
OK(250)應(yīng)答,它就變成了接收SMTP。程序A就進(jìn)入初始狀態(tài),好象通信信道剛
打開(kāi)一樣,這時(shí)它發(fā)送220準(zhǔn)備好服務(wù)信號(hào)。如果程序B現(xiàn)在是接收SMTP,它發(fā)
出TURN命令后接收到OK(250)應(yīng)答,它就變成了發(fā)送SMTP。程序A就進(jìn)入初始狀
態(tài),好象通信信道剛打開(kāi)一樣,這時(shí)它準(zhǔn)備接收220準(zhǔn)備好服務(wù)信號(hào)。
若要拒絕改變角色,接收方可以發(fā)送502應(yīng)答。
  對(duì)于這些命令的順序有一定的限制。對(duì)話的第一個(gè)命令必須是HELLO命令,
此命令在此后的會(huì)話中也可以使用。如果HELLO命令的參數(shù)不可接受,必須由返
回一個(gè)501失敗應(yīng)答,同時(shí)接收到的SMTP必須保持在與剛才一致的狀態(tài)下。
NOOP,HELP,EXPN和VRFY命令可以在會(huì)話的任何時(shí)候使用。MAIL,SEND,SOML或
SAML命令開(kāi)始一個(gè)郵件操作。一旦開(kāi)始了以后就要發(fā)送RCPT和DATA命令。郵件操
作可以由RSET命令終止。在一個(gè)會(huì)話中可以有一個(gè)或多個(gè)操作。
  如果在操作開(kāi)始參數(shù)不可接受,必須返回501失敗應(yīng)答,同時(shí)接收到的SMTP
必須保持在與剛才一致的狀態(tài)下。如果操作中的命令順序出錯(cuò),必須返回503失
敗應(yīng)答,同時(shí)接收到的SMTP必須保持在與剛才一致的狀態(tài)下。
會(huì)話的最后一個(gè)命令必須是QUIT命令。此命令在會(huì)話的其它時(shí)間不能使用。 (http://www.fanqiang.com)