本頁使用了標題或全文手工轉換

簡單郵件傳輸協定

維基百科,自由的百科全書
跳到: 導覽搜尋

簡單郵件傳輸協定 (Simple Mail Transfer Protocol, SMTP) 是事實上的在Internet傳輸email的標準。

SMTP是一個相對簡單的基於文字協定。在其之上指定了一條訊息的一個或多個接收者(在大多數情況下被確認是存在的),然後訊息文字會被傳輸。可以很簡單地通過telnet程式來測試一個SMTP伺服器。SMTP使用TCP埠25。要為一個給定的域名決定一個SMTP伺服器,需要使用MX (Mail eXchange) DNS

在八十年代早期SMTP開始被廣泛地使用。當時,它只是作為UUCP的補充,UUCP更適合於處理在間歇連線的機器間傳送郵件。相反,SMTP在傳送和接收的機器在持續連線的網絡情況下工作得最好。

Sendmail是最早使用SMTP的郵件傳輸代理之一。到2001年至少有50個程式將SMTP實現為一個用戶端(訊息的傳送者)或一個伺服器(訊息的接收者)。一些其他的流行的SMTP伺服器程式包括了Philip Hazel的exim,IBM的Postfix, D. J. BernsteinQmail,以及Microsoft Exchange Server

由於這個協定開始是基於純ASCII文字的,它在二進制檔案上處理得並不好。諸如MIME的標準被開發來編碼二進制檔案以使其通過SMTP來傳輸。今天,大多數SMTP伺服器都支援8位元MIME擴充功能,它使二進制檔案的傳輸變得幾乎和純文字一樣簡單。

SMTP是一個「推」的協定,它不允許根據需要從遠端伺服器上「拉」來訊息。要做到這點,郵件用戶端必須使用POP3IMAP。另一個SMTP伺服器可以使用ETRN在SMTP上觸發一個傳送。

SMTP通訊舉例[編輯]

在傳送方(用戶端)和接收方(伺服器)間建立連線之後,接下來是一個合法的SMTP對談。在下面的對話中,所有用戶端傳送的都以「C:」作為字首,所有伺服器傳送的都以「S:」作為字首。在多數電腦系統上,可以在傳送的機器上使用telnet命令來建立連線,比如:

telnet www.example.com 25

它開啟一個從傳送的機器到主機www.example.com的SMTP連線。

S: 220 www.example.com ESMTP Postfix
C: HELO mydomain.com
S: 250 Hello mydomain.com
C: MAIL FROM: <sender@mydomain.com>
S: 250 Ok
C: RCPT TO: <friend@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: test message
C: From:""< sender@mydomain.com>
C: To:""< friend@example.com>
C:
C: Hello,
C: This is a test.
C: Goodbye.
C: .
S: 250 Ok: queued as 12345
C: quit
S: 221 Bye

雖然是可選的,但幾乎所有的用戶端都會使用HELO問候訊息(而不是上面所示的HELO)來詢問伺服器支援何種SMTP擴充功能,郵件的文字體(接着DATA)一般是典型的MIME格式。

SMTP安全和垃圾郵件[編輯]

最初的SMTP的局限之一在於它沒有對傳送方進行身份驗證的機制。因此,後來定義了SMTP-AUTH擴充功能。

儘管有了身份認證機制,垃圾郵件仍然是一個主要的問題。但由於龐大的SMTP安裝數量帶來的網絡效應,大刀闊斧地修改或完全替代SMTP被認為是不現實的。Internet Mail 2000就是一個替代SMTP的建議方案。

因此,出現了一些同SMTP工作的輔助協定。IRTF的反垃圾郵件研究小組正在研究一些建議方案,以提供簡單、靈活、輕量級的、可升級的源端認證。最有可能被接受的建議方案是發件人策略框架協定。

參見[編輯]

相關 RFC[編輯]

  • RFC 5321 - 簡單郵件傳輸協定,在最近(2008.8)代替了RFC 2821
  • RFC 2821 - 簡單郵件傳輸協定,在最近(2001)代替了RFC 821,RFC 1869RFC 974
  • RFC 2822 - Internet(比如 e-mail)訊息格式,代替了RFC 822
  • RFC 3461 - SMTP的傳送狀態通知(DSN)擴充功能,代替了RFC 1891

參考文獻[編輯]