1. Email là gì?

Email (Electronic mail - thư điện tử) là việc trao đổi các thông điệp (tin nhắn, tệp dữ liệu, hình ảnh, …) từ một người đến 1 hoặc nhiều người nhận thông qua internet. Việc gửi và nhận email là rất nhanh chóng, chi phí rẻ, và dễ tiếp cận cho mục đích kinh doanh hoặc cá nhân. Người dùng có thể gửi và nhận email ở bất kỳ nơi nào, miễn là có kết nối internet.
Hiện tại trên thế giới, mỗi ngày có khoảng 333.2 tỷ emails được gửi và nhận mỗi ngày

1taudZn2lJRPavpRJb0gTZhDUUBfwCNqo

2. Cấu trúc của 1 email

Địa chỉ email có dạng local-part@domain gồm 2 phần:

  • Phần cục bộ: Độ dài tối đa của phần cục bộ là 64 octets
    • Nếu unquoted (ko trích dẫn), nó có thể bao gồm các ký tự ASCII:
      • Các ký tự Latin thường hoặc hoa: A-Z, a-z
      • Số từ 0-9
      • Ký tự đặc biệt: !#$%&'*+-/=?^_`{|}~
      • Dấu ., nhưng ko được phép đứng đầu, cuối hoặc liên tiếp (exam..ple@vietnamlab.vn là ko đc phép)
    • Nếu quoted (trích dẫn), nó có thể bao gồm dấu cách (Space), Tab: “exam..ple@vietnamlab.vn” là được phép
    • Email wildcard: email dạng example+1@domain, example+abc@domain sẽ được gửi vào hộp thư example@domain
  • Domain: Tuân thủ theo quy tắc của hostname, bao gồm danh sách các labels được phân cách bởi dấu chấm, mỗi label được giới hạn độ dài 63 ký tự và bao gồm:
    • Các ký tự Latin thường hoặc hoa: A-Z, a-z
    • Số từ 0-9, nhưng không được tất cả ký tự là số
    • Ký tự gạch nối - , nhưng ko được nằm ở đầu, hoặc cuối domain

1nQ03BCu9nuTPB-Bt-bPj7z-s77XkX8PR

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

Chức năng của email server có thể chia làm 2 quá trình:

  • Gửi Email: Sử dụng giao thức SMTP (Simple Mail Transfer Protocol)
  • Nhận Email: Sử dụng POP (Post Office Protocol) hoặc IMAP (Internet Message Access Protocol)

1onnAriDLn5M0fZvT89bds3rhYQAK8GeM

Một số thuật ngữ được sử dụng liên quan tới email server:

  • Mail User Agent (MUA): Là 1 thành phần tương tác trực tiếp với người dùng cuối. Ví dụ: Thunderbird, MS Outlook. Các webmail như Gmail, Yahoo mail cũng là MUA
  • Mail Transfer Agent (MTA): là service trên server (Linux) chịu trách nhiệm chuyển từ sending mail server đến recipient mail server. Ví dụ như sendmail và postfix
  • Mail Delivery Agent (MDA): Là service để chuyển thư vào mailbox của người dùng
  • POP/IMAP: Là giao thức để fetch emails từ recipient server's mailbox đến recipient MUA
  • Mail Exchanger Record (MX): Là bản ghi DNS để mapping domain mail với IP

Khi người gửi nhấn vào nút gửi, SMTP (MTA) đảm bảo việc chuyển thông tin từ đầu đến cuối của một email từ máy chủ phía người gửi đến máy chủ đích. Khi đến máy chủ đích, MTA local đến máy chủ đích chấp nhận email và giao nó cho MDA local. MDA sau đó chuyển email vào hộp thư đến của người nhận. Khi người nhận kiểm tra email, chúng được lấy bằng MUA sử dụng các giao thức như POP hoặc IMAP.

1kmyLlvFDD5lawp1FAxfs_Xk6ytD_Bp3T

4. Các giao thức cho việc gửi/nhận email

4.1 Giao thức cho việc gửi email

SMTP (Simple Mail Transfer Protocol) là một giao thức mạng được sử dụng để truyền tải email giữa các máy chủ email. SMTP được sử dụng bởi các máy chủ email để gửi email từ người gửi đến người nhận thông qua mạng Internet.

SMTP được thiết kế để hoạt động với các giao thức email khác, chẳng hạn như POP3 (Post Office Protocol 3) hoặc IMAP (Internet Message Access Protocol), để cung cấp cho người dùng khả năng truy cập và quản lý email từ các thiết bị khác nhau.

