TCP/IP 與 Internet 網路:第十四章 電子郵件系統 上一頁 下一頁
14-5 POP3 協定
『郵局協定』(Post Office Protocol, POP)的功能和一般郵政系統的郵政信箱非常類似,目前大多使用第三版本(Version 3),一般以『POP3』稱呼之。POP3 協定用於客戶端電腦和郵件伺服器之間的通訊,讓使用者可以從郵件伺服器上下載信件,它的功能就如同使用者到郵局的信箱索取信件一樣。尤其在 Internet 網路上,客戶端電腦大多不會隨時等待接收信件,當信件來到時,便將信件儲存在郵件伺服器上,使用者再利用個人電腦透過 POP3 協定,將信件從郵件伺服器上下載到客戶端電腦上。當然客戶端電腦也需要有一套軟體工具來處理下載的工作,一般在 Linux 系統上是以 fetchmail 程式;而 Windows 系統是以 Outlook 來處理(14-7 節介紹)。如果使用者在主機電腦(如 linux-1)上讀取郵件,而此主機電腦也是該使用者郵件的郵件伺服器(Mail Server)的話,便不需要 POP3 協定。一般為了標明此郵件伺服器所提供的通訊協定,而將有提供 POP3 協定的郵件伺服器,稱之為『POP3 Server』。POP3 協定的功能如圖 14-6 所示,當信件由 SMTP 協定轉送到郵件伺服器後,客戶端電腦再利用 POP3 協定,將信件下載下來。
圖 14-6 POP3 協定功能
POP3 的標準規範是 RFC 1725 和 RFC 1939,傳輸方式為 NVT ASCII 終端機模式,通訊雙方使用『命令/回覆』的交談方式(如十二章介紹),通訊端點建立在 110/tcp。
最小化的 POP3 提供有下列交談命令:USER name、PASS string、QUIT、STAT、LIST [msg]、RETR msg、DELE msg、NOOP、RESET;選項命令有:APOP name digest、TOP msg n、UIDl [msg];回應訊息是 +OK 和 -ERR。這些命令提供給 POP3 客戶端和伺服端之間交談使用,如果伺服端執行正常,則回應 +OK;否則回應 -ERR。在整個連線通訊當中,可區分為:認證(Authorization)、交易(Transaction)與更新(Update)等三個階段,我們分別以這三個階段來介紹 POP3 命令。
(A)認證階段(Authorization)
認證表示使用者連接 POP3 伺服器之後,登入(Login)使用者名稱及密碼驗證的階段,登入後才可以從事於信箱的處理工作(下載或刪除),其中會使用到 USER 和 PASS 兩個命令,並可以 QUIT 命令離開 POP3 伺服器,操作範例如下:
[tsnien@linux-1 root]$ mail tsnien@linux-2.cu.edu.tw Subject: test pop3 test pop3 mail . Cc: [tsnien@linux-1 root]$ telnet linux-2.cu.edu.tw 110 Trying 163.15.2.30... Connected to linux-2.cu.edu.tw. Escape character is '^]'. +OK POP3 linux-2.cu.edu.tw v2000.70rh server ready user tsnien +OK User name accepted, password please pass kk3456 +OK Mailbox open, 1 messages |
上述範例是由 linux-1 的 root 發送一封信件給 linux-2 伺服器下的 tsnien 使用者,緊接著,root 登入 linux-2 的 POP3 伺服器,並以 user 和 pass 命令來通過伺服器的認證。
(B)交易階段(Transaction)
經過認證階段之後,便立即進入交易(Transaction)階段,以下範例為下載信件到客戶端電腦(linux-1)的處理動作:(括弧內為命令動作說明)
stat (顯示目前信箱郵件數目及郵件大小,Bytes) +OK 1 598 list 1 (顯示第一封信件) +OK 1 598 retr 1 (下載第一封信件) +OK 598 octets Return-Path: <root@linux-1.cu.edu.tw> Received: from linux-1.cu.edu.tw (IDENT:root@linux-1.cu.edu.tw [163.15.2.62]) by linux-2.cu.edu.tw (8.11.6/8.11.6) with ESMTP id g771nqM10366 for <tsnien@linux-2.cu.edu.tw>; Wed, 7 Aug 2002 09:49:52 +0800 Received: (from root@localhost) by linux-1.cu.edu.tw (8.9.3/8.9.3) id JAA00967 for tsnien@linux-2.cu.edu.tw; Wed, 7 Aug 2002 09:42:41 GMT Date: Wed, 7 Aug 2002 09:42:41 GMT From: root <root@linux-2.cu.edu.tw> Message-Id: <200208070942.JAA00967@linux-1.cu.edu.tw> To: tsnien@linux-2.cu.edu.tw Subject: test2 Status:
test pop3 server . dele 1 (刪除第一封信件) +OK Message deleted stat (顯示目前郵件數目) +OK 0 0 . |
除了上述命令外,交易階段還有下列命令:
■ NOOP:(No Operation)無動作。測試 POP3 伺服器是否工作正常。
■ RESET:(Reset)重。重設雙方狀態,如有標示刪除的信件(Message),會回覆成原來狀態。
■ TOP:(Top)頂端資料。可觀察某一信件(或 Message),前面幾行的內容,如 TOP 1 10,表示顯示第一封信件的前面 10 行的內容。
(C)更新階段(Update)
雖然郵件信箱經過交易階段的處理,但它只是標示處理狀態,並未真正的執行,因此,必須經過更新階段,才會真正的處理。譬如,信件被標示為刪除,還可以利用 RESET 命令救回來,如果以 QUIT 命令離開後,便真正處理刪除的動作,下次再登入時,已救不回被刪除的檔案。動作範例如下:
quit (離開並更新郵件信箱) +OK Sayonara Connection closed by foreign host. [root@linux-1 /root]# |