← RFC Reference

RFC 1869 – Tiện ích mở rộng Dịch vụ SMTP (ESMTP)

Internet Standard Core SMTP & Message Format Published March 2026
ELI5: SMTP ban đầu giống như hai người chỉ có thể nói tiếng Anh cơ bản. ESMTP giống như bắt đầu một cuộc trò chuyện bằng cách nói "Tôi cũng nói tiếng Pháp, Đức và Nhật Bản — bạn có không?" Lệnh EHLO thay thế HELO và cho phép cả hai bên khám phá những tính năng bổ sung mà họ chia sẻ trước khi họ bắt đầu trao đổi thư. Mọi tính năng SMTP hiện đại — xác thực, mã hóa, giới hạn kích thước — đều dựa vào cơ chế thương lượng này.

Tại Sao RFC Này Tồn Tại

Giao thức SMTP gốc (RFC 821, 1982) không có cơ chế để thêm các tính năng mới. Không có cách nào để máy khách khám phá những gì máy chủ hỗ trợ, và không có cách nào để máy chủ quảng cáo khả năng. Mỗi tiện ích mở rộng yêu cầu một phiên bản giao thức mới, không tương thích.

RFC 1869, xuất bản năm 1995, đã giải quyết vấn đề này bằng cách xác định một khuôn khổ chung cho các tiện ích mở rộng SMTP. Nó giới thiệu lệnh EHLO (Extended HELLO) như một sự thay thế cho HELO. Khi máy khách gửi EHLO, máy chủ sẽ phản hồi bằng danh sách các tiện ích mở rộng mà nó hỗ trợ. Máy khách sau đó có thể sử dụng bất kỳ tiện ích mở rộng nào mà cả hai bên đều hiểu.

Khuôn khổ này là cơ bản đến mức nó được tích hợp trực tiếp vào thông số kỹ thuật SMTP cơ bản trong RFC 5321. Hầu hết mọi phiên SMTP ngày nay đều sử dụng ESMTP — HELO thuần túy thực tế đã lỗi thời.

Cách Nó Hoạt Động

  1. Máy khách kết nối và nhận spandau chào mừng của máy chủ.
  2. Máy khách gửi EHLO client.example.com (thay vì HELO cũ).
  3. Máy chủ phản hồi bằng 250 theo sau là tên máy chủ của nó, sau đó là một từ khóa tiện ích mở rộng trên mỗi dòng. Mỗi dòng sử dụng 250- (tiếp tục) ngoại trừ dòng cuối cùng, sử dụng 250 (cuối cùng).
  4. Máy khách kiểm tra danh sách tiện ích mở rộng và chỉ sử dụng các tính năng mà máy chủ đã quảng cáo.
  5. Nếu máy chủ không hiểu EHLO (cực kỳ hiếm ngày nay), nó sẽ trả về lỗi 500, và máy khách quay lại HELO.

Ví Dụ SMTP

Một đàm phán khả năng ESMTP điển hình:

S: 220 mx.example.com ESMTP ready C: EHLO sender.example.net S: 250-mx.example.com Hello sender.example.net S: 250-SIZE 52428800 S: 250-8BITMIME S: 250-STARTTLS S: 250-ENHANCEDSTATUSCODES S: 250-PIPELINING S: 250-CHUNKING S: 250-SMTPUTF8 S: 250 AUTH PLAIN LOGIN # Máy khách hiện biết chính xác máy chủ này hỗ trợ gì: # SIZE — kích thước tin nhắn tối đa là 50 MB # 8BITMIME — mã hóa chuyển dữ liệu 8 bit được phép # STARTTLS — mã hóa TLS có sẵn # ENHANCEDSTATUSCODES — mã trạng thái RFC 3463 # PIPELINING — có thể hàng loạt các lệnh (RFC 2920) # CHUNKING — lệnh BDAT có sẵn (RFC 3030) # SMTPUTF8 — địa chỉ quốc tế hóa (RFC 6531) # AUTH — xác thực với PLAIN hoặc LOGIN

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

Sổ Đăng Ký Tiện Ích Mở Rộng

Các tiện ích mở rộng ESMTP được đăng ký với IANA. Mỗi tiện ích mở rộng xác định một từ khóa (ví dụ: STARTTLS, AUTH, PIPELINING) và tùy chọn các tham số. Các tiện ích mở rộng quan trọng nhất cho email:

Từ Khóa RFC Mục Đích
SIZE RFC 1870 Khai báo kích thước tin nhắn tối đa
8BITMIME RFC 6152 Cho phép nội dung 8 bit trong phần thân tin nhắn
STARTTLS RFC 3207 Nâng cấp kết nối lên mã hóa TLS
AUTH RFC 4954 Xác thực SMTP
PIPELINING RFC 2920 Hàng loạt nhiều lệnh mà không cần chờ đợi
CHUNKING RFC 3030 Truyền dữ liệu nhị phân với BDAT
SMTPUTF8 RFC 6531 Địa chỉ email quốc tế hóa
DSN RFC 3461 Yêu cầu thông báo trạng thái giao dịch
ENHANCEDSTATUSCODES RFC 3463 Mã trạng thái chi tiết trong phản hồi
REQUIRETLS RFC 8689 Yêu cầu TLS cho tin nhắn này

EHLO so với HELO

HELO là lời chào SMTP gốc từ năm 1982. Nó không cung cấp khám phá khả năng. EHLO là một siêu tập hợp hoàn toàn: nó thực hiện cùng một chức năng chào mừng nhưng cũng kích hoạt danh sách khả năng. Máy chủ phải hỗ trợ cả hai, nhưng máy khách nên luôn sử dụng EHLO trước tiên và chỉ quay lại HELO nếu EHLO bị từ chối.

Re-EHLO Sau Những Thay Đổi Trạng Thái

Danh sách khả năng có thể thay đổi trong một phiên. Sau khi bắt tay STARTTLS, máy khách phải gửi EHLO mới vì máy chủ có thể quảng cáo các tiện ích mở rộng khác nhau qua kết nối được mã hóa (ví dụ: AUTH thường chỉ có sẵn sau TLS). Sau RSET, danh sách khả năng vẫn hợp lệ.

Tham Số Tiện Ích Mở Rộng

Một số tiện ích mở rộng bao gồm các tham số trên dòng phản hồi EHLO. Ví dụ: SIZE 52428800 khai báo giới hạn 50 MB, và AUTH PLAIN LOGIN liệt kê các cơ chế xác thực có sẵn. Các tiện ích mở rộng cũng có thể thêm tham số vào các lệnh MAIL FROMRCPT TO, như MAIL FROM:<user@example.com> SIZE=1048576.

Những Sai Lầm Phổ Biến

Tác Động Đến Khả Năng Giao Dịch

Related RFCs