← RFC Reference

RFC 6377: DKIM và Danh sách Gửi thư

Mailing Lists & Header Fields Published March 2026
ELI5: Khi bạn gửi email được ký DKIM đến một danh sách gửi thư, phần mềm danh sách thường thay đổi tin nhắn của bạn — thêm chân trang, sửa đổi Chủ đề, viết lại địa chỉ Từ. Những thay đổi này phá vỡ chữ ký DKIM của bạn như mở một con dấu chống giả mạo. RFC 6377 ghi lại vấn đề này và khuyên cả những người vận hành danh sách và người gửi cách giảm thiểu thiệt hại.

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

DKIM (RFC 6376) ký các tiêu đề email và nội dung thân bằng hàm băm mật mã. Bất kỳ sửa đổi nào sau khi ký đều làm mất hiệu lực chữ ký. Danh sách gửi thư, theo thiết kế, sửa đổi các tin nhắn khi đang chuyển đi. Điều này tạo ra một xung đột cơ bản:

Khi DMARC xuất hiện (yêu cầu căn chỉnh DKIM hoặc SPF), xung đột này trở thành một cuộc khủng hoảng khả năng giao hàng. Các tin nhắn được gửi đến danh sách gửi thư bởi các miền có chính sách DMARC p=reject bắt đầu bị trả lại cho tất cả những người đăng ký danh sách. RFC 6377 được công bố để ghi lại vấn đề và đề xuất các chiến lược giảm thiểu.

Cách hoạt động

Danh sách gửi thư làm gì với các tin nhắn

Một trình quản lý danh sách gửi thư điển hình (Mailman, Sympa, LISTSERV, Google Groups) có thể thực hiện bất kỳ sự kết hợp nào của:

Sửa đổi Làm hỏng DKIM? Chi tiết
Thêm tiêu đề List-* Chỉ nếu h= bao gồm chúng List-Unsubscribe, List-Id, List-Post, v.v.
Thêm/sửa đổi tiền tố Chủ đề Có, nếu Chủ đề được ký ví dụ: [tên-danh-sách] Chủ đề gốc
Thêm chân trang vào thân Thêm hướng dẫn hủy đăng ký hoặc tuyên bố miễn trừ
Viết lại tiêu đề From Thay đổi From thành địa chỉ danh sách (giảm thiểu DMARC)
Thay đổi Reply-To Chỉ nếu Reply-To được ký Đặt Reply-To thành địa chỉ danh sách
Thay đổi người gửi phong bì Không (DKIM ký tiêu đề, không phong bì) Thay đổi MAIL FROM để xử lý phiếu trả lại
Cấu trúc lại MIME Bao gói vào multipart để thêm chân trang văn bản

Luồng xác minh chữ ký

; Bước 1: Tác giả gửi tin nhắn được ký DKIM đến danh sách
From: alice@example.com
To: dev-list@lists.example.org
Subject: Proposed API change
DKIM-Signature: d=example.com; h=from:to:subject; ...

; Bước 2: Phần mềm danh sách sửa đổi tin nhắn
From: alice@example.com            ← không thay đổi (hoặc viết lại)
To: dev-list@lists.example.org
Subject: [dev] Proposed API change  ← được sửa đổi: đã thêm tiền tố
List-Id: <dev-list.lists.example.org>  ← được thêm
DKIM-Signature: d=example.com; h=from:to:subject; ...

; Thân gốc + chân trang được thêm vào
The body text here...

--
To unsubscribe, visit https://lists.example.org/unsub  ← được thêm

; Bước 3: Máy chủ của người nhận xác minh DKIM
; Kết quả: THẤT BẠI (Chủ đề và thân được sửa đổi sau khi ký)

Thực hành được khuyến nghị cho những người vận hành danh sách

