So sánh giao thức thư POP3 và IMAP: giao thức nào tốt hơn và tại sao. Những điều thú vị nhất về SMTP, POP3 và IMAP

Vấn đề bảo mật ngày càng trở nên quan trọng khi công nghệ thông tin ngày càng lan rộng. Ở đây chúng ta phải giải quyết nhiều khía cạnh khác nhau liên quan đến nhiều sự phát triển. Ví dụ, nhiều người quan tâm đến câu hỏi bảo mật IMAP là gì. InternetAccessProtocol an toàn đến mức nào?


Nó có những ưu điểm gì? Nó được phát triển để làm gì? Có những phiên bản nào? Sử dụng cơ chế hoạt động nào? Chúng tôi sẽ cố gắng giải quyết tất cả những câu hỏi này trong bài đánh giá này.

IMAP là gì?

Tính bảo mật của thư tín đặc biệt quan trọng vì nó có thể chứa nhiều thông tin khác nhau. Giao thức IMAP được sử dụng để đảm bảo rằng chỉ những người dùng được ủy quyền mới có thể truy cập dữ liệu email. Nó được phát triển dựa trên TCP. Giao thức này sử dụng cổng 143. IMAP cho phép bạn làm việc với thư được đặt trên máy chủ trung tâm. Phần mềm sử dụng giao thức này thực hiện các hành động cần thiết theo cách có vẻ như tất cả thư từ được lưu trữ trên máy tính của người dùng.

Đối với khối lượng truyền lớn, có thể sử dụng máy chủ IMAP đặc biệt. Thao tác với các chữ cái không yêu cầu chuyển liên tục các tập tin có nội dung đến người nhận. Đây không phải là giao thức duy nhất được sử dụng ngày nay khi làm việc với các dịch vụ thư. Giao thức SMTP có thể được sử dụng để gửi thư vì trong IMAP lệnh gửi không thể đảm bảo bảo mật 100%. Giao thức này có một số lỗ hổng đã biết.

Tại sao IMAP được phát triển?

Giao thức này được phát triển như một giải pháp thay thế cho giao thức POP3 nổi tiếng. Tất cả bắt đầu vì những thiếu sót của giao thức POP3. Ví dụ: nó không cung cấp khả năng quản lý, di chuyển và lưu trữ tin nhắn trên máy chủ. Vì lý do này, giao thức IMAP đã được phát triển. Với sự trợ giúp của giao thức này, người dùng có thể nhận thư ở nhiều nơi khác nhau. Điều này trở nên khả thi do tất cả thông tin cần thiết đều được lưu trữ trên một máy chủ từ xa.

Ưu điểm của IMAP so với POP3

Tại sao giao thức IMAP được đưa vào sử dụng? Vấn đề là ngoài những điều được liệt kê ở trên, giao thức này còn cung cấp một số lợi thế:

— kết nối không bị ngắt khi giao diện người dùng đang hoạt động;
- các tin nhắn sẽ chỉ được tải xuống nếu khách hàng có các yêu cầu phù hợp;
- có thể truy cập đồng thời nhiều người dùng, trong khi mỗi người dùng có thể theo dõi những thay đổi được thực hiện;
— khách hàng có cơ hội tạo, xóa hoặc thay đổi tên của các hộp. Bạn cũng có thể di chuyển thư giữa các hộp thư;
— nếu bạn có tiện ích mở rộng AccessControlList IMAP 4, bạn có thể thay đổi quyền truy cập;
— Bạn cũng có thể theo dõi trạng thái của tin nhắn. Dữ liệu giao dịch được gọi là cờ và được lưu trữ trên máy chủ;
— việc tìm kiếm tin nhắn mong muốn được thực hiện trên máy chủ. Có một cơ chế đặc biệt cho phần mở rộng.

Tin nhắn và thuộc tính của chúng

Giao thức IMAP chỉ hoạt động với các tin nhắn không yêu cầu gói có tiêu đề đặc biệt. Mỗi gói này có thuộc tính riêng. Chúng có thể được xác định riêng lẻ hoặc cùng với những cái khác. Ngày nay đã có sáu phiên bản giao thức IMAP. Phiên bản mới nhất hầu như luôn được sử dụng.

Khi làm việc với giao thức IMAP, mỗi tin nhắn sẽ nhận được mã 32 bit riêng. Một mã định danh duy nhất được thêm vào mã. Mã và mã định danh cùng nhau tạo thành một chuỗi 64 bit. Nó là cần thiết để xác định tin nhắn. Đây là cách bảo mật được triển khai trong giao thức IMAP. Tin nhắn đến càng muộn thì UID càng quan trọng. Tham số này được sử dụng làm mã phản hồi trong quá trình chọn hộp thư. Mã này không thay đổi trong hoặc giữa các phiên. Nếu điều kiện kỹ thuật yêu cầu phải chỉnh sửa thông số này thì UID phải lớn hơn trước. Cổng IMAP được sử dụng để truyền thông tin.

Số tin nhắn

Số thứ tự của tin nhắn bắt đầu từ 1. Mỗi tin nhắn tiếp theo sẽ có số lớn hơn 1 so với tin nhắn trước đó. Sự khác biệt so với hộp thư là con số này có thể thay đổi trong một phiên, chẳng hạn như nếu một lá thư bị xóa.

Cờ tin nhắn

Thuộc tính này là danh sách chứa số 0 hoặc số lượng lớn mã thông báo được đặt tên được liên kết với thông tin cơ bản. IMAP 4.1 đã giới thiệu hai loại cờ. Chúng có thể hoạt động tạm thời, chẳng hạn như trong một phiên hoặc có thể hoạt động vĩnh viễn. Cờ hệ thống là cờ được xác định trong đặc tả giao thức. Tất cả các cờ phải bắt đầu bằng ký tự "\". Các cờ hệ thống sau hiện được xác định:

— \seen– tin nhắn đã được đọc;
— \answered – phản hồi đã được gửi;
— \recent – ​​​​thông báo xuất hiện trong phiên hiện tại;
— \draft – thư được đánh dấu là bản nháp;
— \flagged – người dùng đánh dấu tin nhắn này là quan trọng;
— \deleted – người dùng đã xóa tin nhắn.

Ngày giờ nội bộ

Các tham số này được xác định như thế nào và những giá trị nào cần được chỉ định trong chúng? Nếu tin nhắn được gửi bằng giao thức SMTP thì ngày và giờ của người nhận cuối cùng sẽ được lấy. Nếu lệnh sao chép được sử dụng, các tham số của người gửi sẽ được lấy. Bạn có thể đặt ngày và giờ của riêng bạn. Để làm điều này, bạn cần sử dụng lệnh chắp thêm.

Tương tác giữa máy khách và máy chủ

Khi sử dụng giao thức IMAP, giao tiếp được thiết lập trên cơ sở máy khách-máy chủ. Máy khách gửi tất cả các lệnh nhận được và máy chủ gửi dữ liệu và thông tin được yêu cầu để hoàn thành yêu cầu. Tin nhắn ở dạng chuỗi kết thúc bằng một chuỗi đặc biệt. Mọi thủ tục được thực hiện theo lệnh của khách hàng. Chúng được nhận dạng bằng cách sử dụng tiền tố định danh đặc biệt. Mã định danh này là một chuỗi chữ và số ngắn.

Nếu không thì nó còn được gọi là nhãn hiệu. Mỗi đội có số duy nhất của riêng mình. Có hai trường hợp có thể xảy ra trong đó dữ liệu do khách hàng gửi có thể không đầy đủ. Trường hợp đầu tiên xảy ra khi đối số lệnh có mã đã chỉ định trước đó số octet. Trường hợp thứ hai xảy ra khi cần có phản hồi từ máy chủ. Trong cả hai trường hợp, máy khách đều nhận được yêu cầu tiếp tục lệnh. Nó phải bắt đầu bằng ký hiệu +. Việc chuyển giao phải được hoàn thành khi một loại dữ liệu nhất định bắt đầu đến.

Nếu không, sẽ không thể bắt đầu một quy trình mới. Việc truyền dữ liệu đến máy chủ, đọc và lựa chọn các tham số được thực hiện bằng bộ thu giao thức. Khi quá trình xử lý lệnh hoàn tất, phản hồi kèm theo thông báo này sẽ được gửi đến máy khách. Thông tin không cho biết việc hoàn thành hướng dẫn được đánh dấu bằng *. Đây được gọi là phản hồi không được gắn thẻ. Giao thức IMAP cũng có thể gửi dữ liệu máy chủ dưới dạng phản hồi cho các yêu cầu của khách hàng hoặc theo sáng kiến ​​riêng của nó. Định dạng của dữ liệu không phụ thuộc vào lý do nó được gửi.

Bạn có thể nói gì về việc sử dụng các dịch vụ email phổ biến? Cài đặt không có sẵn cho người dùng IMAP thông thường. Chúng chỉ có thể được thực hiện nếu thư được gửi bằng chương trình máy khách đặc biệt. Hơn nữa, những cài đặt này chỉ áp dụng cho các thư đến. Câu trả lời cần thiết để làm gì? Họ thông báo cho người dùng về sự thành công hay thất bại của yêu cầu. Phản hồi luôn sử dụng cùng một nhãn mà lệnh máy khách đã sử dụng khi chạy quy trình.

Vì lý do này, có thể truyền dữ liệu đa luồng. Ba loại phản hồi có thể được sử dụng để làm rõ tình huống này: thành công, thất bại và lỗi giao thức IMAP. Máy khách phải luôn sẵn sàng xử lý mọi phản hồi đến với nó. Dữ liệu phải được ghi sao cho máy khách có thể sử dụng mà không cần phải gửi yêu cầu tra cứu đến máy chủ. Bạn thấy điều này khá thường xuyên trong Gmail. Cài đặt IMAP có thể được thay đổi hoặc chỉnh sửa khi sử dụng ứng dụng email khách với nhiều tính năng.

Rất có thể hầu hết những người đọc hướng dẫn này đều đã quen thuộc với công nghệ giao tiếp được sử dụng phổ biến nhất: email. Nhưng bạn đã bao giờ nghĩ xem nó thực sự hoạt động như thế nào chưa? Trong bài viết này, chúng ta sẽ tìm hiểu cách hoạt động của dịch vụ này và POP3, SMTP và IMAP là gì.

POP3(giao thức bưu điện phiên bản 3) thường được sử dụng để liên lạc với máy chủ email từ xa và tải thư xuống ứng dụng email khách cục bộ rồi xóa nó trên máy chủ, ví dụ như Thunderbird, Windows Mail, v.v. Tuy nhiên, ứng dụng email thường đưa ra lựa chọn có để lại bản sao của thư trên máy chủ hay không. Nếu bạn sử dụng nhiều thiết bị để gửi tin nhắn, bạn nên bật tính năng này, nếu không, trên thiết bị khác, bạn sẽ không có quyền truy cập vào các tin nhắn đã gửi không được lưu trên máy chủ từ xa. Cũng cần lưu ý rằng POP3 là giao thức chỉ một chiều, có nghĩa là dữ liệu được lấy từ máy chủ từ xa và gửi đến máy khách cục bộ.

Các cổng POP3 mặc định là:

Cổng 110 – cổng không mã hóa

Cổng 995 là cổng SSL/TLS, còn được gọi là POP3S

Bước 2 - Sự khác biệt giữa POP3 và IMAP và cổng cho IMAP là gì?

IMAP (giao thức lớp ứng dụng để truy cập email), cũng như POP3, được sử dụng để nhận email trên máy khách cục bộ, tuy nhiên, nó có một sự khác biệt đáng kể - chỉ các tiêu đề email được tải xuống, văn bản của bức thư vẫn còn trên máy chủ. Giao thức truyền thông này hoạt động theo hai hướng; nếu các thay đổi xảy ra trên máy khách cục bộ, chúng sẽ được truyền đến máy chủ. IMAP gần đây đã trở nên phổ biến hơn khi các nhà cung cấp dịch vụ email khổng lồ như Gmail bắt đầu giới thiệu nó thay vì POP3.

Các cổng IMAP mặc định là:

  • Cổng 143 – cổng không mã hóa
  • Cổng 993 là cổng SSL/TLS, còn được gọi là HÌNH ẢNH

Bước 3 - SMTP, giao thức liên lạc qua email đi

Giao thức chuyển thư đơn giản ( SMTP), được sử dụng để liên lạc với máy chủ từ xa, sau đó gửi tin nhắn từ máy khách cục bộ đến máy chủ từ xa và cuối cùng đến máy chủ của người nhận tin nhắn. Trên máy chủ email của bạn, quá trình này được kiểm soát bởi một dịch vụ đặc biệt ( MTA). Điều đáng nói là SMTP chỉ được sử dụng để gửi tin nhắn.

Cổng SMTP:

  • Cổng 25 – cổng không mã hóa
  • Cổng 465 là cổng SSL/TLS, còn được gọi là SMTPS

Phần kết luận

Chúng tôi hy vọng rằng bây giờ bạn đã hiểu rõ ràng về cách hoạt động của các giao thức email và những cổng chúng sử dụng. Trong hướng dẫn này, chúng ta đã tìm hiểu POP3, SMTP và IMAP là gì và chúng được sử dụng để làm gì. Ví dụ: POP3 và IMAP được sử dụng cho cùng mục đích nhưng chúng tiếp cận các nhiệm vụ này một cách khác nhau. IMAP để lại nội dung thư trên máy chủ và POP3 tải nội dung đó xuống máy tính của bạn. Ngoài ra, chúng tôi đã tìm ra các cổng tiêu chuẩn dành cho SMTP, POP3 và IMAP.

TÔI Internet M tiểu luận MỘT truy cập P rotocol ) là một giao thức lớp ứng dụng để truy cập email. Dựa trên giao thức truyền tải TCP và sử dụng cổng 143. IMAP cung cấp cho người dùng khả năng mở rộng để làm việc với các hộp thư đặt trên máy chủ trung tâm. Một chương trình email sử dụng giao thức này sẽ truy cập vào bộ lưu trữ thư từ trên máy chủ như thể thư được đặt trên máy tính của người nhận. Email có thể được thao tác từ máy tính của người dùng (khách hàng) mà không cần liên tục gửi các tệp có đầy đủ nội dung của email qua lại từ máy chủ.

Giao thức SMTP thường được sử dụng để gửi thư vì lệnh gửi của chính giao thức này IMAP, được gọi là APPEND, được coi là "không thành công" và "không an toàn".

Khu vực ứng dụng

Phạm vi của giao thức IMAP tương tự như phạm vi của giao thức POP3: nó cũng nhằm mục đích nhận thư và được sử dụng trong khu vực giữa MUA của người nhận và kho lưu trữ thư. IMAP cung cấp nhiều khả năng hộp thư nâng cao hơn POP3: nó cho phép nhiều hộp thư trên một hoặc nhiều máy chủ IMAP được xử lý như thể chúng là các tệp và thư mục trên máy của chính người dùng. Thông thường, hộp thư máy chủ IMAP thực sự là các tệp trong một thư mục đặc biệt trên máy chủ và các thư mục con của nó.

Phiên bản IMAP

  • IMAP gốc
  • IMAP2
  • IMAP3
  • IMAP2bis
  • IMAP4
  • IMAP4rev1

Ưu điểm của IMAP so với POP3

Khi sử dụng POP3, máy khách chỉ kết nối với máy chủ trong khoảng thời gian cần thiết để tải xuống tin nhắn mới. Khi sử dụng IMAP, kết nối không bị ngắt khi giao diện người dùng đang hoạt động và các tin nhắn chỉ được tải xuống khi khách hàng yêu cầu. Điều này cho phép bạn giảm thời gian phản hồi cho người dùng có hộp thư chứa nhiều thư lớn.

Giao thức POP yêu cầu máy khách hiện tại phải là máy khách duy nhất được kết nối với hộp thư. IMAP cho phép nhiều máy khách truy cập vào hộp thư cùng lúc và cung cấp cho máy khách khả năng giám sát các thay đổi được thực hiện bởi các máy khách khác được kết nối cùng lúc.

Nhờ hệ thống cờ được xác định trong IMAP4, máy khách có thể theo dõi trạng thái của tin nhắn (đã đọc, đã gửi trả lời, đã xóa, v.v.); dữ liệu cờ được lưu trữ trên máy chủ. Máy khách IMAP4 có thể tạo, đổi tên và xóa hộp thư cũng như di chuyển thư giữa các hộp thư. Ngoài ra, bạn có thể sử dụng tiện ích mở rộng Danh sách điều khiển truy cập IMAP4 để quản lý quyền truy cập vào hộp thư.

Việc tìm kiếm tin nhắn diễn ra ở phía máy chủ. IMAP4 có cơ chế mở rộng rõ ràng.

Nhược điểm của IMAP

Nhiều quyền truy cập vào hộp thư đặt ra một số vấn đề, đặc biệt nếu thông tin trong hộp thư có thể ghi được.

Mặc dù phần mềm triển khai giao thức IMAP liên tục được cải tiến nhưng IMAP kém an toàn hơn POP3. Khả năng lưu trữ tin nhắn trên máy chủ có thể dẫn đến việc người dùng lạm dụng, họ sẽ lấp đầy kho tin nhắn với những thông tin không cần thiết.

Giao thức IMAP chủ yếu yêu cầu người dùng làm việc trực tiếp với các hộp thư trên máy chủ, trái ngược với giao thức POP3, tập trung vào việc khách hàng nhận thư đến và phân tích nó trên máy của mình. Điều này khiến IMAP bất tiện cho người dùng kết nối mạng trong thời gian ngắn, chỉ để nhận hoặc gửi thư. Khi làm việc bằng giao thức IMAP, khách hàng mong muốn có quyền truy cập vào mạng mọi lúc trong khi làm việc với thư.

Những khả năng tuyệt vời do giao thức IMAP cung cấp tạo ra những khó khăn lớn trong việc phát triển, cấu hình và vận hành máy chủ và máy khách.

Thông tin chung

Cho phép sắp xếp các hộp thư theo thứ bậc trong các thư mục và các thư mục con của chúng, đồng thời tên của các thư mục và hộp thư không khác nhau. Hộp thư chỉ có thể là phần tử cuối cùng của cấu trúc phân cấp; nó không thể chứa bất kỳ phần tử con nào. Một thư mục có thể chứa các thư mục con và hộp thư, nhưng nó không chứa các thông báo và không thể được chọn bằng lệnh SELECT.

