Cách tìm nạp thư thông qua giao thức Post Office hoạt động

Đằng sau các cảnh nhìn vào việc tìm nạp thư thông qua giao thức bưu điện

Giao thức Bưu điện (POP) được sử dụng để truy xuất thư từ máy chủ từ xa là một giao thức rất đơn giản. Nó định nghĩa các chức năng cơ bản một cách đơn giản và dễ thực hiện. Tất nhiên, nó cũng dễ hiểu.

Hãy tìm hiểu điều gì xảy ra sau hậu trường khi chương trình email của bạn tìm nạp thư trong tài khoản POP. Đầu tiên, nó cần kết nối với máy chủ.

Xin chào, tôi là tôi

Thông thường, máy chủ POP lắng nghe cổng 110 cho các kết nối đến. Khi kết nối từ một ứng dụng khách POP (chương trình email của bạn), nó hy vọng sẽ đáp ứng với + OK pop.philo.org sẵn sàng hoặc một cái gì đó tương tự. Dấu + OK cho biết mọi thứ đều là “OK”. Tương đương tiêu cực của nó là -ERR , có nghĩa là một cái gì đó đã đi sai. Có thể ứng dụng email của bạn đã hiển thị cho bạn một trong các thư trả lời của máy chủ phủ định này.

Đăng nhập

Bây giờ máy chủ đã chào hỏi chúng tôi, chúng ta cần phải đăng nhập bằng tên người dùng của mình (giả sử tên người dùng là "trung đội"; máy chủ được in bằng chữ in nghiêng):

+ OK pop.philo.org sẵn sàng
Trung đội USER

Vì người dùng có tên này không tồn tại, máy chủ POP phản hồi với + OK và có thể một số lỗi ngữ pháp mà chúng tôi không thực sự quan tâm. Có không có người dùng như vậy tại máy chủ, nó sẽ, tất nhiên, làm cho chúng ta hoảng sợ với người sử dụng -ERR chưa biết .

Để xác thực hoàn tất, chúng tôi cũng cần cung cấp mật khẩu của mình. Điều này được thực hiện với lệnh "pass":

+ OK gửi mật khẩu của bạn
vượt qua noplato

Nếu chúng tôi nhập mật khẩu chính xác, máy chủ sẽ phản hồi bằng mật khẩu + OK tuyệt vời hoặc bất kỳ trình lập trình nào của máy chủ POP đã lưu ý. Phần quan trọng một lần nữa là + OK . Thật không may, mật khẩu cũng có thể sai. Máy chủ lưu ý điều này với tên người dùng và mật khẩu khô -ERR không khớp (như thể bạn sử dụng tên người dùng làm mật khẩu của mình).

Tuy nhiên, nếu mọi thứ ổn, chúng tôi kết nối với máy chủ và biết chúng tôi là ai, vì vậy chúng tôi đã sẵn sàng để xem thư mới đến.

Bạn đã có thư!

Sau khi chúng tôi đã đăng nhập thành công vào tài khoản POP của chúng tôi tại máy chủ, trước hết chúng tôi có thể muốn biết liệu có thư mới nào không và sau đó có thể là bao nhiêu.

Lệnh được sử dụng để lấy các thống kê hộp thư cơ bản này là STAT .

Đáp ứng máy chủ có thể sẽ là + OK 18 67042 . Trong trường hợp này, nó có vấn đề gì sau dấu + OK . Ngay sau đó là số lượng thư trong hộp thư, sau đó, được phân tách bằng khoảng trắng, kích thước của hộp thư trong octet (một octet là 8 bit).

STAT
+ OK 18 67042

Nếu không có thư, máy chủ sẽ trả lời với + OK 0 0 . Vì có 18 tin nhắn mới trên máy chủ, tuy nhiên, chúng ta có thể liệt kê chúng bằng cách sử dụng lệnh LIST . Đáp lại, máy chủ liệt kê các thư theo định dạng sau:

DANH SÁCH
+ OK 18 tin nhắn (67042 octet)
1 2552
2 3297
...
18 3270
.

Các tin nhắn được liệt kê một tại một thời điểm, mỗi tin nhắn được theo sau bởi kích thước của nó trong octet. Danh sách kết thúc với một khoảng thời gian trên một dòng của chính nó.

Lệnh LIST có thể lấy số lượng tin nhắn như một đối số tùy chọn, ví dụ LIST 2 . Phản hồi của máy chủ với yêu cầu này sẽ là + OK 2 3297 , số tin nhắn tiếp theo là kích thước của thông báo. Nếu bạn cố gắng liệt kê một thông báo không tồn tại, như LIST 23 , máy chủ sẽ không hiển thị trí tưởng tượng và nói: -ERR không có thông báo như vậy .

The Big Retrieve (Và Xóa)

Bây giờ chúng ta biết có bao nhiêu thông điệp trong tài khoản của chúng ta và chúng lớn như thế nào, cuối cùng là thời gian để lấy chúng để chúng ta có thể đọc chúng.

Bây giờ, sau khi tìm hiểu xem liệu chúng ta có thư mới hay không, đến thật. Các tin nhắn được lấy từng cái một với số lượng tin nhắn của họ như một đối số cho lệnh RETR .

Máy chủ phản hồi với dấu + OK và thông điệp giống như trong nhiều dòng. Tin nhắn được chấm dứt bởi một khoảng thời gian trên một dòng của chính nó. Ví dụ:

RETR 1
+ 2552 octet OK
Blah!
.

Nếu chúng ta cố gắng nhận được một thông điệp không tồn tại, chúng ta sẽ nhận được -ERR không có thông báo như vậy .

Bây giờ chúng ta có thể xóa tin nhắn bằng lệnh DELE . (Dĩ nhiên, chúng tôi cũng có thể xóa thư mà không cần truy xuất thư nếu đó là một trong những ngày đó).

Nó là tốt để biết rằng máy chủ sẽ không thanh lọc tin nhắn ngay lập tức. Nó chỉ được đánh dấu để xóa. Xóa thực tế chỉ xảy ra nếu chúng tôi thường xuyên kết thúc kết nối với máy chủ. Vì vậy, không có thư sẽ bị mất nếu kết nối đột nhiên chết, ví dụ.

Phản hồi của máy chủ với lệnh DELE+ Đã xóa thông báo OK :

DELE 1
+ Đã xóa tin nhắn OK 1

Nếu nó thực sự là một trong những ngày đó và chúng tôi đã đánh dấu một thông báo xóa mà chúng tôi không muốn bị xóa, có thể phục hồi tất cả các thư bằng cách đặt lại các dấu xóa. Lệnh RSET trả về hộp thư về trạng thái trước khi đăng nhập.

Máy chủ phản hồi với dấu + OK và có thể là số lượng thư:

RSET
+ OK 18 tin nhắn

Sau khi chúng tôi đã lấy ra và xóa tất cả các tin nhắn đó là thời gian để nói lời tạm biệt bằng cách sử dụng lệnh QUIT . Thao tác này sẽ xóa các thư được đánh dấu để xóa và đóng kết nối. Máy chủ phản hồi với + OK và thông báo chia tay:

QUIT
+ Tạm biệt, tạm biệt

Có thể máy chủ không thể xóa thư. Sau đó, nó sẽ trả lời với một lỗi như -ERR message 2 không bị xóa .