簡單郵件傳輸協議模型
時間:2022-02-17 20:57:01 | 來源:信息時代
時間:2022-02-17 20:57:01 來源:信息時代
SMTP設計基于以下通信模型:針對用戶的郵件請求,發(fā)送SMTP建立與接收SMTP之間建立一個雙向傳送通道。接收SMTP可以是最終接收者也可以是中間傳送者。SMTP命令由發(fā)送SMTP發(fā)出,由接收SMTP接收,而應答則反方面?zhèn)魉汀?br>
一旦傳送通道建立,SMTP發(fā)送者發(fā)送MAIL命令指明郵件發(fā)送者。如果SMTP接收者可以接收郵件則返回OK應答。SMTP發(fā)送者再發(fā)出RCPT命令確認郵件是否接收到。如果SMTP接收者接收,則返回OK應答;如果不能接收到,則發(fā)出拒絕接收應答(但不中止整個郵件操作),雙方將如此重復多次。當接收者收到全部郵件后會接收到特別的序列,如果接收者成功處理了郵件,則返回OK應答。
SMTP提供傳送郵件的機制,如果接收方與發(fā)送方連接在同一個傳送服務下時,郵件可以直接由發(fā)送方主機傳送到接收方主機;或者,當兩者不在同一個傳送服務下時,通過中繼SMTP服務器傳送。為了能夠對SMTP服務器提供中繼能力,它必須擁有最終目的主機地址和郵箱名稱。
MAIL命令參數是回復路徑,它指定郵件從何處來;而RCPT命令的參數是轉發(fā)路徑的,它指定郵件向何處去。向前路徑是源路徑,而回復路徑是返回路徑(它用于發(fā)生錯誤時返回郵件)。
當同一個消息要發(fā)往不同的接收者時,SMTP遇到了向不同接收者發(fā)送同一份數據的復制品的問題,郵件命令和應答有一個比較奇怪的語法,應答也有一個數字代碼。在下面,例子中可以看到哪些使用實際的命令和應答。完整的命令和應答在第四節(jié)。
命令與應答對大小寫不敏感,也就是說,命令和應答可以是大寫,小寫或兩者的混合,但這一點對用戶郵件名稱卻不一定是對的,因為有的主機對用戶名大小寫是敏感的。這樣SMTP實現中就將用戶郵箱名稱保留成初始時的樣子,主機名稱對大小寫不敏感。
命令與應答由ASCⅡ字母表組成,當傳送服務提供8位字節(jié)傳送通道,每7位字符正確傳送,而最高位被填充為0。當指定一般的命令或應答格式后,參數會由一些類似于語言的字符串表示出來,如'
'或'',這里尖括號表示這是一種類似于語言的變量。