← RFC Reference

RFC 8058: Hủy đăng ký Email bằng Một Cú Nhấp Chuột

Required by Gmail/Yahoo Mailing Lists & Header Fields Published March 2026
ELI5: RFC 2369 đã cung cấp cho email một URL hủy đăng ký, nhưng khi nhấp vào nó sẽ mở một trang web có thể yêu cầu xác nhận, đăng nhập, hoặc thậm chí là một bẫy lừa đảo. RFC 8058 thêm một tiêu đề mới cho biết cho máy khách email "bạn có thể hủy đăng ký bằng cách gửi một HTTP POST duy nhất đến URL này — không cần trình duyệt, không có trang xác nhận, chỉ xong thôi."

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

List-Unsubscribe header của RFC 2369 có một vấn đề cơ bản: các ứng dụng email không thể an toàn thực hiện hành động trên URL một cách tự động. Một URL HTTPS có thể dẫn đến trang có CAPTCHA, biểu mẫu đăng nhập, bước xác nhận, hoặc thậm chí một trang web độc hại. Các ứng dụng phải mở trình duyệt và để người dùng xử lý — điều này tạo thêm rào cản làm giảm khả năng sử dụng.

RFC 8058 giải quyết vấn đề này bằng cách giới thiệu header List-Unsubscribe-Post. Khi có mặt cùng với URL HTTPS List-Unsubscribe, nó báo hiệu rằng ứng dụng email có thể gửi yêu cầu HTTP POST trực tiếp để hủy đăng ký người dùng — không cần trình duyệt, không cần xác nhận, chỉ một cú nhấp chuột.

Kể từ tháng Hai 2024, Gmail và Yahoo yêu cầu tuân thủ RFC 8058 đối với những người gửi khối lượng lớn (những người gửi hơn 5.000 tin nhắn mỗi ngày cho người dùng của họ). Đây không còn là tùy chọn đối với email thương mại.

Cách Thức Hoạt Động

Cơ chế này yêu cầu hai header cùng hoạt động:

Header Bắt Buộc

List-Unsubscribe: <https://example.com/unsub?id=abc123>,
    <mailto:unsub-abc123@example.com>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

Khi ứng dụng email thấy cả hai header:

  1. Nó hiển thị nút "Hủy đăng ký" nổi bật trong giao diện người dùng.
  2. Khi người dùng nhấp vào nó, ứng dụng gửi HTTP POST tới URL HTTPS từ List-Unsubscribe.
  3. Phần thân POST chính xác là: List-Unsubscribe=One-Click
  4. Máy chủ của người gửi xử lý POST và hủy đăng ký người dùng.

Yêu Cầu HTTP POST

POST /unsub?id=abc123 HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 26

List-Unsubscribe=One-Click

Phản Hồi Của Máy Chủ

Máy chủ nên trả về trạng thái 200 OK để xác nhận hủy đăng ký đã thành công. Bất kỳ phản hồi 2xx nào đều cho biết thành công. Phần thân phản hồi không được hiển thị cho người dùng, do đó nó có thể trống rỗng hoặc chứa một xác nhận đơn giản.

Các Chi Tiết Kỹ Thuật Chính

Yêu Cầu Header

Yêu Cầu DKIM

Tin nhắn phải vượt qua xác thực DKIM, và chữ ký DKIM phải bao gồm cả header List-UnsubscribeList-Unsubscribe-Post. Điều này ngăn chặn các kẻ tấn công tiêm hoặc sửa đổi URL hủy đăng ký trong quá trình truyền tải. Gmail kiểm tra điều này một cách rõ ràng.

Triển Khai Endpoint

; Trình xử lý máy chủ tối thiểu (mã giả)
function handleUnsubscribe(request):
    if request.method != "POST":
        return 405 Method Not Allowed

    if request.body != "List-Unsubscribe=One-Click":
        return 400 Bad Request

    subscriberId = request.queryParams["id"]
    suppressRecipient(subscriberId)
    return 200 OK

Ví Dụ Header Tin Nhắn Hoàn Chỉnh

From: newsletter@example.com
To: user@gmail.com
Subject: Your Weekly Update
MIME-Version: 1.0
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=sel1;
    h=from:to:subject:list-unsubscribe:list-unsubscribe-post;
    b=...
List-Unsubscribe: <https://example.com/unsub?id=abc123>,
    <mailto:unsub-abc123@example.com>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
Content-Type: text/html; charset=utf-8

Những Lỗi Phổ Biến

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

Related RFCs