Thursday, 4 April 2013

Lột trần một hệ thống email

Email thì ai cũng dùng. Những từ như : from/ recipients / subject ai cũng biết cả. Nhưng đằng sau là một hệ thống server với đầy thuật ngữ. Hãy vạch trần chúng, đưa ra ánh sáng để không còn gì là mờ mịt!

0. MUA là gì?
Mail User Agent (MUA) là loại chương trình cho phép gửi và nhận email. Chương trình này tương tác trực tiếp với người dùng. Các MUA đóng vai trò là SMTP client khi GỬI mail và là  IMAP/POP3 client khi truy cập + đọc mail.
VD: Thunderbird, Outlook, mutt, RoundCube, SquirrelMail ...

1. SMTP là gì? IMAP là gì? POP3 là gì?
3 giao thức (protocol) dùng trong gửi và nhận email. Đây đều là các giao thức cho mô hình client-server, tức là sẽ có máy đóng vai trò server, và có máy đóng vai client.

SMTP: Simple Mail Transfer Protocol - giao thức truyền mail đơn giản (dùng để gửi mail)

POP3: Post Office Protocol 3 - giao thức truy cập mail từ xa. Trong giao thức này, MUA với vai trò POP3 client, download các email về đĩa cứng máy tính cá nhân và xóa các  email đó trên server

IMAP: Internet message access protocol - giao thức truy cập mail từ xa. Trong giao thức này, MUA với vai trò IMAP client chỉ lấy về các thông tin về email (from, to, subject ...), và chỉ lấy nội dung của email khi người dùng yêu cầu. Nó không xóa email trên server nếu người dùng không yêu cầu.


2. MTA là gì? (mail server là gì)
Mail Transfer Agent (MTA) hay còn được gọi với cái tên dễ hiểu khác là "mail server", làm nhiệm vụ nhận email từ máy khác và chuyển nó đến đích cần đến. Các MTA đóng vai trò là SMTP server.


Transfer: truyền, chuyển
VD: postfix, qmail, exim
Cố tí nữa đi, sắp hết rồi...


3. MDA là gì?
Mail Delivery Agent (MDA) là loại chương trình có nhiệm vụ chính là lưu trữ email vào đĩa cứng. Ngoài ra nó có thể làm các công việc khác như lọc, sắp xếp email...
VD: maildrop, procmail

4. LDA là gì?
Local Delivery Agent (LDA) là chương trình làm nhiệm vụ lưu trữ email vào đĩa cứng
VD: dovecot LDA
Việc lưu trữ email vào đĩa cứng có thể thực hiện bởi: MDA / LDA hoặc chính MTA

theo một số nguồn tài liệu thì MDA và LDA là 2 từ đồng nghĩa. (wikipedia, dovecot's wiki)
TODO: Làm rõ vấn đề này

5. POP3 server - IMAP server là gì?

Chương trình đóng vai server trong 2 giao thức (POP3/IMAP) được gọi là POP3/IMAP server. POP3/IMAP server làm nhiệm vụ lấy mail đã được lưu trữ và trả về cho client khi được yêu cầu.

VD: dovecot, courier, cyrus...

6. mbox là gì? Maildir là gì? 
là 2 cách lưu trữ mail phổ biến nhất trên *NIX (chính xác thì là 2 mailbox format)
mbox: lưu tất cả mail vào một file.
Maildir: lưu mỗi mail ra một file.

7. còn lại là gì?
rất nhiều thứ như hệ thống chống spam/virus, authen... cực kỳ cần thiết cho một hệ thống mail chạy thật nhưng không bàn đến ở bài này!

Bài tập:
Q: Gmail là thể loại nào ?

- Trả lời: phần người dùng tương tác trên web mail.google.com là một MUA (IMAP client)