← RFC Reference

RFC 3464: Định dạng Thông báo Trạng thái Gửi

Current Standard Delivery Status & Bounce Handling Obsoletes RFC 1894 Published March 2026
ELI5: Khi một gói hàng không thể được giao, người chuyển phát sẽ cung cấp cho bạn một biểu mẫu giải thích điều gì đã xảy ra. RFC 3464 định nghĩa biểu mẫu được tiêu chuẩn hóa mà các máy chủ thư điền khi một tin nhắn bị trả về, bị trì hoãn hoặc được giao thành công — được cấu trúc để phần mềm có thể đọc nó tự động.

Tại Sao Tính Năng Này Tồn Tại

Trước khi định dạng DSN được tiêu chuẩn hóa, mỗi máy chủ thư tạo ra thông báo phản hồi ở định dạng văn bản tự do riêng của nó. Phân tích cú pháp các "thông báo phản hồi" này yêu cầu heuristics dễ vỡ — các biểu thức chính quy bị hỏng bất cứ khi nào một máy chủ thay đổi cách diễn đạt. RFC 3464 định nghĩa một kiểu nội dung MIME có thể đọc bằng máy (message/delivery-status) giúp xử lý phản hồi tự động trở nên đáng tin cậy.

RFC này hoạt động cùng với RFC 3461 (định nghĩa cách yêu cầu DSN ở cấp độ SMTP) và RFC 3462 (định nghĩa vùng chứa multipart/report bao bọc DSN).

Cách Hoạt Động

Một thông báo DSN là một thông báo MIME multipart/report với report-type=delivery-status. Nó chứa tối đa ba phần MIME:

  1. Giải thích có thể đọc được bằng con người (text/plain) — văn bản tự do cho con người.
  2. Trạng thái có thể đọc bằng máy (message/delivery-status) — dữ liệu được cấu trúc được xác định bởi RFC này.
  3. Thông báo gốc (message/rfc822 hoặc text/rfc822-headers) — toàn bộ thông báo gốc hoặc chỉ tiêu đề của nó, tùy thuộc vào tham số RET từ RFC 3461.

Phần Nội Dung delivery-status

Phần message/delivery-status chứa các nhóm trường giống như tiêu đề được phân tách bằng các dòng trống:

; Các trường cho mỗi thông báo (một nhóm)
Reporting-MTA: dns; mail.example.org
Original-Envelope-Id: msg-20260311-0042
Arrival-Date: Wed, 11 Mar 2026 10:30:00 -0500

; Các trường cho mỗi người nhận (một nhóm cho mỗi người nhận)
Original-Recipient: rfc822;bob@example.org
Final-Recipient: rfc822;bob@example.org
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 User unknown
Last-Attempt-Date: Wed, 11 Mar 2026 10:30:05 -0500

Chi Tiết Kỹ Thuật Chính

Trường Cho Mỗi Thông Báo

Trường Bắt Buộc Mô Tả
Reporting-MTA MTA tạo ra DSN này, dưới dạng tên máy chủ DNS
Original-Envelope-Id Không ENVID từ giao dịch SMTP gốc (RFC 3461)
DSN-Gateway Không Có mặt khi DSN được dịch từ một hệ thống thư ngoại lại
Received-From-MTA Không MTA trao thông báo cho Reporting-MTA
Arrival-Date Không Khi thông báo gốc đến Reporting-MTA

Trường Cho Mỗi Người Nhận

Trường Bắt Buộc Mô Tả
Final-Recipient Địa chỉ người nhận mà MTA thực sự cố gắng gửi đến
Original-Recipient Không Giá trị ORCPT từ phiên SMTP — địa chỉ mà người gửi sử dụng
Action Một trong: failed, delayed, delivered, relayed, expanded
Status Mã trạng thái nâng cao theo RFC 3463 (ví dụ: 5.1.1)
Diagnostic-Code Không Chuỗi lỗi thực tế từ máy chủ từ xa, được tiền tố theo loại (thường là smtp)
Remote-MTA Không MTA trả về lỗi
Last-Attempt-Date Không Khi lần cố gắng gửi cuối cùng được thực hiện
Will-Retry-Until Không Đối với các hành động delayed, khi MTA sẽ từ bỏ

Giá Trị Hành Động

Hành Động Ý Nghĩa
failed Lỗi vĩnh viễn — thông báo sẽ không được gửi (phản hồi cứng)
delayed Lỗi tạm thời — vẫn đang thử lại (phản hồi mềm)
delivered Gửi thành công đến hộp thư của người nhận
relayed Chuyển tiếp đến một môi trường có thể không tạo thêm DSN
expanded Gửi đến danh sách gửi thư hoặc bí danh mở rộng thành nhiều người nhận

Ví Dụ Thông Báo DSN Đầy Đủ

From: mailer-daemon@mail.example.org
To: alice@sender.example.com
Subject: Delivery Status Notification (Failure)
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
    boundary="DSN-BOUNDARY-001"

--DSN-BOUNDARY-001
Content-Type: text/plain

Your message to bob@example.org could not be delivered.
The recipient's mailbox does not exist.

--DSN-BOUNDARY-001
Content-Type: message/delivery-status

Reporting-MTA: dns; mail.example.org
Original-Envelope-Id: msg-20260311-0042
Arrival-Date: Wed, 11 Mar 2026 10:30:00 -0500

Final-Recipient: rfc822;bob@example.org
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 User unknown

--DSN-BOUNDARY-001
Content-Type: text/rfc822-headers

From: alice@sender.example.com
To: bob@example.org
Subject: Meeting tomorrow
Message-ID: <abc123@sender.example.com>

--DSN-BOUNDARY-001--

Lỗi Thường Gặp

Tác Động Khả Năng Gửi

Related RFCs