[MailServer] Hiểu về cơ chế lưu trữ mail – Maildir

Hiểu về cơ chế lưu trữ mail – Maildir

 
– Là một chuẩn dùng để chỉ về phương thức lưu trữ email phía Email Server.
– Mỗi email message sẽ được lưu dưới dạng các file tách biệt, mỗi file sẽ có một ID định danh duy nhất và được nằm trong một folder directory theo format Maildir.
– Thường thì chúng ta sẽ có 3 directory con được sử dụng trong cơ chế lưu trữ maildir gồm : cur, tmp  và new .
 
 maildir
 
Vai trò của 3 directory con tmp | new | cur ?
– tmp : thư mục con tmp lưu trữ các Email message được trong quá trình xử lý vận chuyển.
– new : thư mục con new lưu trữ các mail message đã được chuyển tới maildir để chứa nhưng mà vẫn chưa được tiếp cận đọc bởi bất kì ứng dụng MUA nào.
– cur : thư mục con này dùng để lưu trữ email message đã được xem qua bởi các ứng dụng mail MUA như webmail hoặc Outlook, Thunderbird.

 

Thế Maildir hoạt động như thế nào ?
1. Nhận và lưu trữ 1 mail message
– Khởi tạo 1 file có ID định danh duy nhất (unique ID), ví dụ là file A-ID trong thư mục tmp .
– Chuyển nội dung mail vào file có unique ID A-ID vừa được tạo.
– Di chuyển file A-ID từ thư mục tmp vào thư mục new và thay đổi luôn A-ID theo 1 form mới.
ID filename sẽ thường có theo mãu sau :
Unixtime.UniqueID.hostname
 
+ Unixtime : thời gian unix của hệ thống Linux
+ UniqueID : giá trị này phụ thuộc vào quy định riêng của từng phần mềm dịch vụ MTA, hoặc cũng đơn giản có thể là giá trị PID của process xử lý mail message đó.
+ Hostname : tên hostname của hệ thống.

2. Đọc mail message
– Xác định vị trí lưu trữ file mail message có ID tương ứng và đọc nội dung mail.
– Di chuyển mail có ID tương ứng từ thư mục new sang thư mục cur với việc mở rộng thêm giá trị flag về trạng thái của mail đó vào tên file message.
time.MusecPpid.host
Các loại trạng thái info của 1 message lưu trong thư mục cur :
– Khi mà bạn chuyển một file message từ thư mục new sang thư mục cur , bạn phải đổi tên của file đó theo format : uniq_id -> uniq_id:info .
– Giá trị info ở đây dùng để chỉ trạng thái của message đó đối với người dùng để biết họ đã đọc hay chưa mail cụ thể. info gồm 2 giá trị : 
+ 1 : lý thuyết thực nghiệm
+ 2 : thực tế, thường bắt đầu bằng số 2.

– Các giá trị flag thể hiện trạng thái như sau :
+ “S” – Seen : người dùng đã đọc qua mail message này, dù có thể họ không đọc hết hoàn toàn.
+ “T” – Trashed : người dùng đã chuyển mail message này vào hòm thư rác.
+ “D” – Draft : người dùng xem mail message này như 1 thư nháp.
+ “R” – Replied : người dùng đã phản hồi trả lời lá thư này.
+ “P” – Passed : người dùng đã chuyển tiếp hoặc gửi lại mail message này cho ai đó.
+ “F” – Flagged : flag được định nghĩa bởi riêng người dùng.

3. Xoá mail
– Xoá mail có nội dung ID tương ứng.

4. Tìm kiếm thông tin trong mail
– Search từng file mail message rồi tìm nội dung mail muốn biết.


Ưu điểm

– Mỗi message sẽ được chứa trong các file khác nhau có tên ID riêng biệt không giống nhau.

– MUA có thể đọc và xoá message trong khi mail mới được xử lý vận chuyển, không bị lock tiến trình mail message như mailboxes.

Nhược điểm
– Tạo 1 lượng lớn lưu trữ email của từng người dùng, khiến cho hệ thống filesystem của một số HĐH không hỗ trợ tốt.
– Trong trường hợp bị spam mail, khiến lượng mail queue tăng đột biến, sản sinh nhiều file trong hệ thống ~> tràn số lượng Inode sử dụng bởi hệ thống.
– Việc tìm nội dung của 1 đoạn text sẽ chậm hơn nhiều do phải mở từng file search đối đóng lại từng file.
 
Mình xin kết thúc nội dung bài viết này.
Previous article[cPanel] Lỗi PHPMyAdmin – “Access Denied Unable to establish a PHP session”
Next article[cPanel] Cài đặt Zend Opcache cho PHP 5.3 và 5.4 trên cPanel/WHM
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !