Chương 4: Các giao thức trong gửi nhận E-mail
C: A023 LOGOUT S: * BYE IMAP4rev1 Server logging out
• Lệnh LOGOUT:
o Cấu trúc: LOGOUT<CRLF>
o Tham số: không có
o Trả lời: Phải có câu trả lời BYE(Không có nhãn).
o Kết quả: OK – Logout thành công
BAD – Câu lệnh hoặc tham số sai
o Ý nghĩa: Câu lệnh Logout cho Server biết Client đã thực hiện xong việc kết nối. Server phải gởi một trả lời BYE trước trả lời OK (Có nhãn), sau đó Server đóng kết nối lại.
o Ví dụ:
C: A023 LOGOUT
S: * BYE IMAP4rev1 Server logging out S: A023 OK LOGOUT completed
Nhóm lệnh dùng ở trạng thái chưa được chứng thực:
• Lệnh STARTTLS:
o Cấu trúc: STARTTLS<CRLF>
o Tham số: không có
o Trả lời: Không có trả lời nào đặc biệt cho câu lệnh này.
Chương 4: Các giao thức trong gởi nhận E-mail
o Kết quả: OK – Câu lệnh thành công, bắt đầu quá trình thương lượng bằng TLS.
BAD – Câu lệnh sai hoặc tham số sai
o Ý nghĩa: Quá trình thương lượng bằng TLS sẽ bắt đầu ngay sau CRLF tại câu trả lời có nhãn OK của server. Không nên đưa ra câu lệnh nào khác trừ khi server đã trả lời quá trình thương lượng bằng TLS hoàn tất.
Server tồn tại dưới dạng không chứng thực, ngay cả khi Client có ủy nhiệm trong quá trình thương lượng TLS.
Client nên xóa tất cả thông tin trước đó về server và thực hiện lại lệnh CAPABILITY. Lúc này, có thể server sẽ hỗ trợ thêm các khả năng mới cho client trong môi trường mạng đã an toàn
o Ví dụ:
C: a001 CAPABILITY
S: * CAPABILITY IMAP4rev1 STARTTLS LOGINDISABLED
S: a001 OK CAPABILITY completed C: a002 STARTTLS
S: a002 OK Begin TLS negotiation now <TLS negotiation, further commands are under [TLS]
layer>
C: a003 CAPABILITY
S: * CAPABILITY IMAP4rev1 AUTH=PLAIN S: a003 OK CAPABILITY completed
C: a004 LOGIN joe password S: a004 OK LOGIN completed
• Lệnh LOGIN:
o Cấu trúc: LOGIN<SP>username<SP>password<CRLF>
o Tham số: username:tên truy cập; password: mật khẩu truy cập.
o Trả lời: Không có trả lời đặc biệt cho câu lệnh này.
o Kết quả: OK – Đăng nhập thành công, đang ở trạng thái chứng thực.
NO – Đăng nhập không thành công: Username hay Password sai.
BAD – Câu lệnh sai hoặc tham số sai
o Ý nghĩa: Câu lệnh LOGIN xác nhận Client và một password dạng plaintext để chứng thực người dùng này.
Server có thể kết hợp cả câu trả lời CAPABILITY trong nhãn OK để trả lời cho câu lệnh LOGIN thành công để gởi khả năng của server một cách tự động.
• Lệnh AUTHENTICATE:
o Cấu trúc: AUTHENTICATE<SP>auth-name<CRLF>
o Tham số: auth-name:tên cơ chế dùng để chứng thực.
o Trả lời: yêu cầu cung cấp thêm thông tin để tiếp tục lệnh.
o Kết quả: OK: chứng thực thành công, client vào trạng thái đã được chứng thực;
NO: chứng thực thất bại;
BAD: không nhận ra lệnh hoặc tham số không hợp lệ, sự trao đổi chứng thực bị hủy.
o Ý nghĩa: Việc trao đổi giao thức chứng thực bao gồm các thách thức (challenges) từ server và các trả lời của client. Thách thức của server là chuỗi BASE64 theo sau dấu “+”. Nếu client muốn hủy quá trình chứng thực thì chỉ cần gửi một lệnh chứa duy nhất “*” cho server.
Nhóm lệnh dùng ở trạng thái đã được chứng thực:
• Lệnh SELECT:
o Cấu trúc: SELECT<SP>mail-box<CRLF>
o Tham số: mail-box: tên hộp thư (thư mục)
o Trả lời: Yêu cầu sự đáp lại không nhãn: FLAGS, EXISTS, RECENT Yêu cầu sự đáp lại không nhãn với OK: UNSEEN, PERMANENTFLAGS, UIDNEXT, UDIVALIDITY.
o Kết quả: OK: nếu lệnh thành công, vào trạng thái đã chọn hộp thư NO: lệnh thất bại, không có hộp thư hoặc không có quyền truy cập
BAD: không nhận ra lệnh hoặc tham số không hợp lệ.
FLAGS Các cờ được định nghĩa trong hộp thư.
<n> EXISTS Số lượng tin nhắn trong hộp thư.
Chương 4: Các giao thức trong gởi nhận E-mail
<n> RECENT Số lượng các tin nhắn có cờ /Recent
OK [UNSEEN <n>] Số thứ tự của tin nhắn chưa được đọc đầu tiên.
OK [PERMANENTFLAGS (list of flags)] danh sách các cờ mà client có thể thay đổi vĩnh viễn. Nếu không có danh sách này thì mặc định có thể thay đổi tất cả các cờ.
OK [UIDNEXT <n>] Giá trị UID tiếp theo.
OK [UDIVALIDITY <n>] Giá trị UID có hiệu lực.
Với mỗi kết nối chỉ có thể chọn một hộp thư trong một thời điểm.
Nếu client được phép thay đổi hộp thư thì trong kết quả trả về kèm theo “[READ-WRITE]” theo sau OK.
o Ý nghĩa: Với mỗi kết nối chỉ có thể chọn một hộp thư trong một thời điểm.
Nếu client được phép thay đổi hộp thư thì trong kết quả trả về kèm theo “[READ-WRITE]” theo sau OK.
o Ví dụ: