← RFC Reference

Hiểu về Email Bounces

Email Concepts Encyclopedia Published March 2026
ELI5: Một bounce giống như dấu "trả lại cho người gửi" trên một lá thư vật lý. Một **hard bounce** có nghĩa là địa chỉ không tồn tại — nó là vĩnh viễn. Một **soft bounce** có nghĩa là hộp thư đầy hoặc máy chủ bận — nó là tạm thời. Bưu điện gửi lại một mẫu (DSN) giải thích chính xác điều gì đã xảy ra, với mã như "5.1.1" có nghĩa là "không có hộp thư nào như vậy." Công việc của bạn là đọc các mã này, dừng gửi đến các địa chỉ chết, và thử lại những mã tạm thời.

Hard bounces, soft bounces, DSN format, enhanced status codes — và cách xử lý chúng theo chương trình mà không làm hư hại danh tiếng người gửi của bạn.

Hai Cách Bounces Xảy Ra

Gửi email có thể thất bại tại hai điểm riêng biệt, và cơ chế khác nhau cho mỗi điểm:

Từ chối đồng bộ (trong phiên SMTP)

Máy chủ nhận từ chối tin nhắn trong thời gian thực, trong cuộc trò chuyện SMTP. Bạn nhận được lỗi ngay lập tức dưới dạng mã phản hồi SMTP:

RCPT TO:<nonexistent@example.com>
550 5.1.1 Tài khoản email mà bạn cố gắng tiếp cận không tồn tại.

Đây là loại bounce sạch nhất. Máy chủ gửi của bạn biết ngay lập tức rằng gửi không thành công và có thể hành động dựa trên đó.

Bounce không đồng bộ (DSN sau khi chấp nhận)

Máy chủ nhận chấp nhận tin nhắn (250 OK tại DATA), nhưng sau đó phát hiện nó không thể gửi — hộp thư vượt quá hạn, lọc nội dung từ chối, hoặc một relay nội bộ không thành công. Máy chủ tạo ra Thông báo Trạng thái Gửi (DSN) và gửi lại địa chỉ người gửi envelope (địa chỉ MAIL FROM).

Đây là lý do tại sao địa chỉ MAIL FROM quan trọng. Đây là địa chỉ nhận thông báo bounce. Đối với email giao dịch, đây thường là một địa chỉ xử lý bounce chuyên dụng như bounces+tag@yourdomain.com.

Hard Bounces và Soft Bounces

Hard Bounce Soft Bounce
Mã SMTP 5xx (vĩnh viễn) 4xx (tạm thời)
Ý nghĩa Gửi sẽ không bao giờ thành công Gửi có thể thành công sau này
Ví dụ Người dùng không xác định, miền không tồn tại, địa chỉ bị từ chối bởi chính sách Hộp thư đầy, máy chủ bận, greylisting, giới hạn tốc độ
Hành động Xóa khỏi danh sách ngay lập tức Thử lại với backoff; loại bỏ sau các lần thất bại lặp lại

Sự phân biệt này rất quan trọng. Tiếp tục gửi tới các địa chỉ hard-bounce làm hư hại danh tiếng người gửi của bạn. Các nhà cung cấp hộp thư theo dõi tỷ lệ bounce của bạn — nếu nó vượt quá khoảng 2%, khả năng gửi của bạn sẽ bị ảnh hưởng trên toàn bộ.

Enhanced Status Codes

Các máy chủ SMTP hiện đại sử dụng mã trạng thái nâng cao (RFC 3463, sổ đăng ký trong RFC 5248) cung cấp nhiều chi tiết hơn mã ba chữ số cơ bản. Định dạng là class.subject.detail:

Các danh mục subject

Subject Danh mục Mô tả
X.0.X Khác/không xác định Catch-all cho trạng thái chưa được phân loại
X.1.X Địa chỉ Vấn đề với hộp thư hoặc địa chỉ
X.2.X Hộp thư Trạng thái hộp thư (đầy, bị vô hiệu hóa, v.v.)
X.3.X Hệ thống thư Vấn đề hệ thống thư đích
X.4.X Mạng/định tuyến Lỗi mạng hoặc định tuyến
X.5.X Giao thức gửi thư Vấn đề giao thức SMTP
X.6.X Nội dung tin nhắn Vấn đề nội dung hoặc media
X.7.X Bảo mật/chính sách Vi phạm bảo mật hoặc chính sách

