MỤC LỤC
Sự giao tiếp giữa sender và receiver được định là một cuộc hội thoại tuần tự do sender điều khiển. Chẳng hạn như sender sinh ra một lệnh và receiver trả lời với một reply. Thông thường một receiver sẽ gửi một reply 220 “service ready” khi kết nối hoàn thành.
Lưu ý: tất cả các reply kiểu chào hỏi dùng tên chính thức của host server là từ đầu tiên theo sau mã reply. Những tiền tố được dùng trước những reply có thể là “P” để khởi đầu (không dùng trong SMTP) “I” cho phần giữa,. Reply 421 (dịch vụ không hiệu lực, đóng kênh giao chuyển) có thể cho một số lệnh nếu receiver-SMTP nhận biết rằng nó phải shut down.
Sự liệt kê sau đây là cấu trúc cơ bản cho sơ đồ trạng thái(state diagram) trong phaàn IV.C.
➛Lưu ý: “data” ở đây là một chuỗi những dòng gửi từ sender đến receiver không cần sự trả lời cho đến khi dòng cuối cùng được gửi.
Nếu những thay đổi trên là cần thiết, chúng phải khôi phục lại( biến đổi hai chiều) được nếu những biến đổi đó được áp dụng cho mail được chia ca. Đó là tất cả tất cả sự thực thi phải có để nhận những đối tượng có kích thước tối thiểu, nhưng không bắt buộc phải gửi những đối tượng lớn hơn kích thước này. domain : Chiều dài tổng cộng lớn nhất của domain name hay số là 64 ký tự.
path : Chiều dài tổng cộng lớn nhất của một dòng lệnh bao gồm những từ lệnh và. text line (dòng văn bản) : Chiều dài tổng cộng lớn nhất của dòng văn bản bao gồm. * Lỗi vượt quá quyền được giới hạn có thể được báo cáo bằng cách dùng những mã reply.
Mỗi ký tự được truyền như một byte 8 bit với bit cao nhất bị xoá về 0.
Lệnh này được chấp nhận nhưng hành động yêu cầu sẽ được giữ hoãn lại, trì hoãn sự xỏc nhận thụng tin trong reply này. Lệnh này không được chấp nhận và hành động yêu cầu không xảy ra, tuy nhiên trạng thái lỗi là tạm thời, hành động có thể được yêu cầu trở lại. Sender sẽ quay trở lại bắt đầu chuổi lệnh (nếu có) khó gán một nghĩa “tức thời” cho nó khi hai site khác nhau (receiver- và sender- SMTPs) phải đồng ý sự thông dịch.
Một quy tắc lật trang để xác định nếu một reply đặc vào trong loại 4yz hay 5yz (xem bên dưới) thì những reply đó là 4yz nếu chúng có thể được lặp lại mà không cần thay đổi gì trong cấu trúc lệnh hay trong những thuộc tính của sender hay receiver (như một lệnh được lặp lại một cách giống nhau và receiver không đưa ra một sự thực thi mới). Ngay cả một số hoàn cảnh lỗi “dài hạn” có thể hiệu chỉnh được, do đó người sử dụng muốn hướng sender-SMTP khởi tạo lại chuổi lệnh đó bằng cách chỉ đạo hành động tại một số thời điểm trong tương lai(như: sau khi chính tả đã được thay đổi, hay user đó thay đổi trạng thái account ). * x0z Syntax : Những reply này xem xét lỗi cú pháp, những lệnh đúng cú pháp không đưa vào một loại chức năng nào.
* x5z Mail system : Reply này chỉ định tình trạng của receiver mail system vis-a-vis yêu cầu truyền hay hoạt động hệ thống mail khác. Trong sự kiểm soát khác những mã reply này phải theo sự đặc tả nghiêm ngặt trong phần này sự thực thi của receiver sẽ không phát sinh ra mã mới cho tình trạng khác nhau không đáng kể của những gì được đặc tả ở đây. Ví dụ như, một lệnh như NOOP chẳng hạn nó thực thi thành công không cần đề nghị sender-SMTP một thông tin mới nào sẽ trả về một reply 250.
Một sự cải tiến cho điều đó là reply 504 cho một lệnh được thực thi nhưng nó yêu cầu một tham số không thực thi. Reply text có thể dài hơn một dòng đơn, trong trường hợp này một text hoàn tất phải được đánh dấu do đó sender biết khi nào nó có thể ngưng đọc reply này. Định dạng cho các reply nhiều dòng quy định tất cả các dòng, chấp nhận chổ cuối cùng và bắt đầu của mã reply, theo sau đó là một dấu gạch nối “-” (dấu trừ) theo sau là text dòng cuối cùng sẽ bắt đầu với mã reply theo ngay sau đó là <SP> , các text và.
Trong một số trường hợp sender-SMTP cần tìm mã reply theo sau là <SP> ở đầu dòng, và phớt lờ tất cả các dòng trước. Một ít trường hợp có dữ liệu quan trọng cho sender trong reply “text” sender sẽ nhận biết trường hợp này từ ngữ cảnh hiện hành.
Khi một user agent trên một client host mong muốn đưa một message vào trong hệ thống vận chuyển, nó thiết lập một kết nối SMTP đến host chia ca của nó( host chia ca này có thể, hay không cần POP3 server host cho client host đó). 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 client định danh thành công, server thu được những tài nguyên kết hợp với client’s maildrop, và hội nghị đi vào trạng thái TRANSACTION (giao dịch).
Đầ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 để hoà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 leọnh QUIT. 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 khoá 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.
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 message-number cho mỗi message và biểu thị kích thước của mỗi message trong hệ tám (octet), message đầu tiên trong maildrop được gán message-number “1”, message thứ hai là “2” … Trong các lệnh và các trả lời POP3 tất cả các message-number và kích thước message được trình bày dựa trên hệ 10 (decimal). - 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.
Khi client định danh nó đến POP3 server thành công và POP3 server đã khoá 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. - 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”. Khi client phát ra một lệnh QUIT từ trạng thái TRANSACTION, POP3 session đ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 POP3 session kết thúc vì các lí do khác sau đó một lệnh QUIT được phát ra từ client, POP3 session không đi vào trạng thái UPDATE và PHẢI không remove một message nào từ maildrop đó. 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. 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).
Unique-id của một message là một chuổi xác định server tuỳ ý, bao gồm những ký tự trong phạm vi 0x21 đến 0x7E, nó định danh một message bên trong một maildrop là duy nhất và nó giữ như vậy trong thời gian hội nghị.