RFC 1869 – Tiện ích mở rộng Dịch vụ SMTP (ESMTP)
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
- Máy khách kết nối và nhận spandau chào mừng của máy chủ.
- Máy khách gửi
EHLO client.example.com(thay vìHELOcũ). - Máy chủ phản hồi bằng
250theo 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ụng250-(tiếp tục) ngoại trừ dòng cuối cùng, sử dụng250(cuối cùng). - 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.
- Nếu máy chủ không hiểu
EHLO(cực kỳ hiếm ngày nay), nó sẽ trả về lỗi500, và máy khách quay lạiHELO.
Ví Dụ SMTP
Một đàm phán khả năng ESMTP điển hình:
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 FROM và RCPT TO, như MAIL FROM:<user@example.com> SIZE=1048576.
Những Sai Lầm Phổ Biến
-
Sử dụng HELO thay vì EHLO. Một số ứng dụng cũ vẫn gửi
HELO. Điều này vô hiệu hóa tất cả các tiện ích mở rộng SMTP, bao gồm xác thực và mã hóa. Luôn sử dụngEHLO. - Không kiểm tra phản hồi EHLO. Các máy khách mù quáng sử dụng các tiện ích mở rộng mà không xác minh máy chủ đã quảng cáo chúng sẽ gặp lỗi. Luôn phân tích danh sách khả năng trước khi sử dụng bất kỳ tiện ích mở rộng nào.
-
Lưu trữ khả năng trong bộ nhớ đệm qua các phiên. Các tiện ích mở rộng mà máy chủ hỗ trợ có thể thay đổi giữa các kết nối. Luôn thực hiện
EHLOmới cho mỗi kết nối mới. -
Quên re-EHLO sau STARTTLS. Sau khi nâng cấp lên TLS, danh sách khả năng trước TLS không hợp lệ.
EHLOmới bắt buộc để lấy khả năng cập nhật. -
Gửi tên máy chủ EHLO không hợp lệ. Đối số cho
EHLOphải là FQDN của máy chủ của bạn hoặc, nếu không có tên máy chủ, một chữ số địa chỉ như[192.0.2.1]. Gửi tên máy chủ trống hoặc giả mạo có thể gây từ chối. - Bỏ qua miền EHLO để bảo mật. Máy chủ nhận sẽ không tin cậy tên máy chủ EHLO để xác thực — nó tự báo cáo và giả mạo một cách tầm thường. Sử dụng SPF, DKIM và DMARC thay thế.
Tác Động Đến Khả Năng Giao Dịch
-
ESMTP là bắt buộc cho email hiện đại. Không có
EHLO, bạn không thể sử dụng STARTTLS, AUTH, PIPELINING hoặc bất kỳ tiện ích mở rộng nào khác. Một máy khách chỉ nóiHELOđược hầu hết các máy chủ thư coi là đáng ngờ. - Hỗ trợ tiện ích mở rộng báo hiệu tính hợp pháp. Các máy chủ quảng cáo và triển khai đúng các tiện ích mở rộng tiêu chuẩn (ENHANCEDSTATUSCODES, PIPELINING, SIZE) được coi là được cấu hình tốt. Hỗ trợ tiện ích mở rộng bị thiếu hoặc bị hỏng có thể kích hoạt điểm số âm trong các bộ lọc thư rác.
- Tên máy chủ EHLO quan trọng đối với danh tiếng. Mặc dù tên máy chủ EHLO không được xác thực, nhiều bộ lọc thư rác kiểm tra xem nó có phân giải trong DNS và khớp với DNS ngược của IP kết nối không. Sự không khớp góp phần vào điểm số thư rác.
- Khai báo SIZE ngăn chặn lãng phí băng thông. Khi máy chủ quảng cáo giới hạn kích thước của nó, máy khách có thể tránh gửi các tin nhắn quá lớn sẽ bị từ chối sau khi truyền dữ liệu đầy đủ. Điều này cải thiện hiệu quả giao dịch.