Categories
Emails

Email hoạt động như thế nào?

Computer trivia: What yellow smiley interface for computer newbie’s was quickly downsized by Microsoft?
Answer: Microsoft Bob.

Có bao giờ bạn nghĩ làm thế nào email được gửi từ máy tính của bạn đi khắp thế giới không? Máy chủ POP3 (POP3 server) là gì? Làm thế nào nó quản lí email của bạn? Câu trả lời có thể làm bạn ngạc nhiên, bởi vì hệ thống email về mặt bản chất rất đơn giản. Chúng ta hãy cùng xem xét xem nó hoạt động như thế nào.Có bao giờ bạn nghĩ làm thế nào email được gửi từ máy tính của bạn đi khắp thế giới không? Máy chủ POP3 (POP3 server) là gì? Làm thế nào nó quản lí email của bạn? Câu trả lời có thể làm bạn ngạc nhiên

Electronic Mail (email – thư điện tử)

Email đầu tiên được gửi vào năm 1971 từ một kĩ sư tên là Ray Tomlinson. Đầu tiên, email chỉ có thể được gửi trên một máy tính đơn lẻ. Ray đã tìm ra khả năng gửi email từ máy tính này đến máy tính khác qua Internet sử dụng kí hiệu “@” để chỉ định nơi nhận thư.
Một email không có gì đơn giản hơn là một “thông điệp chữ” – một đoạn văn bản được gửi cho người nhận. Từ buổi sơ khai cho đến tận ngày hôm nay, email luôn có khuynh hướng là đoạn văn bản ngắn mặc dù khả năng thêm và “đính kèm” làm cho nhiều email trở nên rất dài và đa dạng. Tuy rằng có khả năng đính kèm, email vẫn tiếp tục là “thông điệp chữ”. Chúng ta sẽ xem xét về khả năng đính kèm sau.

Email Client (trình duyệt thư)

Hôm nay bạn đang nhận vài email. Để đọc được chúng, bạn sử dụng một vài loại email client (trình duyệt thư). Rất nhiều người sử dụng thành thạo những phần mềm đơn lẻ như Microsoft Outlook, Outlook Express, Eudora… Một vài người khác đăng kí dịch vụ email miễn phí như Hotmail, Yahoo… thì sử dụng Email client hiển thị trên trang Web. Nếu bạn là khách hàng của AOL, bạn sẽ sử dụng Email client của AOL… Bất kể kiểu Email client nào bạn đang sử dụng, nó đều mang 4 đặc điểm sau:

  • Email client cho bạn thấy một danh sách mesage trong hộp thư của bạn bằng cách hiển thị message header (đầu mục của thư). Message header này chỉ cho bạn ai đã gửi message, tiêu đề của message, và những thông tin khác như thời gian gửi, thời gian nhận, kích cỡ…
  • Email client cho phép bạn chọn và đọc nội dung của một message
  • Email client cho phép bạn tạo một message mới và gửi nó đi. Bạn nhập vào địa chỉ người gửi, tiêu đề và nội dung của message…
  • Hầu hết các email client cho phép đính kèm file, văn bản, hình ảnh… vào message gửi đi và lưu những đính kèm khác từ message nhận được.Những email client phức tạp còn có thể có những chức năng khác nhưng nói chung về bản chất, đấy là tất cả những gì mà một email client có.