Ký tự được sử dụng làm dấu phân cách thứ bậc có thể khác nhau tùy thuộc vào phần mềm được sử dụng trên máy chủ. Thông thường, đây là dấu gạch chéo lên: / nếu máy chủ đang chạy hệ điều hành tương thích với UNIX, dấu gạch chéo ngược: \ cho hệ điều hành Windows và dấu chấm cho tên nhóm tin USENET.

Có thể sử dụng các không gian tên hộp thư khác nhau và theo đó, các dấu phân cách phân cấp khác nhau. Ví dụ: nếu máy chủ IMAP cung cấp quyền truy cập vào các hộp thư nằm trong thư mục hệ thống tệp UNIX và các nhóm tin USENET thì trong trường hợp đầu tiên, dấu gạch chéo được sử dụng làm dấu phân cách phân cấp và trong trường hợp thứ hai, dấu chấm được sử dụng làm dấu phân cách phân cấp. Để sử dụng và phân biệt các không gian tên khác nhau trên cùng một máy chủ IMAP, tên thuộc từng không gian được sử dụng phải bắt đầu bằng một số tiền tố, thường bắt đầu bằng ký tự "#". Đương nhiên, các truy vấn trong đó đường dẫn đến hộp thư bắt đầu bằng một tiền tố sẽ cho kết quả khác với các truy vấn tương tự bắt đầu bằng một tiền tố khác. Không gian tên mặc định có thể không có tiền tố.

Máy khách có thể tìm ra không gian tên nào được máy chủ IMAP nhất định hỗ trợ cho loại hộp thư nào nếu máy chủ hỗ trợ tiện ích mở rộng NAMESPACE. Có thể tìm thấy tiền tố và dấu phân cách phân cấp của một hộp thư hoặc tên thư mục cụ thể bằng lệnh LIST.

Trạng thái máy chủ

Máy chủ IMAP lắng nghe các kết nối từ máy khách trên cổng TCP 143. Sau khi kết nối được thiết lập, máy chủ sẽ gửi lời chào đến máy khách và một cuộc đối thoại bắt đầu trong đó máy khách gửi lệnh đến máy chủ và máy chủ sẽ báo cáo kết quả của chúng. thực hiện hoặc gửi thông tin theo yêu cầu của khách hàng. Giống như phiên POP3, phiên IMAP được chia thành nhiều trạng thái. Tập lệnh hợp lệ phụ thuộc vào trạng thái phiên hiện tại. Một phiên có thể ở một trong các trạng thái sau:

  • Trạng thái không được xác thực
  • Trạng thái xác thực
  • Trạng thái đã chọn
  • Trạng thái đầu ra

Chuyển tiếp:

  1. Kết nối mà không cần xác thực trước
  2. Kết nối với xác thực trước
  3. Kết nối bị từ chối
  4. Xác thực thành công
  5. Hoàn thành thành công lệnh SELECT hoặc EXAMINE
  6. Lệnh CLOSE hoặc lệnh SELECT hoặc EXAMINE không thành công
  7. Lệnh LOGOUT hoặc mất liên lạc

Các lệnh giao thức IMAP

Lệnh của máy khách và phản hồi của máy chủ IMAP

Lệnh máy khách bao gồm một mã định danh (nhãn) - một chuỗi ngắn bao gồm các chữ cái và số không được lặp lại trong các lệnh khác trong suốt phiên. Theo sau nhãn là chính lệnh đó và các đối số của nó. Trường hợp ký tự trong tên lệnh, như trong hầu hết các đối số, thường không quan trọng.

Ngoài các lệnh tiêu chuẩn phải được hỗ trợ, còn có các lệnh bổ sung được mô tả trong tiêu chuẩn và được máy chủ IMAP hỗ trợ dưới dạng thành phần mở rộng. Các nhà phát triển cũng có thể thêm các lệnh mới vào quá trình triển khai của họ. Tên của các lệnh không được chuẩn hóa như vậy phải bắt đầu bằng chữ X. Tên lệnh tiêu chuẩn không thể bắt đầu bằng chữ X.

Tất cả phản hồi của máy chủ đều bắt đầu bằng nhãn, theo sau là văn bản được phân tách bằng dấu cách.

Phản hồi của máy chủ báo cáo việc thực hiện lệnh sử dụng nhãn của lệnh tương ứng làm nhãn. Đây là những câu trả lời được gắn thẻ. Tiếp theo là một trong những từ khóa:

  • Được rồi (thành công)
  • KHÔNG (không thực hiện)
  • BAD (lỗi lệnh)

Các phản hồi chứa thông tin được khách hàng yêu cầu hoặc được gửi bởi máy chủ mà không có yêu cầu bắt đầu bằng thẻ "*" và được gọi là phản hồi không được gắn thẻ. Theo sau thẻ là số lượng tin nhắn đang được thăm dò và từ khóa hoặc chỉ từ khóa. Có nhiều từ khóa hơn đáng kể cho các phản hồi không được gắn thẻ so với các phản hồi được đánh dấu; chúng thường tương ứng với tên của lệnh hoặc tính chất của thông tin được truyền đến máy khách.

Mỗi lệnh sẽ nhận được một phản hồi được gắn thẻ từ máy chủ cho biết lệnh đó có thể được thực thi hay không và có thể có một hoặc nhiều phản hồi không được gắn thẻ chứa thông tin được yêu cầu hoặc thông tin bổ sung.

Máy khách có thể gửi một số lệnh liên tiếp mà không cần chờ phản hồi cho từng lệnh đó, nếu quyết định về lệnh tiếp theo không phụ thuộc vào phản hồi đối với lệnh trước đó. Máy chủ, sau khi nhận được một số lệnh liên tiếp, có thể thực thi chúng song song nếu việc thực hiện thành công lệnh tiếp theo không yêu cầu thực hiện lệnh trước đó. Phản hồi trong trường hợp này có thể đến theo thứ tự khác với thứ tự gửi lệnh. Máy khách xác định sự tương ứng của các phản hồi được đánh dấu với các lệnh đã gửi bằng cách sử dụng nhãn.

Phải cẩn thận để đảm bảo rằng không có sự mơ hồ khi thực hiện các lệnh cùng một lúc. Ví dụ: việc xóa một thư khỏi hộp thư sẽ thay đổi cách đánh số của các thư còn lại, điều này có thể dẫn đến việc giải thích không rõ ràng về lệnh truy cập đồng thời vào một thư khác trong cùng một hộp thư.

Thông tin được gửi trong một lệnh hoặc trong một phản hồi không được gắn thẻ không nhất thiết phải được chứa trên một dòng. Dữ liệu được truyền dưới dạng phần tiếp theo của lệnh hoặc phản hồi không được gắn thẻ được gọi là dữ liệu bằng chữ. Ở cuối dòng được tiếp tục bằng một chữ, kích thước của nó tính bằng octet được đặt, bao bọc trong dấu ngoặc nhọn.

Máy chủ có thể truyền một chữ mà không cần đợi sự cho phép của khách hàng; máy khách phải đợi sự cho phép - dòng bắt đầu bằng dấu "+" - trước khi truyền chữ. Ví dụ:

Các lệnh hợp lệ ở mọi trạng thái phiên IMAP

KHẢ NĂNG

Để đáp lại lệnh này, máy chủ sẽ gửi một chuỗi không được gắn thẻ với từ khóa KHẢ NĂNG, chứa danh sách các khả năng được hỗ trợ (tiện ích mở rộng) và các tham số của chúng. Các tính năng bao gồm phiên bản được hỗ trợ của giao thức IMAP – IMAP4rev1 và các cơ chế xác thực. Các khả năng của IMAP được mô tả trong nhiều RFC khác nhau hoặc có thể được các nhà phát triển giới thiệu. Trong trường hợp sau, tên của chúng phải bắt đầu bằng chữ X. Tên của các tính năng tiêu chuẩn không thể bắt đầu bằng chữ cái này.

KHÔNG RA ĐÂU

Không thực hiện bất kỳ hành động nào. Tuy nhiên, lệnh này sẽ đặt lại bộ hẹn giờ không hoạt động, giúp tránh kết nối bị hết thời gian chờ. Ngoài ra, trong một số trường hợp nhất định, lệnh này hoặc các lệnh khác đóng vai trò như một yêu cầu ngầm về thông tin về các bản cập nhật đã xảy ra trên máy chủ. Do đó, bằng cách sử dụng lệnh NOOP, bạn có thể kiểm tra định kỳ xem các tin nhắn mới có xuất hiện hay không hoặc trạng thái của các tin nhắn cũ có thay đổi hay không. Điều này có thể được thực hiện bằng các lệnh khác, nhưng vì lệnh NOOP không làm gì khác nên nên sử dụng nó cho mục đích này.

ĐĂNG XUẤT

Kết thúc phiên.

Lệnh trạng thái không được xác thực

Máy khách phải được xác thực thành công để chuyển sang trạng thái tiếp theo. Các thuật toán xác thực cho giao thức IMAP về cơ bản không khác biệt với các thuật toán xác thực cho giao thức SMTP và POP3 đã thảo luận trong các chương trước.

Máy chủ IMAP có thể cho phép truy cập ẩn danh vào một số hộp thư. Người dùng ẩn danh đăng ký dưới tên ẩn danh; mật khẩu là địa chỉ email của người dùng, tên miền của người đó, một bộ ký tự tùy ý hoặc một chuỗi trống. Có thể truy cập ẩn danh bằng cách truyền mật khẩu ở dạng văn bản rõ ràng và sử dụng SASL. Khả năng của một khách hàng ẩn danh phải bị hạn chế nghiêm ngặt; theo quy định, anh ta không nhận được quyền thay đổi bất kỳ thông tin nào trên máy chủ.

BẮT ĐẦU

Chuyển phiên sang chế độ được bảo vệ. Sau khi máy chủ nhận được lệnh STARTTLS, máy khách và máy chủ sẽ đồng ý về các tham số để tương tác thêm. Tất cả dữ liệu được trao đổi giữa máy khách và máy chủ sau khi thực hiện thành công lệnh này sẽ được truyền ở dạng mã hóa. Tuy nhiên, lệnh này không xác thực và phiên vẫn ở trạng thái chưa được xác thực.

ĐĂNG NHẬP

ĐĂNG NHẬP đăng ký_tên người dùng mật khẩu

Xác thực bằng tên đăng nhập và mật khẩu được truyền dưới dạng văn bản rõ ràng.

XÁC THỰC

Cơ chế XÁC THỰC

Chuyển dữ liệu xác thực được mã hóa bằng SASL.

Lệnh trạng thái được xác thực

Ở trạng thái được xác thực, máy khách thực hiện nhiều thao tác khác nhau với hộp thư.

LỰA CHỌN

CHỌN tên_hộp thư

Cho phép truy cập vào hộp thư được chỉ định. Phiên chuyển sang trạng thái lựa chọn, sau đó máy khách có thể làm việc với từng thư trong hộp thư.

Để đáp lại lệnh này, máy chủ sẽ gửi một loạt phản hồi không được gắn thẻ chứa thông tin về hộp thư: số lượng tin nhắn, danh sách các cờ hợp lệ, số lượng tin nhắn mới, số lượng tin nhắn chưa đọc đầu tiên, số nhận dạng hộp thư.

NGHIÊN CỨU

KIỂM TRA box_name

Tương tự như lệnh SELECT nhưng hộp thư được mở ở chế độ chỉ đọc.

TẠO NÊN

TẠO tên_đối tượng

Tạo một hộp thư hoặc thư mục mới.

Nếu đối tượng không được tạo trong thư mục gốc thì bạn phải chỉ định đường dẫn đến nó.

Nếu tên được chỉ định kết thúc bằng một ký tự được dùng làm dấu phân cách phân cấp thì một thư mục sẽ được tạo.

XÓA BỎ

XÓA hộp thư_name

Xóa hộp thư được chỉ định. Lệnh tương tự cũng xóa các thư mục nếu chúng không chứa hộp thư.

ĐỔI TÊN

RENAME box_name new_box_name

Đổi tên hộp thư.

ĐẶT MUA

ĐĂNG KÝ box_name

Hộp thư được đánh dấu là "hoạt động". Cờ này được sử dụng để liệt kê các hộp thư bằng lệnh LSUB.

HỦY ĐĂNG KÝ

HỦY ĐĂNG KÝ box_name

Bỏ đánh dấu hộp thư là "hoạt động". Cờ này chỉ có thể được bỏ đánh dấu khỏi hộp thư bằng lệnh UNSUBSCRIBE. Ngay cả khi hộp thư không còn tồn tại, bản thân điều này không thể khiến dấu "hoạt động" bị xóa.

DANH SÁCH

LIST đường dẫn_đến_box tên hộp thư

Trả về danh sách các thư mục và hộp thư khớp với các đối số đã chỉ định.

Tên hộp thư có thể sử dụng các ký tự đại diện: * , biểu thị bất kỳ ký tự nào và % , biểu thị bất kỳ ký tự nào ngoại trừ dấu phân cách phân cấp.

Nếu tên hộp thư chứa đường dẫn đầy đủ đến hộp thư thì đối số đầu tiên sẽ bị bỏ qua.

Đáp lại, máy chủ sẽ gửi một hoặc nhiều dòng không được gắn thẻ với từ khóa LIST. Mỗi trong số chúng chứa các thuộc tính, nếu có, dấu phân cách theo thứ bậc và tên của hộp thư hoặc thư mục đáp ứng các điều kiện được chỉ định trong các đối số. Các thuộc tính được đặt trong dấu ngoặc đơn, dấu phân cách thứ bậc nằm trong dấu ngoặc kép.

Tôi rất vui được gặp lại bạn, những độc giả thân mến của tôi. Tôi chắc chắn rằng nhiều bạn sử dụng Internet không chỉ để tìm kiếm nội dung giải trí và thông tin thú vị mà còn để liên lạc qua email.

Trong quá trình thiết lập, câu hỏi đặt ra là bạn muốn sử dụng giao thức nào: POP3 hoặc IMAP. Đây là một tham số thực sự quan trọng và tôi khuyên bạn nên hiểu các tính năng của từng tham số.

Giao thức bưu chính là gì?

Đây là các quy tắc hoặc thứ tự theo đó các tương tác xảy ra giữa các đối tượng, chương trình và mạng liên quan đến quá trình chuyển tiếp thư. Trong trường hợp của chúng tôi, những người tham gia vào quá trình này là:

  • Dịch vụ bưu chính. Đây là một công ty cung cấp máy chủ riêng để lưu trữ thư từ, phần mềm chuyên dụng (bao gồm cả trang web), cũng như địa chỉ email cho khách hàng của mình. Chúng tôi quan tâm nhất đến chính máy chủ thư và cài đặt quyền truy cập cho nó. Cũng nên hiểu rằng hộp thư điện tử ngụ ý sự hiện diện của một tài khoản và không gian được phân bổ cho tài khoản đó (để lưu trữ tin nhắn) trên máy chủ;
  • Mail client là một chương trình tạo và xử lý thư. Có những ứng dụng độc đáo cho hộp thư của một công ty. Chúng có thể được thay thế thành công bằng trang web thư tương ứng, cho phép bạn vận hành thư trực tiếp trên máy chủ. Ngoài ra còn có các ứng dụng khách phổ biến để làm việc với các tài khoản được tạo trên các dịch vụ khác nhau.

  • Các thiết bị mà thư được truy cập. Nó có thể là PC, máy tính bảng, điện thoại thông minh hoặc thậm chí là điện thoại nút bấm có truy cập Internet.

Dịch vụ chuyển phát thư hoạt động như thế nào?

Bây giờ chúng ta sẽ xem xét cơ chế của e-mail, điều này sẽ giúp chúng ta hiểu rõ hơn về các tính năng của POP3 và IMAP. Người dùng tạo một bức thư trên PC của mình bằng ứng dụng email khách mà anh ta sẽ gửi đến một địa chỉ email nhất định. Nhưng nó không đến trực tiếp người nhận (ngay cả khi người đó đang ở màn hình tiếp theo) mà chỉ thông qua máy chủ thư. Đồng thời, thuận tiện theo dõi đường dẫn thư từ thông qua các thư mục có điều kiện:

  • từ “Hộp thư đi” trên PC của người gửi đến “Hộp thư đi” trên máy chủ trong tài khoản của người gửi;
  • chuyển động tiếp theo chỉ được thực hiện trên máy chủ - từ “Hộp thư đi” của người gửi đến “Hộp thư đến” của tài khoản người nhận;
  • Sau khi thiết bị của người nhận kết nối với mạng bằng ứng dụng thư khách, thiết bị sẽ bắt đầu trao đổi dữ liệu với máy chủ thư. Và bây giờ từ “Hộp thư đến” trên máy chủ, bức thư sẽ chuyển đến cùng thư mục “Hộp thư đến” trên PC của người nhận.

Vì vậy, các bạn của tôi. Khi tổ chức gửi email dọc theo tuyến đường này, có hai cách tiếp cận cơ bản khác nhau.

  1. Trong một trường hợp, nơi lưu trữ thư từ chính là thiết bị (ứng dụng thư khách) của những người tham gia trao đổi thư từ. Và thứ tự này được gọi là giao thức POP3 hoặc Post Office Protocol phiên bản 3. Nó sử dụng cổng 110.
  2. Một tùy chọn khác là tất cả thư (bao gồm các tệp đính kèm với nó) được đặt trên máy chủ thư và chiếm không gian vật lý trên đó được phân bổ cho tài khoản người dùng. Lệnh này được chỉ định là IMAP (Giao thức truy cập tin nhắn Internet). Như bạn đã đoán, công nghệ này về cơ bản là một công nghệ tương tự như lưu trữ đám mây. Giao thức TCP và cổng 143 được sử dụng ở đây.

Công bằng mà nói, nó đáng được chú ý. POP3, với một số cài đặt nhất định, cho phép sử dụng dung lượng máy chủ nhưng chỉ để lưu trữ tin nhắn đến. Không có lựa chọn như vậy cho thư từ gửi đi. Rốt cuộc, người ta cho rằng nguồn của nó đã có trên thiết bị của bạn.

