Ban đầu server host bắt đầu một POP3 service bằng cách lắng nghe trên TCP port 110. Khi một client host mong muốn dùng POP3 service, nĩ thiết lập một kết nối TCP với server host đĩ. Khi kết nối được thiết lập, POP3 server gửi một chào hỏi. Client và server POP3 sau đĩ trao đổi những lệnh và các trả lời cho đến khi kết nối đĩ được đĩng hay loại bỏ.
Lệnh trong POP3 bao gồm một từ khố (keyword) theo sau cĩ thể là một hay nhiều đối số tất cả các lệnh được kết thúc bởi một cặp CRLF. Các từ khố và đối số được tách riêng ra bởi một ký tự trắng đơn , từ khố dài 3 hay 4 ký tự. Mỗi đối số cĩ thể lên đến chiều dài 40 ký tự.
Các trả lời trong POP3 bao gồm phần chỉ định trạng thái và một từ khố cĩ thể theo sau là thơng tin thêm vào. Tất cả các trả lời được kết thúc bởi một cặp CRLF. Chỉ cĩ hai loại trả lời là: chỉ định trạng thái khẳng định (“+OK”) và phủ định (“-ERR”) .
Trả lời cho các lệnh là trả lời nhiều dịng. Trong trường hợp này, nĩ cho phép chỉ định một cách rõ ràng, sau khi gửi dịng đầu tiên của câu trả lời và một CRLF, một số dịng thêm vào được gửi đi, mỗi dịng kết thúc bằng một cặp CRLF. Khi tất cả các dịng của trả lời đã được gửi đi bao gồm một số kết thúc hệ bát phân (termination octe) (mã 046 hệ mười, “.” ) và một cặp CRLF. Nếu dịng nào của trả lời nhiều dịng bắt đầu với termination octet dịng đĩ là "byte- stuffed" bằng cách (pre-pending) treo termination octet đĩ của dịng trả lời. Kể từ đây một trả lời nhiều dịng được kết thúc với năm octet "CRLF.CRLF". Khi xem xét một trả lời nhiều dịng client kiểm tra xem nếu dịng đĩ bắt đầu với termintion octet. Nếu đúng và nếu những octet theo sau khác với CRLF, octet đầu tiên của dịng này (termination octet) được bỏ đi. Nếu đúng và nếu những ký tự kết thúc theo ngay sau nĩ, thì trả lời từ POP3 server này được kết thúc với một dịng chứa “.CRLF” khơng được coi là một phần của trả lời nhiều dịng đĩ.
Một phiên POP3 tiến hành qua một số trạng thái trong thời gian sống của nĩ. Khi kết nối TCP được mở và một POP3 server gửi một chào hỏi. Hội nghị sẽ đi vào trạng thái xác nhận (AUTHORIZATION). Trong trạng thái này client phải định danh nĩ đến POP3 server. Khi client định danh thành cơng, server thu được những tài nguyên kết hợp với maildrop của client, và hội nghị đi vào trạng thái giao dịch (TRANSACTION). Trong trạng thái này client yêu cầu các hành động trong vai trị của POP3 server khi client phát ra lệnh QUIT, hội nghị đi vào trạng thái cập nhật (UPDATE). Trong trạng thái này giải phĩng các tài nguyên
thu nhận được trong trạng thái giao dịch và nĩi goodbye. Sau đĩ kết nối TCP đĩng lại.
Một POP3 server cĩ thể cĩ một khoảng thời gian tự động logout khơng chủ động. Và nĩ phải tồn tại trong khoảng thời gian ít nhất là 10 phút. Trong khoản thời gian nhận các lệnh từ client đủ để reset khoảng thời gian tự động logout đĩ. Đến khi hết hiệu lực, hội nghị khơng đi vào trạng thái UPDATE, server sẽ đĩng kết nối TCP mà khơng remove hay gửi một message nào cho client.
III. TRẠNG THÁI XÁC NHẬN (Authorization State)
Khi kết nối TCP được mở ra bởi một cleint. POP3 server sẽ xuất ra một dịng chào hỏi nĩ cĩ thể là một chuổi nào đĩ được kết thúc bởi CRLF.
Ví dụ :
S: +OK POP3 server ready
Chào hỏi đĩ là một POP3 reply. POP3 server bao giờ cũng sẽ truyền đi một trả lời khẳng định như chào hỏi trên.
Phiên POP3 hiện nằm trong trạng thái AUTHORIZATION. Client phải định danh và xác nhận nĩ với POP3 server. Cĩ hai cơ chế thích hợp để thực hiện. Sự kết hợp lệnh USER và PASS , và lệnh APOP.
Để xác nhận dùng sự kết hợp lệnh USER và PASS. Đầu tiên client phải phát một lệnh USER, nếu POP3 server trả lời với một chỉ thị trạng thái khẳng định (“+OK”), thì client cĩ thể phát đi lệnh PASS để hồn tất sự xác nhận hay lệnh QUIT để kết thúc POP3 session. Nếu POP3 server trả lời với một chỉ thị trạng thái phủ nhận (“-ERR”) cho lệnh USER, thì client cĩ thể phát ra một lệnh xác nhận mới hay cĩ thể phát một lệnh QUIT.
Khi client phát ra một lệnh PASS, POP3 server dùng cặp đối số từ lệnh USER và PASS để xác định nếu client sẽ được cho truy xuất đến maildrop thích hợp.
Khi POP3 server đã được xác định bằng các lệnh xác nhận, nĩ cho client truy xuất đến những mailbox thích hợp, sau đĩ POP3 server thu được một khố truy xuất loại trừ trên maildrop, vì sự cần thiết để ngăn chặn message bị sửa đổi hay bị loại bỏ trước khi hội nghị đi vào trạng thái UPDATE. Nếu thu nhận khố thành cơng POP3 server trả lời với một chỉ định trạng thái khẳng định. Và lúc này hội nghị đi vào trạng thái TRANSACTION mà khơng cĩ message nào bị đánh dấu để xố. Nếu maildrop khơng mở được vì một số lý do nào đĩ (ví du : một khố khơng thể nhận được, phía client bị từ chối truy cập tới maildrop thích hợp đĩ, hay maildrop khơng được phân tích cú pháp ), POP3 server trả lời với một chỉ định trạng thái phủ định (nếu một khố được thu nhận nhưng POP3 server dự định trả lời với một chỉ định trạng thái phủ định, POP3 server phải giải phĩng khố trước khi loại bỏ lệnh đĩ ). Sau khi trả về một chỉ định trạng thái phủ định server phải đĩng kết nối, nếu server khơng đĩng kết nối client cĩ
thể phát một lệnh xác nhận mới và bắt đầu trở lại, hoặc là client phát ra một lệnh QUIT.
Sau khi POP3 server mở được maildrop nĩ gán một số thứ tự cho mỗi message và biểu thị kích thước của mỗi message trong hệ bát phân (octet), message đầu tiên trong maildrop được gán thứ tự là “1”, message thứ hai là “2” … Trong các lệnh và các trả lời POP3 tất cả các số thứ tự và kích thước của message được trình bày dựa trên hệ 10 (decimal)
. Đây là những tĩm tắt cho ba lệnh POP3 bàn luận ở trên :
• USER name
- Đối số: Một chuổi định danh một mailbox (được yêu cầu), nĩ chỉ cĩ ý nghĩa với server.
- Giới hạn : Chỉ cĩ thể được cho trong trạng thái AUTHORIZATION sau khi POP3 chào hỏi hay sau khi một lệnh USER PASS khơng thành cơng .
- Câu trả lời cĩ thể :
+OK tên mailbox cĩ hiệu lực -ERR khơng chấp nhận tên mailbox
Ví dụ Ï:
C: USER mrose
S: +OK mrose is a real hoopy frood ...
C: USER frated
S: -ERR sorry, no mailbox for frated here
• PASS string
- Đối số: Một password cho mailbox hay server (được yêu cầu) a server/mailbox-specific password (required)
- Giới hạn : Chỉ cĩ thể dược cho trong trạng thái AUTHORIZATION sau khi một lệnh user thành cơng.
- Discussion: (thảo luận) : Kể từ đây lệnh PASS chỉ cĩ một đối số, một POP3
server cĩ thể xử lý khoảng trống trong đối số này như là một phần của password, thay vì là để tách đối số ra .
- Câu trả lời cĩ thể:
+OK khố maildrop và sẳn sàng -ERR password khơng hiệu lực
-ERR khơng được phép khố maildrop
Ví dụ :
C: USER mrose
S: +OK mrose is a real hoopy frood C: PASS secret
S: +OK mrose's maildrop has 2 messages (320 octets) ...
C: USER mrose
S: +OK mrose is a real hoopy frood C: PASS secret
S: -ERR maildrop already locked QUIT
- Đối số: khơng - Giới hạn: khơng - Câu trả lời cĩ thể: +OK
IV. TRẠNG THÁI GIAO DỊCH (Transaction)
Khi client định danh nĩ đến POP3 server thành cơng và POP3 server đã khố và mở maildrop thích hợp, POP3 session bây giờ trong trạng thái TRANSACTION ø client cĩ thể phát nhiều lần các lệnh POP3 sau đây. Sau mỗi lệnh POP3 server phát ra một câu trả lời. Cuối cùng client phát ra một lệnh QUIT và POP3 session đi vào trạng thái UPDATE .
Đây là các lệnh POP3 cĩ hiệu lực trong trạng thái TRANSACTION:
• STAT
- Đối số: khơng
- Giới hạn : Chỉ cĩ thể được cho trong trạng thái TRANSACTION.
- Discussion: (thảo luận) : POP3 server phát ra một trả lời khẳng định với một dịng chứa thơng tin của maildrop. Dịng này được gọi là một "drop listing" cho maildrop đĩ.
Thích hợp để phân tích cú pháp một cách đơn giản, tất cả các POP3 server yêu cầu dùng một định dạng cho drop listings. Câu trả lời khẳng định gồm cĩ “+OK” theo sau là một khoảng trắng đơn, và kích thước của maildrop trong hệ tám. Khơng yêu cầu cái gì theo sau maildrop size.
Lưu yù: Việc ngăn cản một cách mạnh mẽ sự thực thi các thơng tin phụ cung cấp trong drop listing. Mặt khác điều kiện được bàn luận sau, nĩ cho phép client phân tích cú pháp các message trong maildrop.
Chú ýù: Những message được đánh dấu xố khơng được đếm trong tổng số
- Câu trả lời cĩ thể: +OK nn mm Ví dụ : C: STAT S: +OK 2 320 • LIST [msg]
- Đối số: Một message-number (tuỳ ý) cĩ thể khơng tham khảo đến một message được đánh dấu xố.
- Giới hạn : Chỉ cĩ thể được cho trong trạng thái giao dịch.
- Discussion: Nếu một đối số được cho và POP3 server phát ra một trả lời khẳng định với một dịng chứa thơng tin cho message đĩ, dịng này được gọi là “scan listing” cho message đĩ.
Nếu khơng cĩ đối số được trao cho và POP3 server phát ra một trả lời khẳng định thì trả lời được cho là multi-line. Sau khi khởi tạo +OK, cho mỗi message trong maildrop, POP3 server trả lời với một dịng chứa thơng tin cho message đĩ. Dịng này cũng được gọi là một “scan listing” cho message đĩ .
Phù hợp để đơn giản hố việc phân tích cú pháp, tất cả các POP3 server yêu cầu dùng một định dạng cho scan listing. Một scan listing bao gồm số thứ tự của message đĩ, theo sau là một khoảng trắng đơn và kích thước chính xác của message đĩ bằng hệ tám, khơng yêu cầu những gì theo sau khích thước message trong scan listing.
Lưu yù: Ởû đây ngăn cản một cách mạnh mẽ sự thực thi các thơng tin phụ cung cấp trong scan listing. Mặt khác, điều kiện được bàn luận sau , nĩ cho phép client phân tích cú pháp các message trong maildrop. Những message được đánh dấu xố khơng được liệt kê .
- Câu trả lời cĩ thể: +OK scan listing follows -ERR no such message
Ví dụ :
C: LIST
S: +OK 2 messages (320 octets) S: 1 120 S: 2 200 S: . ... C: LIST 2 S: +OK 2 200 ... C: LIST 3
S: -ERR no such message, only 2 messages in maildrop
• RETR msg
- Đối số : Một message-number (được yêu cầu) nĩ cĩ thể khơng tham khảo đến một message được đánh dấu xĩa.
- Giới hạn : Chỉ được cho trong trạng thái TRASACTION
- Discussion : Nếu POP3 server phát ra một trả lời khẳng định, thì trả lời được trao là multi-line. Sau khi khởi tạo +OK , POP3 server gửi một message tương ứng với số thứ tự được cho, một cách cẩn thận để byte-stuff ký tự cuối cùng (như với các trả lời multi-line) .
+OK message follows -ERR no such message
Ví dụ :
C: RETR 1
S: +OK 120 octets
S: <the POP3 server sends the entire message here> S: .
DELE msg
- Đối số : Một message-number (được yêu cầu) cĩ thể khơng tham khảo đến một message được đánh dấu xố.
- Giới hạn : Chỉ được cho trong trạng thái TRANSACTION .
- Discussion : POP3 server đánh dấu xố message đĩ. Những tham khảo sau đĩ đến số thứ tự kết hợp với message đĩ của một lệnh POP3 sẽ sinh ra lỗi. POP3 server khơng thật sự xố message đĩ cho đến khi phiên POP3 đi vào trạng thái UPDATE .
- Câu trả lời cĩ thể: +OK message deleted
-ERR no such message
Ví dụ :
C: DELE 1
S: +OK message 1 deleted ...
C: DELE 2
S: -ERR message 2 already deleted NOOP
- Đối số: khơng
- Giới hạn : Chỉ được cho trong trạng thái TRANSACTION
- Discussion : POP3 server khơng làm gì hết , nĩ chỉ hồi âm với một trả lời khẳng định. - Câu trả lời cĩ thể: +OK Ví dụ: C: NOOP S: +OK • RSET - Đối số: khơng
- Giới hạn : Chỉ được cho trong trạng thái TRANSACTION .
- Discussion : Nếu một message nào đĩ đã được đánh dấu xố bởi POP3 server, chúng được bỏ đánh dấu xố (unmark ). Sau đĩ POP3 server hồi âm với một trả lời khẳng định.
+OK
Ví dụ :
C: RSET
S: +OK maildrop has 2 messages (320 octets)
V. TRẠNG THÁI CẬP NHẬT (Update)
Khi client phát ra một lệnh QUIT từ trạng thái TRANSACTION, phiên POP3 đi vào trạng thái UPDATE (lưu ý rằng nếu client phát ra một lệnh QUIT từ trạng thái AUTHORIZATION, POP3 session kết thúc nhưng khơng đi vào trạng thái UPDATE).
Nếu phiên POP3 kết thúc vì các lí do khác, sau đĩ một lệnh QUIT được phát ra từ phía client, phiên POP3 khơng đi vào trạng thái UPDATE và sẽ khơng xĩa một message nào từ maildrop đĩ.
• QUIT
- Đối số: khơng - Giới hạn: khơng
- Discussion : POP3 server loại bỏ tất cả các mesasage được đánh dấu xĩa từ maildrop. Sau đĩ nĩ giải phĩng các khĩa truy cập loại trừ (exclusive- access lock) trên maildrop đĩ và các reply về phần tình trạng của những thao tác này. Sau đĩ kết nối TCP được đĩng lại.
- Câu trả lời cĩ thể: +OK
Ví dụ :
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty) ...
C: QUIT
S: +OK dewey POP3 server signing off (2 messages left) ...
VI. CÁC LỆNH POP3 CHỌN LỰA (Optional POP3 Commands)
Những lệnh POP3 được nĩi đến ở trên phải được hổ trợ bởi sự thực thi tối thiểu của POP3 server.
Các lệnh POP3 lựa chọn được mơ tả sau đây cho phép một POP3 client tự do hơn trong việc điều khiển message, trong khi vẩn giữ một sự thực thi POP3 server đơn giản.
Lưu ý: Sổ ghi chép khuyến khích những sự thự thi nhằm hổ trợ cho những lệnh này thay cho việc phát triển tăng thêm drop và scan listing. Thu gọn, triết lý của sổ ghi nhớ là nhằm đặt một sự thơng minh trong vai trị của client POP3 và khơng cho server POP3.
• TOP msg n
- Đối số: Một message-number (được yêu cầu) nĩ cĩ thể khơng tham khảo đến một message được đánh dấu xĩa, và một non-negative number (được yêu cầu) .
- Giới hạn : Chỉ được cho trong trạng thái TRANSACTION
- Discussion : Nếu POP3 server phát ra một trả lời khẳng định, thì trả lời được trao là multi-line. Sau khởi tạo +OK , POP3 server gửi header của message đĩ, dịng trống tách header khỏi body, và sau đĩ là số dịng chỉ định phần body của message, nên cẩn thận để byte-stuff ký tự cuối cùng (như với tất cả các trả lời muti- line) .
Chú yù : Nếu số dịng được yêu cầu bởi POP3 client lớn hơn số dịng trong body thì POP3 server gửi tồn bộ message đĩ .
- Câu trả lời cĩ thể:
+OK top of message follows -ERR no such message
Ví dụ :