国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 網(wǎng)絡(luò)通信 > 正文

SMTP服務(wù)擴(kuò)展

2019-11-04 10:58:00
字體:
供稿:網(wǎng)友

 SMTP提供一種可靠的有效的傳送機(jī)制,它用于傳送電子郵件。雖然十幾年來,它的作用已經(jīng)有目共睹,可是對(duì)它功能的擴(kuò)充也是必不可少的。對(duì)SMTP服務(wù)的擴(kuò)展我們介紹一下:在SMTP轉(zhuǎn)發(fā)的郵件中包括信封和內(nèi)容這兩種東西。我們寫信也寫信封和信皮,我們可以借生活中的信件來幫助理解。

(1)SMTP信封比較輕易理解,它被作為一系列的SMTP協(xié)議單元傳送,它包括發(fā)送者地址,傳送模式,還有一個(gè)或多個(gè)接收者地址。假如有不清楚的地方,請(qǐng)參閱《SMTP協(xié)議標(biāo)準(zhǔn)》。

(2)至于內(nèi)容,它是由兩部分組成的,一部分是信頭,一部分是信體,信頭是由一個(gè)個(gè)的域/值對(duì)(一個(gè)域,一個(gè)值)組成的,假如信體有結(jié)構(gòu)的話,它的結(jié)構(gòu)是以MIME構(gòu)造的。內(nèi)容從根本上來說是文本的,一般也是由ASCII碼構(gòu)成的,但是由于使用了MIME,所以這個(gè)限制應(yīng)該也是沒有了,但信頭卻不行,一般都應(yīng)該使用ASCII碼表示。雖然SMTP協(xié)議是一個(gè)不錯(cuò)的協(xié)議,可是對(duì)它的擴(kuò)展還是不可避免,本文主要說明了一種擴(kuò)展方法,使用這種擴(kuò)展方法,服務(wù)器和用戶之間可以相互知道對(duì)方使用了擴(kuò)展,使用了多少,假如進(jìn)行通信。

  這里我們希望讓大家知道網(wǎng)絡(luò)協(xié)議中的一個(gè)經(jīng)驗(yàn):參數(shù)越多,死得越快;參數(shù)越少,越能持久。參數(shù)太多了,根本不利于使用,無法推廣,早晚會(huì)被別的協(xié)議取代。這也符合科學(xué)的基礎(chǔ)原理,簡(jiǎn)單。這說明在實(shí)現(xiàn)時(shí)一定要小心,假如不小心會(huì)便得到的遠(yuǎn)遠(yuǎn)小于付出的,有時(shí)根本不能提供任何益處。

  下面我們看一下EHLO命令,支持SMTP服務(wù)擴(kuò)展的客戶應(yīng)該以EHLO命令開始SMTP會(huì)話,而不是通常的HELO命令。假如服務(wù)器也支持,那就返回確認(rèn)響應(yīng),假如不支持就返回失敗響應(yīng)。因?yàn)橐肓薊HLO命令,因此會(huì)話開始的第一條命令可以是HELO或EHLO。

  因此引入了新的參數(shù),所以SMTP的MAILFROM和RCPTTO命令行長(zhǎng)度也能再是512字節(jié)了,但是引入新參數(shù)的長(zhǎng)度必須加以說明,以便實(shí)現(xiàn)者預(yù)備緩沖區(qū)。

命令格式如下:

ehlo-cmd::="EHLO"SPdomainCRLF

  在命令成功是,服務(wù)器返回代碼250,假如失敗返回代碼550,假如出錯(cuò),返500,501,502,504或421。對(duì)比《SMTP協(xié)議標(biāo)準(zhǔn)》,EHLO命令可以出現(xiàn)在任何HELO命令出現(xiàn)的地方,在成功發(fā)送一個(gè)HELO或EHLO命令后再次發(fā)送它會(huì)使服務(wù)器返回503。客戶這時(shí)不能緩存服務(wù)器返回的任何信息。這里一定要注重的是,每次開始SMTP擴(kuò)展服務(wù)會(huì)話的時(shí)候必須發(fā)送EHLO命令。假如服務(wù)器能夠處理EHLO命令,它會(huì)返回代碼250。這樣,服務(wù)器和客戶就處于初始狀態(tài)了,也就是說,所有的狀態(tài)表和緩沖區(qū)已經(jīng)預(yù)備完畢。通常這種響應(yīng)是多行的,每行響應(yīng)包括一個(gè)要害字,假如有的話,還有一個(gè)或多個(gè)參數(shù),響應(yīng)的語法如下:

ehlo-ok-rsp::="250"domain[SPgreeting]CRLF

/("250-"domain[SPgreeting]CRLF

*("250-"ehlo-lineCRLF)

"250"SPehlo-lineCRLF)

greeting::=1*<除了CR或LF的所有字符>

ehlo-line::=ehlo-keyWord*(SPehlo-param)

ehlo-keyword::=(字母/數(shù)字)*(字母/數(shù)字/"-")

ehlo-param::=1*<隨了空格和控制字符外的字符>

ALPHA::=<大寫A到Z,小寫A到Z>

DIGIT::=<0到9>

CR::=<回車,ASCII碼13>

LF::=<換行,ASCII碼10>

