← RFC Reference

RFC 3461: Phần mở rộng Thông báo Trạng thái Gửi SMTP

Current Standard Delivery Status & Bounce Handling Obsoletes RFC 1891 Published March 2026
ELI5: Khi bạn gửi một lá thư được chứng thực qua dịch vụ bưu chính, bạn có thể yêu cầu biên lai xác nhận. RFC 3461 là tương đương trong email — nó cho phép máy chủ gửi nói "cho tôi biết nếu tin nhắn này được gửi, bị từ chối, hoặc bị trễ" bằng cách thêm các tham số đặc biệt vào cuộc trò chuyện SMTP.

Tại sao tính năng này tồn tại

SMTP cơ bản (RFC 5321) chỉ đảm bảo bạn sẽ được thông báo về các lỗi — máy chủ nhận sẽ tạo một thông báo bounce nếu giao hàng cuối cùng không thành công. Nhưng những người gửi thường cần nhiều hơn:

Nếu không có phần mở rộng này, những người gửi sẽ mù mờ: sự im lặng có thể có nghĩa là giao hàng thành công hoặc một tin nhắn bị mất. RFC 3461 thêm các tham số SMTP cho phép MTA gốc yêu cầu một cách rõ ràng các thông báo trạng thái giao hàng (DSN) và kiểm soát nội dung của chúng.

Cách hoạt động

Phần mở rộng DSN được thương lượng trong quá trình bắt tay EHLO của SMTP. Khi máy chủ nhận quảng cáo DSN, người gửi có thể sử dụng hai bộ tham số mới:

Tham số MAIL FROM

Tham số RCPT TO

Ví dụ Phiên SMTP

EHLO sender.example.com
250-mail.example.org Hello
250-SIZE 52428800
250-DSN
250 STARTTLS

; Yêu cầu DSN với ID phong bì, chỉ trả về các tiêu đề khi bị bounce
MAIL FROM:<alice@sender.example.com> RET=HDRS ENVID=msg-20260311-0042
250 OK

; Thông báo khi thành công hoặc thất bại, bảo toàn người nhận gốc
RCPT TO:<bob@example.org> NOTIFY=SUCCESS,FAILURE ORCPT=rfc822;bob@example.org
250 Accepted

; Không gửi DSN cho người nhận này
RCPT TO:<bcc-copy@archive.example.com> NOTIFY=NEVER
250 Accepted

DATA
354 Start mail input
[message content]
.
250 OK

Chi tiết kỹ thuật chính

Giá trị NOTIFY

Giá trị DSN được tạo khi
SUCCESS Tin nhắn được giao thành công đến hộp thư của người nhận
FAILURE Giao hàng thất bại vĩnh viễn (bounce cứng)
DELAY Giao hàng bị trễ nhưng vẫn đang được thử lại
NEVER Không có DSN trong bất kỳ trường hợp nào (không thể kết hợp với các giá trị khác)

Nếu NOTIFY bị bỏ qua, hành vi mặc định tương đương với NOTIFY=FAILURE — bạn chỉ nhận được thông báo khi gặp lỗi vĩnh viễn.

Mã hóa ENVID

Giá trị ENVID sử dụng mã hóa xtext: các ký tự ASCII có thể in được được chuyển qua không thay đổi, nhưng += (và các ký tự ngoài phạm vi ASCII có thể in được) được mã hóa thành +XX trong đó XX là giá trị hex. Điều này giữ cho tham số an toàn cho vận chuyển SMTP.

Hành vi Relay

Các MTA trung gian hỗ trợ DSN phải truyền các tham số DSN khi chuyển tiếp. Nếu một MTA trung gian không hỗ trợ DSN, nó vẫn phải tạo các thông báo bounce thích hợp theo các quy tắc SMTP tiêu chuẩn, mặc dù các điều khiển DSN chi tiết sẽ bị mất.

Những sai lầm phổ biến

Tác động đến Khả năng giao hàng

Hỗ trợ DSN là cơ sở hạ tầng quan trọng cho việc gửi email chuyên nghiệp:

Related RFCs