簡單郵件傳輸協定
互聯網協定套組 |
---|
應用層 |
傳輸層 |
網絡層 |
連結層 |
此條目翻譯質素不佳。 (2018年7月25日) |
簡單郵件傳送協定(英語:Simple Mail Transfer Protocol,縮寫:SMTP)可用在傳送和接收電子郵件的資訊,但SMTP通常用作傳送電子郵件資訊,而不是接收。
SMTP是一個相對簡單的基於文字的協定。我們可以透過協定,指定將訊息傳送至一或多個接收者。我們可以很簡單地通過telnet程式來測試一個SMTP伺服器。SMTP主要使用TCP埠25。要為一個給定的域名決定一個SMTP伺服器,需要使用DNS的MX記錄。
在八十年代早期,SMTP開始被廣泛地使用。當時,它只是作為UUCP的補充,UUCP更適合於處理在間歇連接的電腦間傳送郵件。相對地,SMTP在穩定的網絡下,將傳送和接收的工作是做得相當好。
Sendmail是最早使用SMTP的郵件傳輸代理之一。在2001年,至少有50個程式將SMTP實現為一個客戶端(訊息的傳送者)或一個伺服器(訊息的接收者),包括了Philip Hazel的exim,IBM的Postfix, D. J. Bernstein的Qmail,以及Microsoft Exchange Server。
由於這個協定開始時,是基於純ASCII文字的,它在二進制檔案上處理得並不好。例如MIME的標準被開發來編碼二進制檔案,以使其透過SMTP來傳輸。今天,大多數SMTP伺服器都支援8位元MIME擴充,它使二進制檔案的傳輸,變得幾乎和純文字一樣簡單。
SMTP是一個「推播」協定,它不允許從遠端伺服器上接收訊息。若要接收訊息到客戶端,郵件客戶端必須使用POP3或IMAP。另一個SMTP伺服器可以使用ETRN在SMTP上觸發一個傳送。
互聯網 |
---|
互聯網主題 |
SMTP通訊舉例
[編輯]在傳送方(客戶端)和接收方(伺服器)間建立連接之後,會建立一個合法的SMTP對談,如下例。在下面的例子中,所有客戶端傳送的都以「C:」作為字首,所有伺服器傳送的都以「S:」作為字首。在多數電腦系統上,可以在傳送的機器上使用telnet命令來建立連接,比如:
telnet www.example.com 25
它建立一個從傳送的機器到主機www.example.com的SMTP連接。
S: 220 smtp.example.com ESMTP Postfix C: HELO relay.example.com S: 250 smtp.example.com, I am glad to meet you C: MAIL FROM:<[email protected]> S: 250 Ok C: RCPT TO:<[email protected]> S: 250 Ok C: RCPT TO:<[email protected]> S: 250 Ok C: DATA S: 354 End data with <CR><LF>.<CR><LF> C: From: "Bob Example" <[email protected]> C: To: Alice Example <[email protected]> C: Cc: [email protected] C: Date: Tue, 15 Jan 2008 16:02:43 -0500 C: Subject: Test message C: C: Hello Alice. C: This is a test message with 5 header fields and 4 lines in the message body. C: Your friend, C: Bob C: . S: 250 Ok: queued as 12345 C: QUIT S: 221 Bye {The server closes the connection}
雖然是可選的,但幾乎所有的客戶端都會使用EHLO問候訊息(而不是上面所示的HELO)來詢問伺服器支援何種SMTP擴充,郵件的文字體(接着DATA)一般是典型的MIME格式。
SMTP安全和垃圾郵件
[編輯]最初的SMTP的局限之一,在於它沒有對傳送方進行身份驗證的機制。因此,後來定義了SMTP-AUTH擴充。
儘管有了身份認證機制,垃圾郵件仍然是一個主要的問題。但由於龐大的SMTP安裝數量帶來的網絡效應,大刀闊斧地修改或完全替代SMTP被認為是不現實的。Internet Mail 2000就是一個替代SMTP的建議方案。
因此,出現了一些同SMTP工作的輔助協定。IRTF的反垃圾郵件研究小組正在研究一些建議方案,以提供簡單、靈活、輕量級的、可升級的源端認證。最有可能被接受的建議方案是發件人策略框架協定。
提供SSL加密的SMTP協定被稱為SMTPS。
參見
[編輯]相關 RFC
[編輯]- RFC 5321 - 簡單郵件傳輸協定,在最近(2008.8)代替了 RFC 2821
- RFC 2821 - 簡單郵件傳輸協定,在最近(2001)代替了 RFC 821,RFC 1869,RFC 974
- RFC 2822 - Internet(比如 e-mail)訊息格式,代替了 RFC 822
- RFC 3461 - SMTP的傳送狀態通知(DSN)擴充,代替了 RFC 1891