Một máy chủ email đơn giản
Bạn đã có email client trên máy tính của bạn, bạn đã sẵn sàng để gửi và nhận thư điện tử. Tất cả bạn cần bây giờ là một máy chủ thư điện tử để email client kết nối đến. Hãy tưởng tượng cách đơn giản nhất một máy chủ thư điện tử sẽ như thế nào để hiểu khái niệm cơ bản của tiến trình. Sau đó chúng ta sẽ đi vào thực tế.
Nếu bạn đã đọc “Máy chủ web và Internet hoạt động thế nào”, thì bạn sẽ biết rằng những hệ thống máy tính trên Internet có thể chạy những phần mềm ứng dụng được gọi là Server (Máy chủ, máy phục vụ). Chúng gồm những loại server như Web server (máy chủ web), FTP server (máy chủ truyền file), Telnet server (máy chủ telnet) và Email server (máy chủ thư điện tử)… Những máy chủ này chạy suốt ngày đêm và kiểm tra những “cổng đặc biệt” (Specific ports), chờ đợi những chương trình kết nối vào các cổng đó. Một máy chủ email đơn giản nhất sẽ làm những việc như sau:

  • Nó sẽ có một danh sách tài khoản email, với mỗi tài khoản ứng với mỗi người có thể nhận email trên máy chủ. Tên tài khoản của bạn có thể là lelan, tranmai hoặc tương tự.
  • Nó sẽ có một file văn bản ứng với mỗi tài khoản trong danh sách. File văn bản trong danh sách có thể sẽ là lelan.txt, tranmai.txt hoặc tương tự.
  • Nếu một ai đó muốn gửi một message ngắn (ví dụ “Lan, Chủ nhật này đi ăn trưa nhé. Mai”) trong một email client và chỉ ra rằng bức thư này sẽ được gửi đến cho Lan. Khi người đó ấn chuột vào nút gửi, email client sẽ kết nối tới máy chủ thư điện tử và chuyển cho máy chủ tên của người nhận (Lan), tên của người gửi và nội dung của bức thư.
  • Máy chủ sẽ định dạng đoạn văn bản ngắn này và gắn nó vào phần cuối của file lelan.txt. Phần thêm vào của file sẽ có dạng như sau:
    • From: tranmai
    • To: lelan
    • Lan,
    • Chủ nhật này đi ăn trưa nhé.
    • Mai

Có một vài thông tin mà máy chủ thư điện tử phải lưu vào trong file như thời gian nhận và dòng tiêu đề… nhưng nhìn chung bạn có thể thấy rằng đây là một quá trình vô cùng đơn giản.
Khi những người khác gửi mesage cho Lan, máy chủ thư điện tử sẽ đơn giản là gắn tiếp những bức thư đó vào phần cuối của file lelan.txt. File văn bản sẽ bao gồm một nhóm 5 hoặc 10 bức thư và cuối cùng Lan sẽ truy nhập vào và đọc chúng. Khi Lan muốn đọc thư, email client của cô ấy sẽ kết nối vào máy chủ và trong một tiến trình đơn giản nhất email client sẽ:

  1. Hỏi máy chủ để gửi một bản sao của file lelan.txt
  2. Hỏi máy chủ để xoá và điều chỉnh lại file lelan.txt
  3. Lưu file lelan.txt trên máy tính cục bộ
  4. Phân tích file lelan.txt ra từng bức thư riêng biệt (tìm từ “From” để tách các bức thư)
  5. Hiển thị cho Lan tất cả các message header (đầu mục thư) theo danh sách

Khi Lan nhấn đúp chuột lên một đầu mục thư, trình duyệt sẽ tìm nội dung thư đó trong file lelan.txt và hiển thị lên.
Bạn phải thừa nhận rằng đây là một hệ thống rất đơn giản. Thật là ngạc nhiên những hệ thống máy chủ email trong thực tế bạn sử dụng hàng ngày đều không phức tạp hơn.

Hệ thống thư điện tử ngày nay
Một hệ thống thư điện tử bao gồm hai ứng dụng khác nhau cùng chạy trên một máy chủ. Ứng dụng thứ nhất gọi là máy chủ SMTP (SMTP server – Simple Mail Transfer Protocol – Giao thức truyền thư đơn giản). Máy chủ SMTP xử lý thư điện tử đi. Ứng dụng còn lại gọi là máy chủ POP3 (POP3 server – Post Office Protocol – Giao thức hộp thư). Máy chủ POP3 xử lý thư đến. Một máy chủ thư điện tử điển hình có định dạng như hình vẽ sau:

Ứng dụng SMTP kiểm soát cổng số 25 trong khi ứng dụng POP3 kiểm soát cổng 110 (xem “Máy chủ web và Internet hoạt động thế nào” để biết chi tiết về các cổng).

SMTP server
Mỗi khi bạn gửi một message, email client của bạn tương tác với SMTP server để xử lý việc gửi. SMTP server trên máy chủ của bạn có thể có giao tiếp với SMTP server trên máy chủ khác để chuyển bức thư đó.

Hãy giả định rằng bạn muốn gửi một bức thư. Định danh của bạn là lelan, và bạn có tài khoản trên vnn.vn. Bạn muốn gửi thư cho [email protected] bạn đang sử dụng email client Outlook Express.

  1. Khi bạn cài đặt tài khoản trên vnn.vn, bạn chỉ định cho Outlook Express tên của máy chủ thư điện tử – mail.vnn.vn. Khi bạn soạn thảo bức thư rồi ấn nút gửi, quá trình xảy ra như sau:
  2. Outlook Express kết nối với SMTP server trên mail.vnn.vn qua cổng 25.
  3. Outlook Express trao đổi với SMTP server và chuyển giao cho nó địa chỉ của người gửi, địa chỉ của người nhận cũng như nội dung của bức thư.
  4. SMTP server lấy địa chỉ đến [email protected] và cắt nó thành hai bộ phận
    • Tên người nhận (tranmai)
    • Tên miền (fpt.vn)
      Nếu địa chỉ đến là địa chỉ ở cùng miền vnn.vn, SMTP server sẽ dễ dàng chuyển bức thư đó đến POP3 server trên cùng miền đó (sử dụng một ứng dụng nhỏ gọi là delivery agent). Khi địa chỉ đến ở miền khác, SMTP server phải trao đổi thông tin với miền khác.
  5. SMTP server sẽ giao tiếp với một máy chủ tên miền (DNS server). Nó hỏi “Bạn có thể cho tôi địa chỉ IP của SMTP server của miền fpt.vn không?” Máy chủ tên miền sẽ cho trả lời là một hoặc nhiều địa chỉ IP của SMTP server mà fpt.vn đang quản lí.
  6. SMTP server ở vnn.vn kết nối với SMTP server ở fpt.vn qua cổng 25 (bằng IP đã được cung cấp). Nó có sự trao đổi giống như email client của bạn trao đổi với SMTP server ở vnn.vn tức là chuyển bức thư (địa chỉ đi, địa chỉ đến, nội dung…) cho máy chủ fpt.vn. Máy chủ fpt.vn nhận ra rằng tên miền của tranmai là fpt.vn, nó sẽ chuyển tiếp cho POP3 server của chính nó và bức thư sẽ được chuyển vào hộp thư của tranmai.
Trong một vài trường hợp, SMTP server tại vnn.vn không thể kết nối với SMTP server tại fpt.vn, message sẽ được xếp vào một hàng đợi (queue). SMTP server trên hầu hết các máy chủ sử dụng một chương trình gọi là sendmail để gửi và hàng đợi này được gọi là sendmail queue. Sendmail sẽ cố gắng gửi lại những message trong queue của nó theo định kì. Ví dụ nó có thể định kì gửi lại sau mỗi 15 phút. Sau 4 giờ nó sẽ gửi lại cho bạn một thông điệp nói rằng có một vài lỗi nào đó xảy ra. Sau 5 ngày hầu hết các thiết lập sendmail sẽ ngừng gửi và gửi trả message của bạn lại cho bạn, báo rằng message không gửi được (các thiết lập có thể khác nhau tuỳ theo từng hệ thống).
Về mặt thực tế, sự trao đổi giữa một email client với một SMTP server rất đơn giản và dễ hiểu. Nó được gọi là “Yêu cầu cho ý kiến” (RFC – Requests For Comments), và đoạn trao đổi có dạng điển hình như sau:

helo test
250 mx1.mindspring.com Hello abc.sample.com
[220.57.69.37], pleased to meet you
mail from: [email protected]
250 2.1.0 [email protected]… Sender ok
rcpt to: [email protected]
250 2.1.5 jsmith… Recipient ok
data
354 Enter mail, end with "." on a line by itself
from: [email protected]
to:[email protected]
subject: testing
John, I am testing…
.
250 2.0.0 e1NMajH24604 Message accepted
for delivery
quit
221 2.0.0 mx1.mindspring.com closing connection
Connection closed by foreign host.

Email client hỏi (màu đỏ) và SMTP server trả lời (màu xanh). Email client giới thiệu bản thân nó, thông báo địa chỉ đi và đến (“from” và “to”), chuyển nội dung của message rồi thoát khỏi tiến trình. Trong thực tế, bạn có thể telnet vào một mail server qua cổng 25 và có một trong những đoạn hội thoại như trên – điều này cho hay tại sao có những thư điện tử giả mạo.

Bạn có thể thấy rằng SMTP server hiểu được những lệnh ký tự đơn giản như HELO, MAIL, RCPT và DATA. Những lệnh thường thấy như sau:

  • HELO – giới thiệu bản thân
  • EHLO – giới thiệu bản thân và yêu cầu “extended mode”
  • MAIL FROM: – định danh người gửi
  • RCPT TO: – định danh người nhận
  • DATA – định danh nội dunh (To:, From: và Subject: thường là 3 dòng đầu)
  • RSET – reset
  • QUIT – thoát khỏi tiến trình
  • HELP – Lệnh lấy hướng dẫn trợ giúp
  • VRFY – Xác nhận lại một địa chỉ
  • EXPN – Mở rộng một địa chỉ

POP3 Server

POP3 server xử lí một tập hợp các file văn bản – mỗi file ứng với mỗi tài khoản email. Khi một message được gửi đến, POP3 server chỉ đơn giản là thêm chính message đó vào phần cuối file của người nhận.
Khi bạn duyệt mail, email client sẽ kết nối vào POP3 server qua cổng 110. POP3 server yêu cầu bạn cung cấp một account name (định danh tài khoản email của bạn) và password. Sau khi bạn đăng nhập, POP3 server sẽ mở file văn bản của bạn và cho phép bạn truy xuất nó. Cũng giống như SMTP server, POP3 server cũng hiểu một tập hợp các lệnh kí tự đơn giản như sau:
  • USER – Nhập vào tài khoản định danh của bạn
  • PASS – Nhập vào mật mã (password) của bạn
  • QUIT – Thoát khỏi POP3 server
  • LIST – Liệt kê danh sách message của bạn với kích thước
  • RETR – Lấy ra message của bạn và chuyển cho nó một con số
  • DELE – Xóa một message chuyển cho nó một con số
  • TOP – Hiển thị lên trên cùng x dòng của một message, chuyển cho nó một con số và số dòng.
  • Email client của bạn sẽ kết nối vào POP3 server và đưa ra một tập hợp các lệnh để tải bản sao của message của bạn về máy tính cục bộ. Thông thường, email client sẽ xoá hết các message trên máy chủ trừ khi bạn bỏ tính năng đó.
Bạn có thể thấy rằng POP3 server đơn giản là phần giao diện giữa email client và file văn bản chứa những message của bạn. Và ở đây bạn lại thấy POP3 server thật quá đơn giản. Bạn có thể telnet vào nó qua cổng 110 và tự sử dụng các lệnh nếu bạn muốn.

Phần đính kèm (attachments)

