PHẦN 2: CƠ SỞ LÝ THUYẾT
5.3 Giao thức POP3:
5.3.1 Lịch sử:
Năm 1984, RFC 918 được công bố định nghĩa giao thức POP (Post Office Protocol) – đó là một tập các hành động gồm có người dùng cung cấp thông tin username/password để server chứng thực và tải nội dung của hòm thư về máy.
Đến tháng 2 năm 1985, RFC 937 định nghĩa POP phiên bản 2 bổ sung thêm tập lệnh và cho phép tải từng thư thay vì cả hòm thư. Tuy nhiên POP2 vẫn còn tương đối đơn giản và POP3 ra đời năm 1988 trong RFC 1081. POP3 tăng cường khả năng truy xuất và nhận mail cho các thiết bị.
Hiện nay POP3 đang được sử dụng và ngầm được hiểu đến khi nói đến giao thức POP.
5.3.2 Tổng quan:
Post Office Protocol(viết tắt là POP) là giao thức là tầng application, sử dụng ở mail client cho phép client nhận email từ server thông qua kết nối TCP/IP.
Các đặc điểm của POP:
- Chỉ hỗ trợ download và xóa mail.
- Cổng(Port) chuẩn: 110 Mô hình hoạt động của POP3:
(Nguồn: www.TCPIPGuide.com)
• Trạng thái chứng thực (Authorization State):
Server gửi lời chào tới client cho biết đã sẵn sàng nhận lệnh. Client cung cấp thông tin chứng thực để truy cập vào hòm thư. Phương pháp thường sử dụng để chứng thực bằng POP3 là dùng username / password để đăng nhập. Đầu tiên client phát sinh lệnh USER kèm theo tham số tên của hòm thư, server sẽ đáp lại ngay lập tức. Sau đó client phát sinh lệnh PASS kèm theo tham số password. Nếu đăng nhập thành công, server sẽ thông báo và kèm theo số lượng thư có trong hòm thư. Client chuyển sang trạng thái giao tác.
(Nguồn: www.TCPIPGuide.com)
Ngoài ra POP3 còn định nghĩa các cơ chế chứng thực khác như dùng lệnh APOP, AUTH.
• Trạng thái giao tác (Transaction State):
Client có thể lấy thư và xóa thư trong hòm thư.
Client có thể thao tác trên hòm thư qua các lệnh : STAT, LIST, RETR, DELE, NOOP, RSET, TOP, UIDL.
(Nguồn: www.TCPIPGuide.com)
• Trạng thái cập nhật (Update State): Khi client đã kết thúc giao tác bằng lệnh QUIT, server sẽ xóa các thư được đánh dấu đã xóa và đóng kết nối với client.
5.3.3 Các lệnh hỗ trợ:
• Lệnh USER:
- Cú pháp:
USER<SP> username <CRLF>
- Tham số: username: tên truy cập của người dùng (tên địa chỉ mail, cò thể không cần phần thông tin domain).
- Ý nghĩa: Câu lệnh USER cung cấp User của người dùng cho Server. Câu lệnh này là câu lệnh đầu tiên sau khi thực hiện việc connect với server
- Ví dụ:
• Lệnh PASS:
- Cú pháp:
PASS<SP>password<CRLF>
- Tham số: password: mật khẩu ứng với username.
- Ý nghĩa: Câu lệnh PASS cung cấp một mật khẩu dạng plaintext để chứng thực User đã điền ở phía trên.
Thực hiện sau câu lệnh USER, câu lệnh này để điền password khi đăng nhập vào mail, với pwd là chuỗi password
- Ví dụ:
• Lệnh STAT:
- Cú pháp:
STAT<CRLF>
- Tham số: không có
- Ý nghĩa: Cho biết số lượng mail và dung lượng tổng cộng của các mail đó trong hòm thư. Nếu câu lệnh thành công thì nó sẽ trả về dạng +OK #msgs #bytes. Trong đó:
o #msgs: số lượng mail có trong hòm mail.
o #bytes: tổng dung lượng(tính theo đơn vị byte) của các mail trong hòm thư đó.
- Ví dụ:
• Lệnh LIST:
- Cú pháp:
LIST<CRLF>
- Tham số: không có
- Ý nghĩa: Liệt kê số lượng mail và dung lượng của từng mail, mỗi mail liệt kê một dòng, ví dụ như:
+OK 3 messages
1 1205
2 305
3 344400
Ở ví dụ trên hòm mail có 3 mail, được liệt kê ở dưới.
- Ví dụ:
• Lệnh LAST:
- Cú pháp:
LAST<CRLF>
- Ý nghĩa: Trả về số thứ tự của mail được đọc hoặc xóa cuối cùng
- Ví dụ:
• Lệnh RETR:
- Cú pháp:
RETR<SP>msg#<CRLF>
- Tham số: msg#: số thứ tự của mail.
- Ý nghĩa: Nhận về mail thứ msg# trong hòm thư, ví dụ khi thực hiện câu lệnh RETR 3, hòm thư sẽ trả về nội dung mail thứ 3 trong hòm thư. - Ví dụ: RETR 3 • Lệnh TOP: - Cú pháp: TOP<SP>msg#<SP>line#<CRLF>
- Tham số: msg#: số thứ tự của mail; line#: số lượng dòng trong phần thân (không bao gồm phần header) được nhận về, nếu line# bằng 0 thì nhận về chỉ là phần header của message.
- Ý nghĩa: Gởi về nội dung mail thứ msg# gồm phần header và line# dòng đầu trong phần thân của mail đó.
Lưu ý: Không phải server nào cũng hỗ trợ câu lệnh này
- Ví dụ:
TOP 12 0
• Lệnh DELE:
- Cú pháp:
DELE<SP>msg#
- Tham số: msg#: số thứ tự của message.
- Ý nghĩa: Đánh dấu là sẽ xóa mail thứ msg# trong hòm thư. Lệnh này chỉ được thực thi thật sự khi lệnh QUIT được thực thi. Nếu kết nối tới server bị ngắt trước khi thực hiện lệnh QUIT. Câu lệnh xóa mail này sẽ không diễn ra.
- Ví dụ:
DELE 10
• Lệnh RSET:
- Cú pháp:
RSET<CRLF>
- Tham số: không có.
- Ý nghĩa: Câu lệnh này sẽ hủy tất cả những thư bị đánh dấu bởi lệnh DELE. Khi thực hiện lệnh QUIT thì các thư đã được RSET sẽ không bị xóa.
- Cú pháp:
APOP<SP>username<SP>encryptedKey<CRLF>
- Tham số: username: tên tài khoản mail; encryptedKey: khóa trao đổi được mã hóa.
- Ý nghĩa: Cho phép kích hoạt chế độ bảo mật của chứng thực POP3. Khi chế này được kích hoạt, password sẽ không được gởi dưới dạng text thông thường mà gởi dưới dạng chuỗi đã được mã hóa bằng thuật toán MD5 từ password, process ID và thời gian.
- Ví dụ:
• Lệnh QUIT:
- Cú pháp:
QUIT<CRLF>
- Tham số: không có
- Ý nghĩa: Xóa tất cả mail được đánh dấu bằng lệnh DELE. Sau đó ngắt kết nối khỏi server.