SMTP hoạt động bằng cách sử dụng một số lệnh để gửi và nhận email. Ví dụ, lệnh "HELO" được sử dụng để bắt đầu phiên giao dịch với máy chủ email đích, trong khi lệnh "MAIL FROM" được sử dụng để chỉ định địa chỉ email của người gửi và lệnh "RCPT TO" được sử dụng để chỉ định địa chỉ email của người nhận. Cuối cùng, lệnh "DATA" được sử dụng để gửi nội dung email.

1ZIyx24i-o2RySm9-neBaeWMBjcwsDizw

4.1 Giao thức cho việc nhận email

Các giao thức nhận email phổ biến là POP3 (Post Office Protocol 3) và IMAP (Internet Message Access Protocol).

  • POP3 (Post Office Protocol 3): POP3 là một giao thức đơn giản được sử dụng để lấy email từ máy chủ email và lưu trữ chúng trên thiết bị của người dùng. Các email được tải xuống từ máy chủ email và lưu trữ trên thiết bị của người dùng. Sau khi email đã được tải xuống, chúng sẽ bị xóa khỏi máy chủ email.
  • IMAP (Internet Message Access Protocol): IMAP là một giao thức phức tạp hơn, cho phép người dùng truy cập email trực tiếp trên máy chủ email thay vì tải xuống chúng và lưu trữ trên thiết bị của mình. Người dùng có thể xem email từ nhiều thiết bị và thay đổi chúng mà không cần tải xuống lại. IMAP cũng hỗ trợ quản lý thư mục và lọc thư rác.

Cả hai giao thức này đều được sử dụng rộng rãi và có những ưu điểm riêng. POP3 đơn giản hơn và tiết kiệm dung lượng đĩa, nhưng nó không cho phép quản lý email trên nhiều thiết bị và không hỗ trợ truy cập email trực tiếp trên máy chủ. IMAP có tính năng nâng cao và cho phép người dùng quản lý email từ nhiều thiết bị, nhưng có thể tốn nhiều dung lượng đĩa hơn do lưu trữ trên máy chủ.

5. Luồng hoạt động của việc gửi email

5.1 Luồng hoạt động của việc gửi email trực tiếp

Việc gửi email trực tiếp ở đây có nghĩa email sẽ gửi trực tiếp từ userA@exampleA.tst đến userB@exampleB.tst mà không sử dụng dịch vụ của bên thứ 3

1Oho4WWOwXWXTKKLAq7SLh-0mqY95eL-W

Quá trình gửi email từ userA@exampleA.tst đến email userB@exampleB.tst được diễn ra như sau:

  • MUA phía gửi khởi tạo kết nối tới mail server exampleA.tst sử dụng giao thức SMTP ( với port thông thường là 25 )
  • Mail server mail.exampleA.tst nhận được email, từ dữ liệu nhận được, thì nó biết được là cần domain của phía nhận mail là exampleB.tst . Mail server này sẽ tạo 1 truy vấn đề hệ thống local DNS server để yêu cầu thông tin về MX record của exampleB.tst.
  • Giả sử rằng không có thông tin MX record của exampleB.tst ở cache của local DNS server. Vì vậy, local DNS server sẽ tạo truy vấn đến DNS server, và sẽ nhận được thông tin chi tiết (như địa chỉ IP) về MX record của exampleB.tst, thông tin này sẽ được phản hồi cho mail server mail.exampleA.tst
  • Sau khi biết địa chỉ IP của mail server nhận, thì nó sẽ gửi email tới server mail.exampleB.tst sử dụng giao thức SMTP
  • Email đến được nhận bởi MTA mail.exampleB.tst, sau khi nhận được email, nó sẽ được chuyển cho MDA, sau đó MDA sẽ ghi mail vào hộp thư của người nhận được lưu trữ ở server. Server sẽ có mailbox riêng cho từng người dùng

Quá trình nhận email được gửi từ userA@exampleA.tst đến userB@exampleB.tst được diễn ra như sau:

  • Sau khi email được gửi tới mailbox ở server mail mail.exampleB.tst, MUA phía người nhận sẽ lấy thông tin email thông qua giao thức POP3 (Post Office Protocol) hoặc IMAP (Internet Message Access Protocol), và người nhận sẽ có thể đọc được email

5.2 Luồng hoạt động của việc gửi email sử dụng dịch vụ mail của bên thứ 3

Hầu hết các nhà cung cấp dịch vụ Internet (ISP) đều duy trì các Máy chuyển thư (Mail Exchangers - MX) riêng cho khách hàng của mình. Các máy chủ MX này cũng được gọi là Smarthosts hoặc Relay Servers. Smarthosts thường được trang bị các công cụ quét virus tiên tiến, hệ thống phát hiện và chặn thư rác mạnh mẽ. Những máy chủ này cũng được thiết kế để đảm bảo thời gian hoạt động tối đa và hiệu suất tốt nhất cho dịch vụ gửi Email.

Việc sử dụng MX của nhà cung cấp dịch vụ là tùy chọn, nhưng nó có thể cung cấp một số lợi ích bổ sung, chẳng hạn như:

  • Các chương trình quét thư cung cấp bảo mật chống lại cả thư độc hại và các tệp đính kèm email độc hại cả khi gửi và nhận thư.
  • ISP MX là điểm kết nối cuối cùng trước máy chủ thư của khách hàng. Ngay cả khi máy chủ email của khách hàng gặp sự cố, email đến sẽ được lưu trong hàng đợi SMTP của ISP MX cho đến khi hết thời gian chờ đợi của hàng đợi. Máy chủ MX sẽ tiếp tục cố gắng gửi email đến khách hàng. Email có thể được gửi khi máy chủ email của khách hàng trở lại trực tuyến. Tính năng này có thể giảm đáng kể tỷ lệ email không được giao, tức là email bị trả lại.

1fFSlMIt4iTVhVi6gOUdNTiKnuKNY-EiI

  1. Một email được gửi từ MUA của userA@exampleA.tst đến máy chủ email mail.exampleA.tst bằng cách sử dụng SMTP. Máy chủ email mail.exampleA.tst được cấu hình để gửi tất cả email đi ra đến mx.ispA.com, thay vì gửi email trực tiếp đến một địa chỉ đích trên Internet. Việc kiểm tra virus/email rác được thực hiện ngay khi MX của ISP A nhận được email.
  2. Giả sử rằng máy chủ mx.ispA.com không có bất kỳ thông tin DNS nào về exampleB.tst, một truy vấn được gửi đến một máy chủ DNS cục bộ (DNS local) để hỏi về bản ghi MX.
  3. Máy chủ DNS cục bộ thu thập thông tin cần thiết và tìm hiểu cả hai bản ghi MX 10MX 20. Vì MX 10 là bản ghi MX thấp nhất, nó sẽ được sử dụng làm máy chủ email chính (bản ghi MX thấp nhất được ưu tiên cao nhất.). MX 20 sẽ chỉ được sử dụng khi MX 10 gặp sự cố, tức là ISP B Smarthost không thể truy cập được vì một số lý do nào đó. Máy chủ DNS trả lời truy vấn của máy chủ MX với thông tin cần thiết.
  4. Khi máy chủ mx.ispA.tst có đầy đủ thông tin cần thiết, nó gửi email trực tiếp đến mx.ispB.com trên Internet. Email được quét khi đến nơi. Khi ISP B Smarthost nhận ra rằng nó không phải là đích cuối cùng, nó chuyển tiếp email đến máy chủ thư của khách hàng, dựa trên quyết định chuyển tiếp được cấu hình bởi quản trị viên của máy chủ.
  5. SMTP cục bộ trong mail.exampleB.tst nhận thư đến và chuyển nó cho MDA cục bộ. MDA sau đó chuyển thư đến hộp thư của người nhận.
  6. Cuối cùng, người nhận có thể kiểm tra email bằng POP3 hoặc IMAP.

6. Một số lỗi trong quá trình gửi email

Quá trình gửi email không phải lúc nào cũng diễn ra suôn sẻ như trong ví dụ về các email server ở trên. Email bị trả lại, bị chặn hoặc các sự cố khác có thể ngăn không cho gửi email.Trong trường hợp này, recipient mail server có thể thông báo về các sự cố bằng cách sử dụng mã lỗi SMTP :

  • 4.X.X Persistent Transient Failure: Lỗi tạm thời với mail server, retry thì sẽ gửi lại được. Các trường hợp này gọi là “short bounce”, các mã này thường được các máy chủ sử dụng để ngăn chặn những người gửi không đáng tin cậy.
  • 5.X.X Permanent Error: Thường do kết nối SMTP đã bị ngắt. Cho dù cố gắng gửi lại email, nó vẫn có thể dẫn đến lỗi tương tự.

Nếu những vấn đề này thường xuyên xảy ra với mail server, thì mail domain rất dễ bị đánh giá là không tin cậy, dẫn đến việc email bị vào spam, hoặc là không thể gửi được email. Để hạn chế vấn đề này, thì có thể sử dụng dịch vụ mail của bên thứ 3 để gửi, như vậy thì email sẽ ít khi bị vào spam.

Các bạn có thể tham khảo một số dịch vụ mail của bên thứ 3: Comparison sheet: The best SMTP and Email API services

1PM9fspmonkAtFR-xqUdWfsFlc4sYs83I

8. Tài liệu tham khảo