Email client của bạn cho phép bạn thêm vào message bạn gửi những “phần đính kèm” đồng thời lưu những “phần đính kèm” trong những message mà bạn nhận được. Những “phần đính kèm” có thể là file văn bản, file âm thanh, bảng tính điện tử, hình ảnh… Thường thì phần đính kèm không phải là văn bản (nếu nó có dạng văn bản text, bạn đơn giản là gắn nó luôn vào nội dung của message). Khi email chỉ có thể chứa đoạn văn bản mà phần đính kèm không phải là đoạn văn bản thì sẽ nảy sinh vấn đề cần phải giải quyết.
Trong những thời kì đầu tiên, thường người ta giải quyết vấn đề này bằng cách thủ công – sử dụng một chương trình gọi là uuencode. Chương trình này xem file đính kèm là dạng file nhị phân (binary). Nó đọc mỗi lần 3 byte (24 bit) từ file đó và chuyển đổi thành 4 kí tự (mỗi kí tự được chuyển đổi từ 6 bit cộng với 32). Kết quả cho ra là một file chỉ chứa các kí tự văn bản. Tức là bạn dùng trình uuencode để mã hoá file đính kèm trở thành file văn bản rồi mới gắn file đính kèm đó vào message của bạn.

Đây là kết quả của một chương trình mã hoá điển hình

begin 644 reports
M9W)E<" B<&P_(B O=F%R+VQO9R]H=\’1P9"]W96(V-C1F-
BYA8V-E<W,N;&]GM(\’P@8W5T("UF(#(@+60@(C\\B(\’P@8W5T
("UF(#$@+60@(B8B(#X@<V5A<F-HM+61A=&$M)#$*?B]C;
W5N="UP86=E<R!\\(\’-O<G0@/B!S=&%T<RTD,0IC<
" @M?B]W96)S:71E+V-G:2UB:6XO<W5G9V5S="UD871A+V1A=
&$@<W5G9V5S="TDM,0IC<"! +W=E8G-I=&4O8V=I+6)I;B
]W:&5R92UD871A+V1A=&$@=VAE<F4MM)#$*8W @?B]W96)S:7
1E+V-G:2UB:6XO96UA:6QE<BUD871A+V1A=&$@96UAL:6PM)#
$*?B]G971L;V<@/B!L;V=S+20Q"GXO=&]T86P@/B!T;W1A;"T
D,0IA

End

Người nhận sau đó có thể lưu phần đính kèm (đã mã hoá thành dạng văn bản) của message ra một file và chạy chương trình giải mã (uudecode) để chuyển đổi ngược lại thành file nhị phân ban đầu. Từ “report” trên dòng đầu tiên chỉ cho chương trình giải mã đặt tên gì cho file kết quả.

Chương trình email client ngày nay hoạt động chính xác như vậy nhưng nó xử lí mã hoá và giải mã một cách tự động cho bạn. Nếu bạn xem xét một file email nguyên bản chứa phần đính kèm, bạn sẽ thấy phần đính kèm y như đoạn kí tự đã được mã hoá ở trên.

Ngày nay, trong sự phát triển mạnh mẽ của tin học cũng như sự giao tiếp của xã hội con người, email – thư điện tử là một trong những hệ thống đơn giản nhất còn lại từ những ngày mới ra đời. Có một số bộ phận của hệ thống như quy tắc dẫn đường (routing rules) trong sendmail đã trở nên phức tạp nhưng về cơ bản, một hệ thống email lạ thay vẫn đơn giản như trước đây.

Và bây giờ khi bạn gửi email, bạn biết chính xác nó sẽ đi đến với người nhận như thế nào.

Hằng ngày, có hàng tỉ “bức thư điện tử” được gửi qua Internet. Nếu bạn làm việc ở trên mạng Internet nhiều, có thể bạn sẽ gửi và nhận hàng tá email hoặc hơn nữa mà bạn không nhớ. Thực tế email đã trở thành một công cụ liên lạc vô cùng hữu hiệu trong cuộc sống hiện đại của chúng ta.

Email hoạt động như thế nào?’]