Bây giờ chúng ta đã biết nguyên lý hoạt động của POP3 hoặc IMAP, tôi đề xuất xem xét ưu và nhược điểm của chúng trong ứng dụng thực tế. Điều này sẽ cho chúng tôi câu trả lời cho câu hỏi nên sử dụng cái gì tốt nhất cho hộp thư của bạn.

Chuyển thư tận nhà

  • Tất cả thư từ của bạn đều có trên máy tính của bạn. Bạn có thể sử dụng các tài liệu và tệp đính kèm quan trọng bất kể kết nối Internet của bạn là gì. Chúng tôi sẽ cho rằng trong một số trường hợp, đây chính xác là những gì người dùng yêu cầu;
  • Không khó để đoán rằng trong trường hợp này cường độ yêu cầu đến máy chủ thấp. Hơn nữa, bản thân giao thức đã được phát triển để giảm thiểu tải trên mạng - kết nối diễn ra trong thời gian ngắn, chỉ để di chuyển các ký tự máy chủ đến “máy khách” hoặc gửi chúng. Và ở đây chúng ta thấy một lợi thế phù hợp với điều kiện lưu lượng truy cập Internet tốc độ thấp hoặc hạn chế - kênh truyền dữ liệu không bị quá tải và thực hiện hiệu quả các chức năng của nó;
  • Các nhà tổ chức dịch vụ thư cũng được hưởng lợi từ việc sử dụng POP. Có thể giảm thiểu dung lượng ổ đĩa được sử dụng trên máy chủ. Và theo đó giảm số lượng và chi phí bảo trì của họ.

Nhược điểm của giao thức này là rõ ràng. Chỉ có thể làm việc hoàn toàn với thư từ một thiết bị. Đối với văn phòng, điều này có thể chấp nhận được, nhưng trong các trường hợp khác, bạn cần truy cập liên tục từ các thiết bị khác nhau và các khả năng nâng cao khi làm việc với máy chủ.

Bạn có thể sử dụng máy chủ của chúng tôi, hãy làm những gì bạn muốn với thư của mình

Do đó, giao thức IMAP được phát triển như một giải pháp thay thế có nhiều chức năng hơn. Hãy đánh giá giá trị của nó:

  • Tôi đã nói về thực tế là thư nằm trên đám mây và luôn sẵn có nếu có kết nối Internet. Khi điện thoại thông minh của bạn có ít nhất 3G và Wi-Fi ở nhà hoặc trong quán cà phê, việc làm việc với các chữ cái sẽ trở thành một niềm vui. Mọi thứ luôn trong tầm tay. Đồng thời, giống như trên POP3, bạn có thể tải xuống thư từ máy chủ và lưu nó trên PC hoặc máy tính bảng của mình.
  • Đối với khả năng tìm kiếm các chữ cái (theo tên hoặc địa chỉ của người gửi hoặc đơn giản bằng các từ riêng lẻ), các nhà phát triển IMAP xứng đáng nhận được sự biết ơn đặc biệt từ những người dùng có hộp thư liên tục bị quá tải nhưng chưa được nghiên cứu đầy đủ.
  • Bạn có thể dễ dàng thao tác từng phần riêng lẻ của bức thư và chuyển tiếp chúng đến những người nhận khác. Và nói chung, khả năng làm việc với thư cho phép bạn hệ thống hóa nó thành nhiều danh mục khác nhau, lưu trữ và lọc thư rác.
  • IMAP hoạt động tốt với các tài khoản khác nhau.

  • Tin nhắn có thể được đánh dấu bằng các cờ đặc biệt, cho phép bạn lập kế hoạch và sắp xếp công việc với thư từ gửi đến.

Trên thực tế, IMAP có nhiều khả năng hơn. Tất cả phụ thuộc vào những gì bạn cần. Ví dụ: để chuyển một tập tin từ thiết bị này sang thiết bị khác, tôi chỉ cần đính kèm nó vào một bản nháp mà tôi có thể truy cập được từ bất kỳ thiết bị nào. Nhưng chúng ta đừng bị phân tâm và hãy tiếp tục. Tôi hy vọng bạn đã quyết định nên chọn gì cho mình, POP3 hoặc IMAP. Và bây giờ chúng ta cần biết phải làm gì tiếp theo.

Tôi có thể lấy cài đặt POP3/IMAP ở đâu?

Và sau đó bạn cần chỉ định các tham số thích hợp trong cài đặt ứng dụng thư khách. Thông thường, bạn cần chỉ định loại tài khoản (POP3 hoặc IMAP), tách biệt các máy chủ thư đến và đi, dữ liệu người dùng, số cổng máy chủ và các thông số khác.

May mắn thay, tất cả các dịch vụ nổi tiếng như Gmail, Yandex Mail, Microsoft Exchange đều hỗ trợ cả hai giao thức. Và tất nhiên họ cung cấp thông tin liên quan trên trang web của họ. Tôi nghĩ rằng bạn có thể dễ dàng tìm thấy nó và tự mình xử lý các cài đặt.

Bây giờ cuộc “thảo luận” về chủ đề POP3 hoặc IMAP đã kết thúc. Bạn có thể tùy ý tranh luận và tôi coi như nhiệm vụ của mình đã hoàn thành.

Cùng với đó, tôi xin chúc các bạn mọi thành công và xin gửi lời tạm biệt tới các bạn, những độc giả thân yêu của tôi.

Giao thức IMAP(Giao thức truy cập thư Internet) được mô tả trong RFC 2060.

Không giống như POP3, chỉ tải xuống các thư đến và lưu trữ cục bộ, với IMAP, bạn làm việc với thư trực tiếp trên máy chủ.

Giống như POP3, IMAP sử dụng khái niệm máy khách-máy chủ với một bộ lệnh. Các lệnh được sử dụng để truyền tải email từ máy chủ đến máy khách. Máy khách thiết lập kết nối TCP tới cổng 143 trên máy chủ cho mục đích này. Tiếp theo, máy chủ phải phản hồi bằng một thông báo mời đặc biệt.

1 ". 5 * OK shadrach.smallorg.org Máy chủ IMAP4revl V12.250 đã sẵn sàng 6 a001 ĐĂNG XUẤT 7 * BYE shadrach.smallorg.org Máy chủ IMAP4rev1 chấm dứt kết nối 8 a001 OK ĐĂNG XUẤT đã hoàn thành 9 Kết nối bị đóng bởi máy chủ nước ngoài. 10 $

Dòng 1 hiển thị lệnh mở phiên sử dụng telnet trên cổng 143 (cổng IMAP mặc định). Dòng 5 hiển thị lời nhắc do máy chủ IMAP đưa ra. Ở dòng 6, client đưa ra lệnh kết thúc phiên làm việc với server. Sau đó, máy chủ sẽ gửi thông báo kết thúc phiên (dòng 7) và đóng kết nối với máy khách.

Mỗi lệnh do khách hàng đưa ra đều có một mã định danh duy nhất đi trước. Sau đó, máy chủ có thể sử dụng mã định danh này trong các phản hồi của nó, cho phép khách hàng xác định phản hồi của máy chủ đề cập đến lệnh nào. Điều này đặc biệt quan trọng khi máy chủ đang thực thi nhiều lệnh mỗi phiên. Mã định danh thường là một chuỗi ngắn các ký tự chữ và số do máy khách tạo ra. Vì vậy, ở dòng 6 của Liệt kê 7.1, khách hàng đã chọn mã định danh a001. Nếu máy khách cần đưa ra các lệnh khác, mã định danh tiếp theo sẽ là a002, v.v. Thông thường, để đơn giản hóa mọi thứ, ID lệnh chỉ được tăng thêm một trong các bit của chúng trong suốt phiên IMAP.

Sau khi kết nối được thiết lập, máy khách ở trạng thái chờ xác thực vì nó phải tự nhận dạng để thực hiện bất kỳ thao tác nào với hộp thư của nó trên máy chủ. Sau khi được xác thực với máy chủ, máy khách có thể sử dụng các lệnh IMAP để quản lý thư trên máy chủ. Giao thức IMAP cho phép người dùng hỗ trợ nhiều hộp thư trên một máy chủ. Trong trường hợp này, khách hàng có thể đọc, gửi và xóa tin nhắn trong bất kỳ hộp thư nào của mình.

Phương pháp xác thực người dùng IMAP

Giống như POP3, IMAP có một số phương pháp xác thực ứng dụng khách. Một số trong số chúng cung cấp mức độ bảo mật cao hơn những cái khác. Không giống như máy khách POP3, máy khách IMAP thường dành nhiều phiên làm việc với máy chủ trong khi xử lý tin nhắn. Bằng cách này, ID người dùng và mật khẩu không được truyền qua mạng nhiều lần trong một giờ, như trường hợp điển hình của POP3.

Lệnh ĐĂNG NHẬP

Lệnh LOGIN cho phép khách hàng đăng nhập vào máy chủ IMAP bằng ID người dùng và mật khẩu ở dạng văn bản thuần túy.

Lệnh xác thực

Lệnh AUTHENTICATE cho phép khách hàng sử dụng các phương thức xác thực thay thế khi đăng ký với máy chủ IMAP. Xác thực người dùng cá nhân là tùy chọn và không được tất cả máy chủ IMAP hỗ trợ. Ngoài ra, việc triển khai việc kiểm tra như vậy có thể khác nhau tùy thuộc vào máy chủ. Khi máy khách đưa ra lệnh AUTHENTICATE, máy chủ sẽ phản hồi bằng chuỗi thử thách được mã hóa base64. Khi đó, trách nhiệm của khách hàng là phản hồi cuộc gọi xác thực của máy chủ, cũng được mã hóa base64. Nếu máy chủ không hỗ trợ phương thức xác thực được đề xuất của máy khách, nó sẽ bao gồm từ phủ định NO trong phản hồi của nó. Sau đó, khách hàng phải tiếp tục đàm phán để đồng ý về phương thức xác thực. Nếu mọi nỗ lực xác định phương thức xác thực đều không thành công, máy khách sẽ cố gắng đăng ký với máy chủ bằng lệnh LOGIN. Phiên ví dụ sử dụng AUTHENTICATE:

1 [riley@ shadrach riley] $ telnet localhost 143 2 Đang thử 127.0.0.1... 3 Đã kết nối với localhost. 4 Ký tự thoát là "^]" . 5 * OK localhost IMAP4rev1 v12.250 máy chủ đã sẵn sàng 6 a1 AUTHENTICATE KERBEROS_V4 7 a1 KHÔNG XÁC THỰC KERBEROS_V4 không thành công 8 a2 GSSAPI XÁC THỰC 9 a2 KHÔNG XÁC THỰC GSSAPI không thành công 10 a3 ĐĂNG NHẬP XÁC THỰC 11 + VXNlciBOYU1lAA == 1 2 * 13 3 KHÔNG ĐĂNG NHẬP XÁC THỰC không thành công 14 a4 ĐĂNG NHẬP riley firetruck 15 a4 OK ĐĂNG NHẬP hoàn tất 16 a5 ĐĂNG XUẤT 17 * BYE shadrach.smallorg.org Máy chủ IMAP4rev1 chấm dứt kết nối 18 a5 OK ĐĂNG NHẬP hoàn thành 19 kết nối bị đóng bởi máy chủ nước ngoài. 20 [riley@shadrach riley]$

Dòng 6–9 hiển thị nỗ lực của khách hàng trong việc thương lượng phương thức xác thực với máy chủ IMAP. Như bạn có thể thấy, tất cả đều không thành công. Và dòng 10 cho thấy rằng phương thức xác minh được chấp nhận cho cả máy khách và máy chủ đã được tìm thấy. Khi phản hồi, máy chủ sẽ đưa ra chuỗi cuộc gọi được mã hóa base64 trên dòng 11. Tuy nhiên, ở dòng 12, máy khách từ chối nỗ lực đăng nhập và chỉ tiếp tục ở dòng 14 bằng lệnh LOGIN.

Phía máy khách của giao thức IMAP

Sau khi đăng ký với máy chủ IMAP, máy khách có thể bắt đầu thao tác với tin nhắn. Giao thức IMAP cung cấp khá nhiều lệnh để đọc, di chuyển và xóa thư trong hộp thư trên máy chủ. Hãy nhớ rằng giao thức IMAP yêu cầu tất cả tin nhắn phải được lưu trữ trên máy chủ. Việc tải email xuống máy tính cục bộ của bạn chỉ nhằm mục đích hiển thị. Tuy nhiên, chúng không được di chuyển hoặc sao chép vào PC cục bộ của khách hàng.

Hộp thư mặc định cho máy khách được gọi là INBOX. Tất cả tin nhắn mới đều được gửi tới INBOX. Máy khách có khả năng tạo hộp thư mới (đôi khi được gọi là thư mục trong ứng dụng email). Ở đó, với mục đích sắp xếp, anh ta có thể di chuyển các tin nhắn từ thư mục INBOX.

Mỗi thư được gán một mã định danh duy nhất (UID) để nhận dạng chúng trong hộp thư. Thẻ UID được giữ lại trong suốt các phiên IMAP để phần mềm máy khách có thể xác định chính xác các thư trong hộp thư. Mỗi hộp thư có một UIDVALIDITY duy nhất. Nhãn UIDVALIDITY phải xuất hiện trong tất cả các phiên IMAP chỉ khi ID thư trong hộp thư vẫn giữ nguyên. Nếu hộp thư chứa các thư có ID khác nhau thì giá trị UIDVALIDITY sẽ được tăng lên trong phiên tiếp theo. Điều này cho phép khách hàng nhanh chóng xác định xem có thư mới nào trong hộp thư của họ kể từ lần cuối họ truy cập nó hay không.

Mỗi tin nhắn được cung cấp một lá cờ hiển thị trạng thái của nó. Cờ có thể là vĩnh viễn hoặc được đặt trong suốt thời gian của phiên. Cờ liên tục có thể được khách hàng thay đổi và tồn tại qua các phiên. Cờ được chỉ định cho mỗi phiên chỉ hợp lệ trong khoảng thời gian của phiên IMAP hiện tại. Trong bảng 7.1 trình bày các tùy chọn cho cờ thông báo thư.

Cờ tin nhắn thư IMAP

Cờ Mô tả \Đã xem Tin nhắn đã được đọc \Đã trả lời Một thư trả lời đã được gửi tới tin nhắn \Đã gắn cờ Tin nhắn đã bị đánh dấu bắt buộc \Đã xóa Tin nhắn đã bị xóa \Bản nháp Tin nhắn chưa hoàn thành (bản nháp) \Gần đây Một tin nhắn mới trong hộp thư

Một thư có thể có 0 cờ hoặc nhiều cờ. Thông tin về các cờ được gửi đến máy khách cùng với tin nhắn. Trách nhiệm của khách hàng là giải thích các cờ cho phù hợp.

Phần tiếp theo mô tả các lệnh IMAP mà máy khách có thể đưa ra cho máy chủ.

Mặc dù các lệnh IMAP được nhập ở dạng viết hoa toàn bộ theo RFC nhưng hầu hết các máy chủ IMAP đều chấp nhận các lệnh được cung cấp bằng cả chữ hoa và chữ thường.

Máy chủ phải phản hồi phù hợp với các lệnh đã cho hoặc phản hồi tiêu cực nếu lệnh được đưa ra không chính xác hoặc không được hỗ trợ.

lệnh CHỌN

Lệnh SELECT chỉ được sử dụng khi hộp thư đang hoạt động. Theo mặc định, cho đến khi máy khách đăng nhập, không có hộp thư nào mà nó sở hữu được chọn. Tiếp theo, khách hàng phải chọn hộp thư mà mình sẽ làm việc. Thông thường hộp đầu tiên mà khách hàng chọn là hộp INBOX, nơi đặt các tin nhắn mới. Định dạng của lệnh SELECT như sau:

CHỌN hộp thư

Ở đây hòm thư là tên của hòm thư mà client đang truy cập. Chỉ một hộp thư có thể hoạt động trong một phiên IMAP. Nếu hộp thư tồn tại và máy khách có quyền truy cập thích hợp vào nó, máy chủ sẽ cung cấp phản hồi nhiều dòng mô tả trạng thái của hộp thư.

lệnh TẠO

Lệnh CREATE được sử dụng để tạo hộp thư mới trên máy chủ IMAP. Tên và vị trí của hộp thư mới được xác định theo thông số kỹ thuật chung của hệ điều hành Linux. Một hộp thư mới được tạo trong thư mục làm việc của người dùng có tên nhưng không chỉ định vị trí vì thư mục $HOME của máy khách đã biết nó. Ví dụ: nếu thư mục làm việc của máy khách là /home/riley và máy khách đưa ra lệnh CREATE để tạo một hộp thư mới nội dung/rác, thì hộp thư mới được tạo trên máy chủ thư Linux sẽ có đường dẫn /home/riley/stuff/ rác. Trong ví dụ này, bạn có thể thấy ký tự phân cách / được sử dụng như thế nào. Tuy nhiên, điều này không phổ biến đối với tất cả các máy chủ IMAP.

Một số chương trình máy khách IMAP sử dụng thư mục thuật ngữ để chỉ các hộp thư mới. Nhiều trong số chúng còn cho phép người dùng tạo chúng ở một mức độ lồng nhau nhất định, vì vậy hãy cẩn thận khi tạo các thư mục (hộp thư) mới. Khi đường dẫn đến hộp thư tăng lên, việc phục vụ nó ngày càng trở nên khó khăn hơn.

lệnh XÓA

Lệnh DELETE áp dụng cho hộp thư, không áp dụng cho tin nhắn. Máy chủ IMAP, khi nhận được lệnh này, sẽ cố gắng xóa hộp thư có tên được chỉ định làm đối số cho lệnh. Đối số lệnh có thể sử dụng các mô tả đường dẫn Linux tiêu chuẩn, được phân tách bằng dấu /, trừ khi chúng nằm trong thư mục $HOME. Tin nhắn từ các hộp thư đã xóa không thể khôi phục được và sẽ bị mất cùng với các hộp thư.

Lệnh ĐỔI TÊN

Lệnh RENAME có thể được máy khách sử dụng để thay đổi tên của hộp thư. Trong trường hợp này, hai tham số có thể được sử dụng. Tham số đầu tiên là tên thật của hộp thư cần đổi tên. Và tham số thứ hai là tên hộp thư mới.

Việc đổi tên không ảnh hưởng đến nội dung của hộp thư.

Lệnh DANH SÁCH

Lệnh LIST được sử dụng để lấy danh sách tất cả các hộp thư của khách hàng. Nó sử dụng hai tham số. Định dạng lệnh LIST được đưa ra dưới đây:

LIST hộp thư tham khảo

Tham chiếu ở đây là thư mục chứa các hộp thư. Nếu bạn chỉ định một chuỗi trống thay vì tham số này (""), các hộp thư sẽ được đặt trong thư mục làm việc của người dùng $HOME. Tham số hộp thư thứ hai là tên của hộp thư cần xem. Bạn có thể sử dụng các ký tự đặc biệt ở đây, giống như cách bạn làm khi lấy danh sách thư mục thông thường, chẳng hạn như ký tự đại diện (*). Nếu tên hộp thư được chỉ định dưới dạng một chuỗi trống (""), máy chủ sẽ trả về dấu phân cách phân cấp (đối với Linux /) và tên của tham số gốc dưới dạng phản hồi.

Đội LSUB

Lệnh LSUB được sử dụng để giải quyết sự cố được mô tả cho lệnh LIST. Không giống như lệnh LIST hiển thị toàn bộ nội dung thư mục làm việc của người dùng, lệnh LSUB chỉ hiển thị các hộp thư máy khách được kích hoạt bằng lệnh SUBSCRIBE được mô tả trước đó. Các tham số của lệnh LSUB hoàn toàn giống với lệnh LIST, tức là. tên tham chiếu và hộp thư. Giống như lệnh LIST, tham số liên kết chỉ định đường dẫn đến thư mục chứa các hộp thư có tên trùng khớp (thư mục $HOME nếu ""). Theo đó, tên hộp thư dùng để chỉ tên hộp thư hoặc tên các hộp thư cần hiển thị trong danh sách (cho phép ký tự đại diện (*)).

Sau đó, các hộp thư có thể được thêm vào danh sách các hộp thư đang hoạt động bằng lệnh SUBSCRIBE và xóa khỏi danh sách bằng lệnh UNSUBSCRIBE. Bằng cách sử dụng các lệnh này, bạn có thể triển khai việc đọc nhóm tin dựa trên ứng dụng khách IMAP. Hơn nữa, mỗi nhóm tin tức được triển khai dưới dạng một hộp thư riêng trên máy chủ, sau đó bạn có thể đăng ký. Ngày nay, hầu hết các chương trình email đều có tính năng đọc nhóm tin nên việc thực hiện các thao tác này trong IMAP là không cần thiết.

lệnh PHỤ LỤC

APPEND là một lệnh khác trong nhóm lệnh IMAP. Thông thường, IMAP được sử dụng riêng để đọc thư từ hộp thư. Lệnh APPEND cho phép bạn gửi tin nhắn đến hộp thư bằng cách thêm tin nhắn vào cuối tệp hộp thư. Chức năng này không hoạt động hoàn toàn chính xác và khá nguy hiểm, vì vậy chúng tôi khuyên bạn không nên sử dụng nó để thay thế cho SMTP. Đó là một tính năng bổ sung thú vị của giao thức IMAP hơn là một tính năng đặc biệt. Định dạng cơ bản của lệnh APPEND như sau:

GỬI tin nhắn hộp thư [(cờ)] (kích thước tin nhắn)

Lệnh KIỂM TRA

Lệnh CHECK được sử dụng để đặt điểm kiểm tra trên hộp thư. Mọi thao tác, chẳng hạn như ghi dữ liệu từ bộ nhớ của máy chủ vào ổ cứng của nó, phải được thực hiện ở trạng thái hộp thư thích hợp. Lệnh CHECK được sử dụng để kiểm tra tính toàn vẹn của hộp thư sau đĩa và các hoạt động tương tự khác. Lệnh này được sử dụng không có tham số.

lệnh ĐÓNG

Lệnh ĐÓNG đúng như tên gọi của nó - nó đóng hộp thư.

Khi một hộp thư bị đóng, tất cả các thư được đánh dấu bằng cờ \DELETED sẽ bị xóa khỏi hộp thư đó.

Tác dụng của lệnh CLOSE được thấy rõ trên hộp thư mới vừa được mở. Một hộp thư đang mở cũng có thể được đóng bằng lệnh LOGOUT. Lệnh CLOSE không có tham số.

Lệnh XÓA

Lệnh EXPUNGE được sử dụng để xóa tất cả các thư được đánh dấu bằng cờ \DELETED khỏi hộp thư mà không đóng hộp thư.

Phản hồi của máy chủ đối với lệnh EXPUNGE là một báo cáo về trạng thái mới của hộp thư.

1 $ telnet localhost 143 2 Đang thử 127.0.0.1... 3 Đã kết nối với localhost. 4 Ký tự thoát là "^]". 5 * OK localhost lMAP4rev1 v12.250 máy chủ đã sẵn sàng 6 a1 đăng nhập alex trống 7 a1 OK ĐĂNG NHẬP đã hoàn thành 8 a2 chọn hộp mới 9 * 6 Tồn tại 10 * 0 GẦN ĐÂY 11 * OK Trạng thái hợp lệ DID 12 * OK Dự đoán UID tiếp theo 13 * FLAGS (\Đã trả lời \Flagged \Deleted \Draft \Seen) 14 * OK Cờ vĩnh viễn 15 * OK tin nhắn chưa thấy đầu tiên trong /home/alex/newbox 16 a2 OK CHỌN đã hoàn thành 17 a3 store 1 +flags \DELETED 18 * 1 FETCH (CỜ (\ Đã xóa) ) 19 a3 OK STORE đã hoàn thành 20 a4 store 2 +flags \DELETED 21 * 2 FETCH (CỜ (\Đã xóa)) 22 a4 OK STORE đã hoàn thành 23 a5 trạng thái hộp mới (không thấy tin nhắn) 24 * Hộp mới TRẠNG THÁI (TIN NHẮN 6 CHƯA XEM 6) 25 a5 OK TÌNH TRẠNG đã hoàn thành 26 a6 xóa 27 * 1 XÓA 28 * 1 XÓA 29 * 4 Tồn tại 30 * 0 GẦN ĐÂY 31 a6 OK Đã xóa 2 tin nhắn 32 a7 trạng thái hộp mới (không thấy tin nhắn) 33 * TRẠNG THÁI hộp mới (TIN NHẮN 4 CHƯA XEM 4) 34 a7 TRẠNG THÁI OK đã hoàn thành 35 a8 đăng xuất 36 * BYE shadrach.sniallorg.org Máy chủ IMAP4rev1 chấm dứt kết nối 37 a8 OK LOGOUT đã hoàn thành 38 Kết nối bị đóng bởi máy chủ nước ngoài. $39

Ở dòng 8, người dùng alex chọn hộp thư có tên newbox. Dòng 9–16 là phản hồi của máy chủ với thông tin liên quan đến hộp thư đã chọn. Dòng 9 nói rằng có 6 tin nhắn trong đó. Ở dòng 17 và 20, người dùng alex đã sử dụng lệnh STORE để đánh dấu hai tin nhắn là đã xóa (\DELETED). Sau đó, ở dòng 23, người dùng Alex đưa ra lệnh STATUS. Từ dòng 24, chúng ta có thể kết luận rằng, theo quan điểm của máy chủ IMAP, vẫn còn sáu tin nhắn trong hộp thư, mặc dù hai trong số chúng được đánh dấu là đã xóa. Ở dòng 26, người dùng đưa ra lệnh EXPUNGE để xóa các tin nhắn được đánh dấu là đã xóa. Phản hồi của máy chủ trên các dòng 27–31 xác nhận rằng các thư đã bị xóa khỏi hộp thư và còn lại bốn thư trong hộp thư. Điều này cũng được xác nhận bằng lệnh STATUS được chỉ định trên dòng 32. Máy chủ phản hồi rằng hiện chỉ có bốn thư trong hộp thư.

Nhóm TÌM KIẾM

Lệnh TÌM KIẾM là một trong những công cụ mạnh mẽ nhất trong kho vũ khí của IMAP. Lệnh này tìm kiếm thư dựa trên tiêu chí trong hộp thư đang hoạt động và sau đó hiển thị kết quả dưới dạng số thư. Định dạng lệnh TÌM KIẾM như sau:

TÌM KIẾM (tiêu chí tìm kiếm)

Ở đây, đặc tả CHARSET bao gồm từ hàm CHARSET theo sau là bộ ký tự chỉ định. Bộ ký tự mặc định là ASCII nên thông số này thường bị bỏ qua. Tham số tiêu chí tìm kiếm xác định tiêu chí tìm kiếm chính và giá trị của chúng. Tiêu chí tìm kiếm được mô tả trong bảng. 7.3.

Bàn. Tiêu chí tìm kiếm cho lệnh TÌM KIẾM