SP::=<空格,ASCII碼32>

 

  雖然EHLO要害字可以是大寫,小寫,大小寫混合的,但是對(duì)它的處理是大小寫敏感的,這是與原來規(guī)定不同的。IANA支持SMTP服務(wù)擴(kuò)展注冊(cè),相對(duì)于每個(gè)擴(kuò)展都有一個(gè)相應(yīng)的EHLO要害字值,每個(gè)在IANA注冊(cè)的服務(wù)擴(kuò)展必須在一個(gè)RFC中定義。假如一個(gè)要害字以X開頭,它指的是這個(gè)服務(wù)擴(kuò)展是雙方約定的,不是標(biāo)準(zhǔn)的。

  假如出于某種原因,服務(wù)器不能列出它所支持的服務(wù)擴(kuò)展,就返回代碼554。在接收到這個(gè)代碼后,客戶要么發(fā)送HELO,要么發(fā)送QUIT命令。有時(shí)候服務(wù)器接收到EHLO命令,可是命令參數(shù)不可接受,它就返回代碼501。假如服務(wù)器識(shí)別了EHLO,但對(duì)服務(wù)器擴(kuò)展未實(shí)現(xiàn),則返回代碼502。
  假如服務(wù)器不再提供服務(wù)擴(kuò)展,則返回代碼421。在接收到這個(gè)代碼后,客戶要么發(fā)送HELO,要么發(fā)送QUIT命令。假如服務(wù)器不支持服務(wù)擴(kuò)展,則返回500,服務(wù)器保持現(xiàn)有狀態(tài),在接收到這個(gè)代碼后,客戶要么發(fā)送HELO,要么發(fā)送QUIT命令。

  有時(shí)候,SMTP服務(wù)器會(huì)在接收到EHLO命令后因?yàn)槟撤N原因關(guān)閉連接,這種情況在原來的SMTP協(xié)議標(biāo)準(zhǔn)中未涉及。為了處理這種情況,客戶必須能夠確認(rèn)服務(wù)器是否能夠工作,它可以重新連接并發(fā)送HELO或EHLO命令。有些服務(wù)器在接收到一個(gè)EHLO命令后會(huì)拒絕接收新的HELO命令,這時(shí)可以利用RSET命令重新啟動(dòng),然后再發(fā)送HELO。假如客戶不注重這樣的小細(xì)節(jié),會(huì)收到失敗代碼。

  下面我們來看一下MAILFROM和RCPTTO參數(shù)。許多服務(wù)擴(kuò)展是在MAILFROM和RCPTTO命令后加入一些參數(shù)來實(shí)現(xiàn)的。下面我們看一下這兩個(gè)命令的格式:

 

esmtp-cmd::=inner-esmtp-cmd[SPesmtp-parameters]CRLF

esmtp-parameters::=esmtp-parameter*(SPesmtp-parameter)

esmtp-parameter::=esmtp-keyword["="esmtp-value]

esmtp-keyword::=(字母/數(shù)字)*(字母/數(shù)字/"-")

esmtp-value::=1*<除了空格,"="和控制字符的所有字符>

inner-esmtp-cmd::=("MAILFROM:"返回路徑)/("RCPTTO:"轉(zhuǎn)發(fā)路徑)

  假如服務(wù)器不能識(shí)別或?qū)崿F(xiàn)一個(gè)或多個(gè)MAILFROM或RCPTTO參數(shù),它應(yīng)該返回代碼555。假如這種情況只是暫時(shí)的,服務(wù)器返回代碼455。其它返回代碼請(qǐng)查閱相關(guān)資料,這里不再詳述了。服務(wù)器以服務(wù)擴(kuò)展處理時(shí),它處理的任何信息都應(yīng)該在包頭上加上“服務(wù)擴(kuò)展標(biāo)記”以示區(qū)別。

下面是一個(gè)例子:

(1)雙方交互:S是服務(wù)器,C是客戶。

S:<等待連接在TCP端口25>

C:<連接到服務(wù)器>

S:220dbc.mtview.ca.usSMTPserviceready

C:EHLOymir.claremont.edu

S:250dbc.mtview.ca.ussayshello

...

 

(2)下面也是一個(gè)例子:

S:<等待連接在TCP端口25>

C:<連接到服務(wù)器>

S:220dbc.mtview.ca.usSMTPserviceready

C:EHLOymir.claremont.edu

S:250-dbc.mtview.ca.ussayshello

S:250-EXPN

S:250-HELP

S:250-8BITMIME

S:250-XONE

S:250XVRB

...

 

  這說明服務(wù)器實(shí)現(xiàn)了服務(wù)擴(kuò)展EXPN和HELP,這兩個(gè)是標(biāo)準(zhǔn)的服務(wù)擴(kuò)展,另外兩個(gè)以X開頭的是非標(biāo)準(zhǔn)的。 

(3)最后,我們來看看服務(wù)器不支持服務(wù)擴(kuò)展時(shí)的情況:

S:<等待連接在TCP端口25>

C:<連接到服務(wù)器>

S:220dbc.mtview.ca.usSMTPserviceready

C:EHLOymir.claremont.edu

S:500Commandnotrecognized:EHLO

...

代碼500表示服務(wù)器不支持服務(wù)擴(kuò)展。




發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 八宿县| 陕西省| 敦化市| 元江| 建平县| 克山县| 湟源县| 新野县| 日喀则市| 奈曼旗| 韩城市| 平山县| 灯塔市| 通州区| 敦煌市| 福泉市| 正镶白旗| 保亭| 凌云县| 神池县| 崇明县| 松潘县| 汉沽区| 安宁市| 江孜县| 南和县| 大安市| 克拉玛依市| 阳春市| 灵山县| 泰宁县| 龙海市| 泸溪县| 四平市| 赤壁市| 积石山| 彩票| 忻城县| 上犹县| 建阳市| 山西省|