TCP/IP 與 Internet 網路:第十四章 電子郵件系統  上一頁           下一頁

 

翻轉工作室:粘添壽

 

14-6 IMAP 協定

『交談式郵件存取協定』(Interactive Mail Access Protocol, IMAP是提供客戶端電腦和郵件伺服器之間通訊使用,讓使用者直接登入郵件伺服器,從事郵件存取的工作(閱讀或刪除)。IMAP POP3 有很大的不同點,前者是直接在郵件伺服器上處理信件;而後者是直接將信件下載到客戶端電腦,使用者再由客戶端電腦處理信件。一般情況,當 POP3 將信件下載到客戶電腦後,便會立即清除伺服器上的郵件,但有些使用者在世界各地環遊當中,必需隨時查閱自己信箱裡的信件,查閱時並非使用自行電腦來連接伺服器,當然也不希望信件下載到他人電腦上,此時便需要利用 IMAP 協定來連接郵件伺服器。一般郵件伺服器都有提供 POP3 IMAP 協定,讓客戶選擇使用。IMAP 協定功能如圖 14-7 所示。

14-7 IMAP 協定功能

時下 IMAP 的最新版本是 Version 4,也稱之為IMAP4,是根據 RFC 1730 制定的標準規範,但目前 Linux 系統上大多使用第二版本(IMAP2),標準規範為 RFC 1176IMAP 的連結方式也如同一般 Internet 應用系統一樣,採用 NVT ASCII 終端系統方式,連接埠口位於 143/tcp

IMAP 協定的交談命令和一般系統有點不同,客戶端在下達命令之前必須給予一個標籤號碼(Tag),伺服端再依照該標籤號碼回應,常用之命令如下:

tag NOOP無動作,測試伺服器是否工作正常。

tag LOGIN user password使用者登入 IMAP 伺服器。

tag LOGOUT登出郵件伺服器。

tag SELECT mailbox選擇使用之郵件信箱,一般都以登入使用者的收信信箱(INBOX)。

tag FETCH sequence data攫取信件,如 tag FETCH 1 all,表示讀取第一封信件(1)的全部內容(all)。

tag BROAD bulletin_board廣播到 BBS 看板。

tag EXPUNGE刪除已擷取(Fetch)的信件。

tag COPY sequence mailbox複製信件(sequence)到另一個信箱(mailbox)。

tag STORE sequence data value儲存某些資料到信件內。

當伺服端收到命令,可能會回應下列訊息之一給客戶端:(節錄部分)

tag OK text執行正常,其中 tag 為下達命令時所附的標籤號碼,text 為回應說明。

tag NO text命令無法執行。

tag BAD text命令結構錯誤,無法辨識。

* number message_data訊息說明。

* BYE text通訊結束說明。

以下範例是由 linux-1 主機上連接到郵件伺服器(linux-2),並以 tsnien 名稱登入,來處理信件的操作範例,其中粗體加底線的文字為客戶端輸入的命令,其它文字是由伺服端所回應的訊息。

[tsnien@linux-1 root]$ telnet linux-2.cu.edu.tw 143

Trying 163.15.2.30...

Connected to linux-2.cu.edu.tw.

Escape character is '^]'.

* OK [CAPABILITY IMAP4 IMAP4REV1 STARTTLS LOGIN-REFERRALS AUTH=LOGIN] linux-2.cu

.edu.tw IMAP4rev1 2000.287rh at Wed, 7 Aug 2002 17:44:31 +0800 (CST)

a200 login tsnien ks3456    (登入郵件伺服器)

* CAPABILITY IMAP4 IMAP4REV1 STARTTLS NAMESPACE IDLE MAILBOX-REFERRALS SCAN SORT

 THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND

a200 OK LOGIN completed

a201 select inbox     (選擇收信信箱)

* 2 EXISTS

* 0 RECENT

* OK [UIDVALIDITY 1028713376] UID validity status

* OK [UIDNEXT 3] Predicted next UID

* FLAGS (\Answered \Flagged \Deleted \Draft \Seen)

* OK [PERMANENTFLAGS (\* \Answered \Flagged \Deleted \Draft \Seen)] Permanent fl

ags

* OK [UNSEEN 1] first unseen message in /var/spool/mail/tsnien

a201 OK [READ-WRITE] SELECT completed

a202 fetch 1 all  (攫取第一封信件)

* 1 FETCH (FLAGS () INTERNALDATE " 7-Aug-2002 17:41:50 +0800" RFC822.SIZE 591 EN

VELOPE ("Wed, 7 Aug 2002 17:34:46 GMT" "test imap-1" ((NIL NIL "tsnien" "linux-2

.cu.edu.tw")) ((NIL NIL "tsnien" "linux-2.cu.edu.tw")) ((NIL NIL "tsnien" "linux

-2.cu.edu.tw")) ((NIL NIL "tsnien" "linux-2.cu.edu.tw")) NIL NIL NIL "<200208071

734.RAA01167@linux-1.cu.edu.tw>"))

a202 OK FETCH completed

a203 expunge   (刪除第一封信件)

a203 OK No messages deleted, so no update needed

a207 logout   (登出郵件伺服器)

* BYE linux-2.cu.edu.tw IMAP4rev1 server terminating connection

a207 OK LOGOUT completed

Connection closed by foreign host

 

 

<GOTOP>