Tiêu chí tìm kiếm Mô tả Tin nhắn có số tương ứng với phạm vi được chỉ định TẤT CẢ Tất cả tin nhắn trong hộp thư TRẢ LỜI Tin nhắn có cờ \ANSWERED BCC Thông báo chứa chuỗi được chỉ định trong trường tiêu đề BCC BEFORE Tin nhắn được tạo trước ngày được chỉ định BODY Tin nhắn có chứa chuỗi CC được chỉ định trong nội dung Tin nhắn chứa chuỗi được chỉ định trong trường tiêu đề CC DELETED Tin nhắn có cờ \DELETED DRAFT Tin nhắn có cờ \DRAFT FLAGGED Tin nhắn có cờ được đặt \FLAGGED From Tin nhắn chứa chuỗi được chỉ định trong trường tiêu đề Từ HEADER Tin nhắn chứa tiêu đề được chỉ định với chuỗi KEYWORD được chỉ định trong đó Thông báo chứa danh sách tiêu chí LARGER được chỉ định Tin nhắn lớn hơn n Tin nhắn MỚI có cờ \RECENT nhưng không có cờ \SEEN NOT Tin nhắn không chứa danh sách tiêu chí CŨ được chỉ định Tin nhắn không có cờ \RECENT ON Tin nhắn được tạo vào ngày được chỉ định HOẶC Tin nhắn chứa tiêu chí tìm kiếm Boolean HOẶC Tin nhắn GẦN ĐÂY có cờ \RECENT SEEN Tin nhắn có cờ \SEEN SENTBEFORE Tin nhắn được tạo trước ngày được chỉ định, theo trường tiêu đề Ngày SENTON Tin nhắn được tạo vào ngày được chỉ định, theo trường tiêu đề Ngày SENTSINCE Tin nhắn được tạo sau ngày được chỉ định, theo trường tiêu đề Ngày SINCE Tin nhắn được tạo sau ngày được chỉ định NHỎ HƠN Tin nhắn có kích thước không vượt quá n TEXT Thư chứa chuỗi được chỉ định trong tiêu đề hoặc UID nội dung thư Tin nhắn có UID khớp với phạm vi được chỉ định KHÔNG TRẢ LỜI Tin nhắn không có cờ \ANSWERED UNDELETED Tin nhắn không có cờ \DELETED UNDRAFT Tin nhắn không có cờ \DRAFT UNFLAGGED Tin nhắn không có cờ \FLAGGED UNKEYWORD Tin nhắn không có bộ tiêu chí được chỉ định Tin nhắn KHÔNG ĐƯỢC XEM không có cờ \SEEN

Như bạn có thể thấy từ bảng, có rất nhiều tiêu chí tìm kiếm thư. Điều này rất thuận tiện khi bạn cần tìm một tin nhắn cụ thể trong các hộp thư chứa rất nhiều tin nhắn. Dưới đây là một ví dụ ngắn sử dụng lệnh TÌM KIẾM.

1 $ telnet localhost 143 2 Đang thử 127.0.0.1... 3 Đã kết nối với localhost. 2 Ký tự thoát là "^]". 4 * OK localhost IMAP4rev1 Máy chủ V12.250 đã sẵn sàng 5 a1 đăng nhập alex trống 7 a1 OK ĐĂNG NHẬP đã hoàn tất 8 a2 chọn hộp thư đến 9 * 2 Tồn tại 10 * 0 GẦN ĐÂY 11 * OK Trạng thái hợp lệ UID 12 * OK Dự đoán UID tiếp theo 13 * FLAGS (\Đã trả lời \Flagged \Deleted \Draft \Seen) 14 * OK Permanent fs 15 * OK tin nhắn chưa thấy đầu tiên trong /var/spool/mail/alex 16 a2 OK CHỌN đã hoàn thành 17 a3 bài kiểm tra chủ đề tiêu đề tìm kiếm 18 * TÌM KIẾM 1 2 19 a3 OK TÌM KIẾM đã hoàn thành 20 a4 chủ đề tiêu đề tìm kiếm khác 21 * TÌM KIẾM 2 22 a4 OK TÌM KIẾM đã hoàn thành 23 a5 tìm kiếm không nhìn thấy 24 * TÌM KIẾM 1 2 25 a5 OK TÌM KIẾM đã hoàn thành 26 a6 đăng xuất 27 * BYE shadrach.smallorg.org Máy chủ IMAP4rev1 chấm dứt kết nối 28 a6 OK LOGOUT đã hoàn tất 29 Kết nối bị đóng bởi máy chủ nước ngoài. $30

Các dòng 17, 20 và 23 hiển thị ví dụ về cách sử dụng lệnh TÌM KIẾM. Các dòng 18, 21 và 24 là phản hồi của máy chủ IMAP đối với lệnh TÌM KIẾM. Phản hồi chứa số tin nhắn phù hợp với tiêu chí tìm kiếm. Nếu không tìm thấy kết quả trùng khớp, máy chủ trả về từ TÌM KIẾM mà không có thông báo UID.

Lệnh FETCH

Lệnh FETCH được sử dụng để truy xuất nội dung của email. Nó chỉ được sử dụng để hiển thị tin nhắn. Không giống như POP3, ứng dụng khách IMAP không lưu trữ bản sao của tin nhắn trên PC khách.

đội CỬA HÀNG

Lệnh STORE được sử dụng để thay đổi thông tin tin nhắn. Dạng lệnh như sau:

CỬA HÀNG

Lý lẽ chỉ định phạm vi số thông báo mà lệnh STORE áp dụng. Hiện tại chỉ có hai loại dữ liệu được xác định cho lệnh này ( ). Loại FLAGS xác định tập hợp các cờ được đặt cho một tin nhắn. Loại FLAGS.SILENT cũng xác định một tập hợp các cờ được đặt cho một tin nhắn nhưng máy chủ IMAP không trả về giá trị mới của chúng trong phản hồi của nó.

Bạn có thể kiểm soát hành vi của các loại dữ liệu này bằng cách thêm dấu cộng (+) hoặc dấu trừ (-) vào trước chúng. Dấu cộng có nghĩa là giá trị kiểu dữ liệu ( ) sẽ được thêm vào tin nhắn, trừ đi - nó sẽ bị xóa khỏi tin nhắn.

17 a3 store 1 +flags \DELETED 18 * 1 FETCH (FLAGS (\Deleted)) 19 a3 OK STORE đã hoàn thành

Dòng 18 của danh sách này cho thấy cách đặt cờ \DELETED cho thư trong hộp thư đang hoạt động số 1. Lưu ý rằng cờ này đứng trước dấu cộng (+). Bạn cũng có thể chỉ định cờ (-). Cờ \DELETED sau đó sẽ bị xóa đối với tin nhắn (một cách để khôi phục tin nhắn đã xóa trước khi điểm kiểm tra tin nhắn có hiệu lực).

Thư được đánh dấu bằng cờ \DELETED sẽ không bị xóa vật lý khỏi hộp thư cho đến khi các lệnh được chạy để gán điểm kiểm tra mới cho hộp thư. Và điều này được thực hiện bằng cách sử dụng các lệnh KIỂM TRA, XÓA, CHỌN hoặc ĐĂNG NHẬP.

lệnh SAO CHÉP

Lệnh COPY được sử dụng để sao chép thư từ hộp thư này sang hộp thư khác. Định dạng của lệnh COPY được đưa ra dưới đây:

SAO CHÉP

Đây chỉ định phạm vi số tin nhắn cần được sao chép từ hộp thư đang hoạt động và chỉ định tên của hộp thư mà chúng sẽ được sao chép vào.

Không có lệnh di chuyển thư nào được xác định cho giao thức IMAP, nhưng rõ ràng thao tác này không gì khác hơn là sao chép thư sang hộp thư khác có cờ \DELETED được đặt cho thư gốc. Sau lần xoay hộp thư tiếp theo (điểm kiểm tra), các thư gốc sẽ bị xóa và chỉ còn lại các bản sao của chúng.

Đội ngũ NĂNG LỰC

Lệnh CAPABILITY có thể được máy khách sử dụng để truy vấn máy chủ IMAP để biết thông tin về các khả năng của nó.

Nhóm NOOP

Các hành động của lệnh NOOP, như chúng ta biết, tương ứng với tên của nó, tức là. cô ấy không làm gì cả Nó có thể được sử dụng để duy trì hoạt động trong một phiên để phiên không kết thúc do hết thời gian chờ. Phản hồi của máy chủ đối với lệnh NOOP phải luôn tích cực. Vì máy chủ thường trả về trạng thái thực thi của một lệnh cụ thể trong phản hồi của nó nên NOOP có thể được sử dụng làm trình kích hoạt để truy vấn định kỳ trạng thái máy chủ. Nếu có điều gì đó xảy ra với hộp thư trong khoảng thời gian chờ, chẳng hạn như máy chủ xóa thư theo quy tắc do quản trị viên hệ thống thư đặt cho hộp thư, thì lệnh NOOP sẽ trả về thông tin cập nhật về trạng thái của nó.

Lệnh ĐĂNG XUẤT

Lệnh LOGOUT được sử dụng để kết thúc phiên làm việc của ID người dùng hiện tại và đóng tất cả các hộp thư đang mở. Nếu bất kỳ thư nào được đánh dấu bằng cờ \DELETED thì khi sử dụng lệnh này, chúng sẽ bị xóa khỏi hộp thư.