Các mã trạng thái bạn sẽ thấy nhiều nhất

Ý nghĩa Hành động
5.1.0 Trạng thái địa chỉ khác Hard bounce — xóa
5.1.1 Địa chỉ hộp thư đích tồi Hard bounce — hộp thư không tồn tại. Xóa ngay lập tức.
5.1.2 Địa chỉ hệ thống đích tồi Hard bounce — miền đó không hợp lệ
5.1.3 Cú pháp địa chỉ hộp thư đích tồi Hard bounce — địa chỉ được định dạng sai
4.2.1 / 5.2.1 Hộp thư bị vô hiệu hóa Tài khoản được tạm ngừng hoặc vô hiệu hóa
4.2.2 / 5.2.2 Hộp thư đầy Vượt quá hạn. Tạm thời nếu 4xx, vĩnh viễn nếu 5xx.
5.2.3 Tin nhắn quá lớn Giảm kích thước tin nhắn hoặc tệp đính kèm
4.4.1 Kết nối hết thời gian Thử lại sau
4.4.2 Kết nối bị cắt Thử lại sau
5.7.1 Gửi không được phép Từ chối chính sách — tin nhắn hoặc người gửi bị chặn
5.7.26 Lỗi DMARC Sửa các bản ghi xác thực của bạn (SPF, DKIM, DMARC)
4.7.1 Greylisting / giới hạn tốc độ Thử lại sau khoảng thời gian

Định dạng DSN: Bounce Message Trông Như Thế Nào

Khi một bounce được tạo không đồng bộ, nó đến dưới dạng một tin nhắn có cấu trúc được xác định bởi RFC 3464, được gói trong loại MIME RFC 3462's multipart/report. Một DSN có ba phần:

Content-Type: multipart/report; report-type=delivery-status;
boundary="boundary42"

--boundary42
Content-Type: text/plain

Tin nhắn của bạn tới bob@example.com không thể được gửi.
Hộp thư của người nhận không tồn tại.

--boundary42
Content-Type: message/delivery-status

Reporting-MTA: dns; mx1.example.com
Arrival-Date: Tue, 11 Mar 2026 14:00:00 +0000

Final-Recipient: rfc822; bob@example.com
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 User unknown
Last-Attempt-Date: Tue, 11 Mar 2026 14:00:05 +0000

--boundary42
Content-Type: message/rfc822

[Tiêu đề tin nhắn gốc được bao gồm tại đây]

--boundary42--

Ba phần MIME:

  1. text/plain — Giải thích có thể đọc được bởi con người
  2. message/delivery-status — Dữ liệu có cấu trúc có thể đọc được bởi máy với mã trạng thái, người nhận và thông tin chẩn đoán
  3. message/rfc822 — Tiêu đề tin nhắn gốc (hoặc tin nhắn đầy đủ), để bạn có thể xác định tin nhắn nào bị bounce

Các trường chính cho xử lý theo chương trình:

Xử lý Bounces Theo Chương Trình

Sử dụng VERP để nhận dạng đáng tin cậy

VERP (Variable Envelope Return Path) mã hóa địa chỉ người nhận vào MAIL FROM, vì vậy khi một bounce trở lại, bạn có thể xác định chính xác người nhận nào bị bounce mà không cần phân tích nội dung DSN:

MAIL FROM:<bounces+bob=example.com@yourdomain.com>

Khi bob@example.com bị bounce, DSN được gửi tới bounces+bob=example.com@yourdomain.com. Bạn phân tích phần cục bộ để trích xuất người nhận ban đầu. Điều này hoạt động ngay cả khi DSN bị định dạng sai hoặc không chuẩn.

Xử lý logic

Một bộ xử lý bounce đáng tin cậy tuân theo logic này:

  1. Phân tích DSN — Trích xuất phần message/delivery-status. Đọc trường Status:.
  2. Phân loại bounce:
    • Status bắt đầu bằng 5. → Hard bounce. Loại bỏ địa chỉ.
    • Status bắt đầu bằng 4. → Soft bounce. Tăng một bộ đếm.
  3. Áp dụng các quy tắc loại bỏ:
    • 1 hard bounce → loại bỏ ngay lập tức
    • N soft bounces trong một cửa sổ (ví dụ: 3 trong 7 ngày) → loại bỏ như hard
  4. Nhận dạng qua VERP nếu phân tích DSN không thành công (nhiều máy chủ gửi bounces không chuẩn)
  5. Ghi lại mọi thứ — Ghi nhật ký mã trạng thái, chẩn đoán, dấu thời gian và ID tin nhắn ban đầu để gỡ lỗi

Cẩn thận với hard bounces giả

Một số máy chủ không chính xác trả về 5xx cho các điều kiện tạm thời (như giới hạn tốc độ). Nếu bạn thấy 5.7.1 với thông báo về "quá nhiều kết nối" hoặc "hãy thử lại sau", hãy coi nó là soft bounce mặc dù lớp 5xx. Sử dụng văn bản chẩn đoán như một tín hiệu phụ.

Tỷ Lệ Bounce và Danh tiếng

Các nhà cung cấp hộp thư giám sát tỷ lệ bounce của bạn như một tín hiệu về vệ sinh danh sách:

Đối với email giao dịch (đặt lại mật khẩu, biên lai), tỷ lệ bounce phải ở dưới 1%. Tỷ lệ bounce cao trên thư giao dịch gợi ý rằng ứng dụng của bạn đang chấp nhận các địa chỉ không hợp lệ tại đăng ký. Thêm xác thực email trước khi bao giờ gửi.

Những Gì Có Thể Xảy Ra Sai Lầm

Bỏ qua bounces hoàn toàn

Sai lầm phổ biến nhất. Nếu bạn tiếp tục gửi tới các địa chỉ hard-bounce, các nhà cung cấp hộp thư sẽ giới hạn và cuối cùng chặn IP gửi của bạn. Khả năng gửi của bạn sẽ suy giảm cho tất cả người nhận, không chỉ những cái không hợp lệ.

Các định dạng bounce không chuẩn

Không phải tất cả MTA đều tạo ra DSN tuân thủ RFC. Một số gửi bounces văn bản thuần túy mà không có phần message/delivery-status. Những cái khác chỉ bao gồm mã trạng thái trong văn bản có thể đọc được bởi con người. Trình phân tích cú pháp của bạn cần xử lý những điều này một cách duyệt — đó là lý do tại sao VERP lại quý giá như một phương pháp nhận dạng dự phòng.

Backscatter

Khi một máy chủ chấp nhận một tin nhắn từ một người gửi bị giả mạo và sau đó tạo ra một bounce, bounce đó được gửi tới địa chỉ MAIL FROM giả mạo. Chủ sở hữu miền vô tội nhận được các thông báo bounce cho thư mà họ không bao giờ gửi. Điều này được gọi là backscatter và là một hình thức lạm dụng. Các máy chủ hiện đại nên từ chối trong phiên SMTP (đồng bộ) thay vì chấp nhận và bounce sau.

Bounce loops

Nếu địa chỉ xử lý bounce của bạn tự nó bị bounce (do cấu hình sai), nó có thể tạo ra một vòng lặp. SMTP ngăn chặn các vòng lặp vô hạn bằng cách yêu cầu rằng các thông báo bounce (những thông báo có MAIL FROM:<>) không bao giờ tự chúng bị bounce — chúng được loại bỏ im lặng nếu gửi không thành công.

Quản lý danh sách loại bỏ

Khi bạn loại bỏ một địa chỉ, bạn cần một quy trình để bật lại nó. Mọi người sửa hộp thư của họ (xóa hạn mức, bật lại tài khoản). Một mẫu phổ biến: cho phép người nhận xác thực lại bằng cách nhận thành công một email xác nhận sau một khoảng thời gian làm mát (30-90 ngày).

Các Điểm Chính

Đọc Thêm

Related RFCs