RFC 6377 khuyến nghị rằng danh sách gửi thư giảm thiểu các sửa đổi để bảo tồn chữ ký DKIM:

  1. Không sửa đổi tiêu đề Chủ đề. Tránh thêm tiền tố [tên-danh-sách]. Sử dụng tiêu đề List-Id thay vào đó — các ứng dụng email có thể lọc dựa trên nó.
  2. Không thêm chân trang vào thân. Sử dụng đóng gói MIME nếu cần nội dung chân trang, hoặc thêm chân trang dưới dạng một phần MIME riêng biệt thay vì thêm vào thân hiện có.
  3. Thêm chữ ký DKIM mới. Danh sách sẽ ký tin nhắn được sửa đổi bằng khóa DKIM của riêng nó (d=lists.example.org). Điều này không sửa chữ ký gốc, nhưng nó cung cấp chữ ký hợp lệ từ miền danh sách.
  4. Cân nhắc viết lại From để giảm thiểu DMARC. Khi miền của người gửi gốc công bố p=reject, hãy viết lại tiêu đề From thành miền danh sách và đặt người gửi gốc trong Reply-To. Điều này được triển khai rộng rãi dưới dạng "From munging."

Thực hành được khuyến nghị cho những người gửi

  1. Sử dụng chính tắc thư giãn. Ký bằng c=relaxed/relaxed thay vì c=simple/simple. Chính tắc thư giãn dung thứ những thay đổi khoảng trắng nhỏ mà một số phần mềm danh sách giới thiệu.
  2. Ký chỉ các tiêu đề cần thiết. Thẻ h= sẽ bao gồm các tiêu đề bạn quan tâm (From, Subject, Date, To, Message-ID) nhưng không phải các tiêu đề mà danh sách thường thêm (List-Id, List-Unsubscribe).
  3. Sử dụng thẻ độ dài thân l= một cách cẩn thận. Thẻ l= giới hạn bao nhiêu phần của thân được ký, vì vậy chân trang được thêm vào không làm hỏng chữ ký. Tuy nhiên, điều này có những tác động về bảo mật — kẻ tấn công có thể thêm nội dung độc hại bên dưới phần được ký.

Các chi tiết kỹ thuật chính

Sự phức tạp của DMARC

RFC 6377 xuất hiện trước DMARC (RFC 7489), nhưng các vấn đề mà nó mô tả đã trở nên nghiêm trọng hơn nhiều khi DMARC được triển khai. Với DMARC p=reject:

; Miền của tác giả công bố DMARC nghiêm ngặt
_dmarc.example.com TXT "v=DMARC1; p=reject; ..."

; Tin nhắn đi qua danh sách gửi thư, DKIM hỏng
; Máy chủ của người nhận kiểm tra DMARC:
;   - SPF: THẤT BẠI (người gửi phong bì là danh sách, không phải example.com)
;   - DKIM: THẤT BẠI (chữ ký bị hỏng do sửa đổi danh sách)
;   - DMARC: THẤT BẠI → TỪ CHỐI
; Kết quả: tin nhắn bị từ chối cho tất cả những người đăng ký danh sách

Đây là lý do tại sao ARC (RFC 8617) được phát triển — để bảo tồn kết quả xác minh trên các trung gian như danh sách gửi thư.

ARC như giải pháp hiện đại

Giao thức Chuỗi Nhận được Xác minh (ARC) cho phép các trung gian như danh sách gửi thư ghi lại kết quả xác minh gốc trước khi sửa đổi tin nhắn. Máy chủ của người nhận có thể sử dụng chuỗi ARC để khôi phục lại kết quả DKIM/SPF gốc, ngay cả sau khi danh sách đã hỏng chữ ký gốc.

Chiến lược viết lại From

Giảm thiểu DMARC phổ biến nhất cho danh sách gửi thư là viết lại From:

; Tin nhắn gốc
From: Alice Smith <alice@strict-dmarc.com>

; Sau khi danh sách viết lại From
From: Alice Smith via Dev List <dev-list@lists.example.org>
Reply-To: Alice Smith <alice@strict-dmarc.com>

Điều này bảo tồn danh tính của người gửi gốc trong văn bản hiển thị và Reply-To trong khi làm cho miền From khớp với chữ ký DKIM của danh sách.

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

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

Related RFCs