``` **DMARC (Domain-based Message Authentication):** Policy: what to do if SPF/DKIM fail (reject, quarantine, report) ``` _dmarc.example.com TXT v=DMARC1; p=reject; rua=mailto:admin@example.com ``` --- Each hop must succeed or the email fails at that point, often with no notification to the sender beyond a bounce message.">

← RFC Reference

Vòng Đời của Email

Email Concepts Encyclopedia Published March 2026
ELI5: Gửi email giống như gửi một b封thư vật lý qua một chuỗi bưu điện. Bạn viết nó (MUA), giao cho bưu điện địa phương của mình (MSA), họ định tuyến nó qua hệ thống thư (MTA đến MTA), nó đến bưu điện của người nhận (MX), được sắp xếp vào hộp thư của họ (MDA), và họ nhận nó khi kiểm tra thư của mình (IMAP/POP3). Ở mỗi điểm dừng, ai đó kiểm tra phong bì, xác minh tem, và quyết định có chuyển tiếp nó hay gắn cờ nó.

Từ lúc bạn nhấp "Gửi" đến lúc một tin nhắn xuất hiện trong hộp thư của ai đó — mỗi bước, mỗi giao thức, mỗi quyết định trên đường đi.

Những Người Tham Gia

Kiến trúc thư Internet (RFC 5598) xác định các vai trò tham gia vào việc gửi email. Hiểu những vai trò này là điều cần thiết vì cùng một phần mềm thường đảm nhận nhiều vai trò, và ranh giới giữa chúng rất quan trọng để hiểu cách thức email được truyền tải.

Vai trò Tên gọi Chức năng
MUA Mail User Agent Ứng dụng bạn dùng để soạn và đọc email. Outlook, Thunderbird, giao diện web của Gmail, Apple Mail, ứng dụng email trên điện thoại của bạn.
MSA Mail Submission Agent Máy chủ chấp nhận email đi từ MUA của bạn. Lắng nghe trên cổng 587 (STARTTLS) hoặc 465 (TLS ngầm). Yêu cầu xác thực.
MTA Mail Transfer Agent Máy chủ định tuyến email giữa các tổ chức. Sử dụng SMTP trên cổng 25. Xử lý xếp hàng, thử lại và quyết định relay.
MX Mail Exchanger MTA nhận, được xác định bởi các bản ghi MX DNS. Chấp nhận thư đến cho một miền.
MDA Mail Delivery Agent Gửi tin nhắn vào hộp thư của người nhận. Áp dụng bộ lọc, quy tắc sắp xếp và phân loại spam.
MRA Mail Retrieval Agent Cung cấp hộp thư cho MUA thông qua IMAP hoặc POP3.

Trong thực tế, những vai trò này thường được gộp lại. Cơ sở hạ tầng của Gmail đồng thời là MSA, MTA, MX, MDA và MRA. Postfix có thể hoạt động như cả MSA và MTA. Nhưng những vai trò logic vẫn khác biệt, và hiểu chúng giúp bạn gỡ rối các vấn đề về gửi email.

Giai đoạn 1: Soạn thảo (MUA)

Vòng đời bắt đầu khi người dùng soạn một tin nhắn trong ứng dụng email của họ, hoặc khi một ứng dụng tạo một tin nhắn theo cách lập trình (thông qua API hoặc thư viện SMTP).

MUA xây dựng tin nhắn theo RFC 5322 (Định dạng tin nhắn Internet):

From: Alice <alice@example.com>
To: Bob <bob@example.net>
Subject: Project update
Date: Tue, 11 Mar 2026 09:15:00 -0400
Message-ID: <a1b2c3@example.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="boundary42"

--boundary42
Content-Type: text/plain; charset=utf-8

Hi Bob, here is the latest on the project...
--boundary42
Content-Type: text/html; charset=utf-8

<p>Hi Bob, here is the latest on the project...</p>
--boundary42--

Những quyết định chính ở giai đoạn này:

Giai đoạn 2: Gửi (MUA → MSA)

MUA kết nối với MSA (RFC 6409) để gửi tin nhắn. Đây là bước gửi.

# MUA kết nối với MSA trên cổng 587
220 smtp.example.com ESMTP ready
EHLO alices-laptop.local
250-smtp.example.com
250-STARTTLS
250-AUTH PLAIN LOGIN
250 SIZE 52428800
STARTTLS
220 Ready to start TLS
# Hoàn tất bắt tay TLS
EHLO alices-laptop.local
250-smtp.example.com
250-AUTH PLAIN LOGIN
250 SIZE 52428800
AUTH PLAIN AGFsaWNlAHMzY3IzdA==
235 Authentication successful
MAIL FROM:<alice@example.com>
250 OK
RCPT TO:<bob@example.net>
250 OK
DATA
354 Start mail input
[message content]
.
250 OK: queued as ABC123

Những gì MSA thực hiện khi nhận tin nhắn:

Đường dẫn gửi API

Khi sử dụng dịch vụ email giao dịch như Mailer To Go, ứng dụng của bạn thường gửi qua API HTTP thay vì SMTP. Máy chủ API chấp nhận tin nhắn, xây dựng phong bì SMTP và tiêu đề, áp dụng ký DKIM và đưa tin nhắn vào hàng đợi MTA. Lệnh gọi API thay thế cả MUA và giao dịch SMTP từ MUA đến MSA, nhưng mọi thứ phía sau vẫn giống nhau.

Giai đoạn 3: Định tuyến và Truyền (MTA → MTA)

MTA gửi bây giờ phải gửi tin nhắn đến miền của người nhận. Đây là giai đoạn relay, được điều chỉnh bởi RFC 5321 (SMTP).

Phân giải DNS

MTA tra cứu các bản ghi MX cho miền của người nhận:

$ dig +short MX example.net
10 mx1.example.net.
20 mx2.example.net.

Nó cố gắng MX có ưu tiên thấp nhất trước tiên. Nếu máy chủ đó không thể tiếp cận, nó sẽ quay lại máy chủ tiếp theo. Xem DNS và định tuyến email để biết thuật toán đầy đủ, bao gồm quay lại các bản ghi A/AAAA và xử lý Null MX.

Việc truyền

# MTA gửi kết nối đến mx1.example.net:25
220 mx1.example.net ESMTP
EHLO sender.mailertogo.com
250-mx1.example.net
250-STARTTLS
250-SIZE 26214400
250 ENHANCEDSTATUSCODES
STARTTLS
220 Ready to start TLS
# Bắt tay TLS — kết nối hiện được mã hóa
EHLO sender.mailertogo.com
250-mx1.example.net
250 ENHANCEDSTATUSCODES
MAIL FROM:<alice@example.com>
250 OK
RCPT TO:<bob@example.net>
250 OK
DATA
354 End data with <CR><LF>.<CR><LF>
[message with additional Received: header]
.
250 OK: queued as DEF456

Ở giai đoạn này:

Xếp hàng và thử lại

Nếu MX nhận trả về lỗi tạm thời 4xx (máy chủ bận, greylisting, giới hạn tốc độ), MTA gửi xếp hàng tin nhắn và thử lại sau. Lịch trình thử lại thường sử dụng backoff theo cấp số nhân: 15 phút, 30 phút, 1 giờ, 2 giờ, v.v. Nếu tin nhắn không thể được gửi sau khoảng thời gian thử lại (thường là 4–5 ngày), MTA tạo ra một thông báo phản hồi (DSN) và gửi lại cho người gửi phong bì.

Giai đoạn 4: Tiếp nhận (MX)

MX nhận (MTA chấp nhận thư đến cho miền của người nhận) là nơi xảy ra hầu hết các bộ lọc. Đây là người canh cổng.

Tại thời điểm kết nối, trước khi bất kỳ nội dung tin nhắn nào đến:

Trong giai đoạn phong bì:

Sau DATA (tin nhắn đầy đủ được nhận):

Giai đoạn 5: Gửi (MDA)

Mail Delivery Agent lấy tin nhắn đã vượt qua bộ lọc và gửi nó vào hộp thư của người nhận. Trong nhiều hệ thống, MDA được tích hợp vào máy chủ MX thay vì là một quy trình riêng biệt.

Những trách nhiệm của MDA:

Tại điểm này, tin nhắn ở trạng thái yên tĩnh trong kho thư của người nhận. Giao dịch SMTP đã hoàn tất. Trách nhiệm của MTA gửi kết thúc khi nó nhận được 250 OK từ MX nhận.

Giai đoạn 6: Lấy (MRA → MUA)

Ứng dụng email của người nhận lấy tin nhắn từ kho thư bằng một trong ba giao thức:

IMAP (RFC 9051)

Giao thức truy cập thư chiếm ưu thế. IMAP giữ các tin nhắn trên máy chủ và đồng bộ hóa trạng thái (đã đọc/chưa đọc, cờ, thư mục) trên nhiều ứng dụng khách. Ứng dụng khách tải xuống tiêu đề tin nhắn trước tiên và tìm nạp toàn bộ nội dung khi cần. Những thay đổi được thực hiện trên một ứng dụng khách (đánh dấu là đã đọc, di chuyển đến thư mục) sẽ được phản ánh trên tất cả các ứng dụng khách.

POP3 (RFC 1939)

Giao thức cũ hơn, đơn giản hơn. POP3 tải xuống các tin nhắn đến ứng dụng khách và (theo mặc định) xóa chúng khỏi máy chủ. Nó không đồng bộ hóa trạng thái giữa các ứng dụng khách. Phần lớn đã được IMAP thay thế, nhưng vẫn được sử dụng trong một số tình huống.

Truy cập web và API

Giao diện webmail (Gmail, Outlook.com) và ứng dụng di động truy cập kho thư thông qua API độc quyền hoặc JMAP (RFC 8620), bỏ qua IMAP/POP3 hoàn toàn. Tin nhắn không bao giờ rời khỏi máy chủ của nhà cung cấp — ứng dụng khách hiển thị nó thông qua yêu cầu web.

Nơi Xảy Ra Sự Cố: Các Chế Độ Lỗi Ở Mỗi Giai Đoạn

Lỗi gửi

Xác thực thất bại (mật khẩu sai, token hết hạn), MSA từ chối tin nhắn (vượt quá giới hạn kích thước, vi phạm chính sách) hoặc kết nối hết thời gian chờ. Người dùng sẽ thấy một lỗi ngay lập tức.

Lỗi định tuyến

Phân giải DNS thất bại (không có bản ghi MX, timeout DNS), tất cả các máy chủ MX không thể tiếp cận hoặc mỗi MX trả về lỗi vĩnh viễn. Sau khi thử lại hết hạn, người gửi nhận được một phản hồi (DSN).

Từ chối tại thời điểm tiếp nhận

MX nhận từ chối tin nhắn tại thời điểm SMTP: IP bị chặn (550), xác thực thất bại (550 5.7.1), người nhận không xác định (550 5.1.1), hoặc từ chối nội dung (554). MTA gửi tạo thông báo phản hồi cho người gửi phong bì.

Lọc sau khi chấp nhận

MX chấp nhận tin nhắn (250 OK) nhưng MDA định tuyến nó đến thư mục spam dựa trên phân tích nội dung và điểm danh tiếng. Người gửi không nhận được phản hồi — tin nhắn về mặt kỹ thuật đã "được gửi" — nhưng người nhận không bao giờ nhìn thấy nó. Đây là vấn đề về khả năng gửi phổ biến nhất và khó chẩn đoán nhất.

Hộp thư đầy

Hộp thư của người nhận vượt quá hạn ngạch. Tùy thuộc vào việc thực hiện, đây là một từ chối tại thời điểm RCPT TO hoặc một phản hồi được tạo sau khi chấp nhận DATA.

Tiêu Đề Kể Câu Chuyện

Mỗi giai đoạn của vòng đời thêm tiêu đề vào tin nhắn. Đọc tiêu đề từ dưới lên trên để tái cấu trúc hành trình:

# Được thêm bởi MX nhận (bước cuối cùng, đầu tiêu đề)
Received: from sender.mailertogo.com (198.51.100.42)
by mx1.example.net with ESMTPS id DEF456
for <bob@example.net>;
Tue, 11 Mar 2026 13:15:02 +0000
Authentication-Results: mx1.example.net;
spf=pass smtp.mailfrom=example.com;
dkim=pass header.d=example.com;
dmarc=pass header.from=example.com

# Được thêm bởi MTA/MSA gửi (bước đầu tiên, cuối tiêu đề)
Received: from alices-laptop.local (192.0.2.10)
by smtp.example.com with ESMTPSA id ABC123
for <bob@example.net>;
Tue, 11 Mar 2026 13:15:00 +0000
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mtg; ...

Các tiêu đề Received: là những mẫu vết. Mỗi tiêu đề ghi lại máy chủ gửi, máy chủ nhận, giao thức được sử dụng (ESMTP, ESMTPS cho TLS, ESMTPSA cho xác thực+TLS), ID hàng đợi và dấu thời gian. Xem Anatomy of Email Headers để biết hướng dẫn đầy đủ.

Đường Dẫn Email Giao Dịch

Khi một ứng dụng gửi email thông qua dịch vụ như Mailer To Go, vòng đời sẽ hơi khác:

  1. Ứng dụng gọi API. Ứng dụng của bạn gửi yêu cầu POST với nội dung tin nhắn, người nhận và siêu dữ liệu.
  2. Dịch vụ xây dựng tin nhắn. Nó xây dựng cấu trúc MIME, thêm các tiêu đề bắt buộc (Ngày, Message-ID, List-Unsubscribe nếu áp dụng) và áp dụng ký DKIM bằng khóa của miền của bạn.
  3. MTA của dịch vụ gửi tin nhắn. Tin nhắn được gửi từ IP của dịch vụ đến MX của người nhận thông qua SMTP trên cổng 25, với STARTTLS.
  4. Phần còn lại giống hệt nhau. Tiếp nhận MX, kiểm tra xác thực, lọc nội dung, gửi MDA và lấy ứng dụng khách đều diễn ra như được mô tả ở trên.

Sự khác biệt chính: ứng dụng của bạn không bao giờ nói chuyện SMTP trực tiếp. API loại bỏ toàn bộ lớp gửi. Nhưng tin nhắn vẫn đi qua cùng một cơ sở hạ tầng, trải qua các kiểm tra xác thực tương tự và được đánh giá bởi các bộ lọc spam tương tự.

Những Điểm Chính

Tìm Hiểu Thêm

Related RFCs