Email là một trong những ứng dụng lâu đời và cơ bản nhất của internet, và SMTP (Simple Mail Transfer Protocol) là nền tảng cốt lõi thúc đẩy việc gửi email. Hiểu cách thức hoạt động của SMTP không chỉ giúp bạn khắc phục sự cố khi gửi email mà còn giúp bạn hiểu rõ hơn các hiện tượng phổ biến như thư trả lại và lọc thư rác.
Ba giao thức cốt lõi của hệ thống email
Trước khi đi sâu vào SMTP, chúng ta hãy cùng tìm hiểu ba giao thức liên quan đến hệ thống email, mỗi giao thức đều có chức năng riêng:
| giao thức | Họ và tên đầy đủ | tác dụng | tương tự |
|---|---|---|---|
| SMTP | Giao thức truyền thư đơn giản | Chịu trách nhiệm gửi và chuyển tiếp email. | xe tải giao hàng của bưu điện |
| POP3 | Thỏa thuận Bưu điện, Phiên bản 3 | Tải email từ máy chủ về máy tính cục bộ của bạn. | Hãy đến bưu điện để nhận thư và mang về nhà. |
| IMAP | Giao thức truy cập email Internet | Quản lý và đọc email trên máy chủ | Đọc thư trực tiếp tại bưu điện. |
Nói một cách đơn giản: SMTP đảm nhiệm việc "gửi email", trong khi POP3 và IMAP đảm nhiệm việc "nhận email". Bài viết này tập trung vào cách SMTP chuyển tiếp email từ người gửi đến người nhận.
Toàn bộ hành trình của một email
Giả sử Alice (alice@gmail.com) gửi email cho Bob (bob@yahoo.com), email này sẽ trải qua sáu giai đoạn sau:
Giai đoạn 1: Viết và nộp bài
Alice soạn một email trong trình duyệt web hoặc ứng dụng email Gmail và nhấp vào "Gửi". Email sau đó được gửi từ trình duyệt (hoặc ứng dụng email) đến máy chủ gửi thư của Gmail (thường là smtp.gmail.com, cổng 587) thông qua giao thức SMTP .
Bước này yêu cầu xác minh danh tính—trước tiên Alice phải đăng nhập vào tài khoản Gmail của mình, và máy chủ sẽ xác nhận rằng cô ấy được phép gửi email bằng địa chỉ alice@gmail.com.
Giai đoạn hai: Truy vấn DNS
Khi máy chủ gửi thư của Gmail nhận được email, nó cần biết nơi cần gửi đến. Nó truy vấn DNS (Hệ thống tên miền) cho tên miền của người nhận, yahoo.com, để lấy bản ghi MX (Bản ghi trao đổi thư).
Bản ghi MX sẽ trả về địa chỉ máy chủ thư của Yahoo, ví dụ:
yahoo.com MX ưu tiên 1 mta5.am0.yahoodns.net yahoo.com MX ưu tiên 5 mta6.am0.yahoodns.net yahoo.com MX ưu tiên 5 mta7.am0.yahoodns.net
Máy chủ sẽ thử bản ghi MX có độ ưu tiên cao nhất (số thấp nhất) trước. Nếu máy chủ đó không khả dụng, nó sẽ thử máy chủ tiếp theo.
Giai đoạn 3: Bắt tay SMTP
Máy chủ của Gmail thiết lập kết nối TCP (thường sử dụng cổng 25) với máy chủ thư của Yahoo, sau đó bắt đầu một "cuộc hội thoại" tiêu chuẩn. Đây là cốt lõi của giao thức SMTP — một chuỗi các lệnh và phản hồi:
Kết nối đã được thiết lập Yahoo: 220 mta5.am0.yahoodns.net ESMTP sẵn sàng Gmail: EHLO mail.gmail.com Yahoo: 250-mta5.am0.yahoodns.net Xin chào Yahoo: 250-STARTTLS Yahoo: 250 OK Nâng cấp lên kết nối được mã hóa Gmail: STARTTLS Yahoo: 220 Sẵn sàng bắt đầu TLS Thông báo cho người gửi và người nhận. Gmail: THƯ TỪ:<alice@gmail.com> Yahoo: 250 OK Gmail: RCPT TO:<bob@yahoo.com> Yahoo: 250 OK Truyền tải nội dung email Gmail: DỮ LIỆU Yahoo: 354 Bắt đầu nhập thư Gmail: Từ: Alice <alice@gmail.com> Gmail: Gửi: Bob <bob@yahoo.com> Gmail: Chủ đề: Chào Bob! Gmail: Gmail: Chào Bob, bạn khỏe không? Gmail: . Yahoo: 250 OK, tin nhắn đã được xếp vào hàng đợi Ngắt kết nối Gmail: Thoát Yahoo: 221 Tạm biệt
Toàn bộ quá trình đối thoại diễn ra rõ ràng và có trật tự: đầu tiên là lời chào (EHLO), sau đó là mã hóa (STARTTLS), tiếp theo là thông tin phong bì (người gửi và người nhận), và cuối cùng là nội dung tin nhắn (DATA).
Giai đoạn bốn: Xử lý người nhận
Sau khi máy chủ thư của Yahoo nhận được email, nó sẽ thực hiện một loạt các bước kiểm tra:
- Kiểm tra xem người nhận, bob@yahoo.com, có tồn tại hay không. Nếu không tồn tại, hãy trả về thông báo lỗi (hard bounce).
- Xác thực: Kiểm tra các bản ghi SPF, DKIM và DMARC để xác minh danh tính người gửi.
- Lọc thư rác: Quét nội dung email để xác định xem đó có phải là thư rác hay không.
- Quét virus: Kiểm tra các tệp đính kèm xem có phần mềm độc hại hay không.
Sau khi hoàn tất mọi thủ tục kiểm tra, email đã được chuyển đến hộp thư của Bob.
Giai đoạn 5: Lưu trữ email
Các email được lưu trữ trên máy chủ thư của Yahoo, chờ Bob đọc. Chúng sẽ được chuyển vào hộp thư đến, thư mục thư rác hoặc các thư mục khác theo quy tắc lọc.
Giai đoạn sáu: Đọc thông tin người nhận
Bob mở Yahoo Mail và tải nội dung email từ máy chủ bằng giao thức IMAP hoặc POP3 . Nếu sử dụng phiên bản web, anh ấy đọc email trực tiếp trên trình duyệt thông qua giao thức HTTP/HTTPS.
Giải thích chi tiết các lệnh SMTP quan trọng
| Đặt hàng | nghĩa | minh họa |
|---|---|---|
EHLO | chào hỏi | Hãy tự giới thiệu với máy chủ kia và hỏi về các tiện ích mở rộng được hỗ trợ. |
STARTTLS | Nâng cấp mã hóa | Nâng cấp các kết nối văn bản thuần túy lên kết nối mã hóa TLS để bảo vệ nội dung email trong quá trình truyền tải. |
MAIL FROM | người gửi | Địa chỉ người gửi của email thông báo (địa chỉ người gửi trên phong bì). |
RCPT TO | người nhận | Hãy chỉ định địa chỉ người nhận cho email thông báo (có thể chọn nhiều địa chỉ). |
DATA | Nội dung email | Bắt đầu truyền tải phần tiêu đề và nội dung email, kết thúc bằng dấu chấm (.) trên một dòng riêng biệt. |
QUIT | ngắt kết nối | Kết thúc phiên, đóng kết nối |
Ý nghĩa của mã phản hồi SMTP
Mỗi phản hồi từ máy chủ SMTP bắt đầu bằng một dãy số gồm ba chữ số, các chữ số khác nhau thể hiện các trạng thái khác nhau:
| Mã phản hồi | nghĩa | Ví dụ |
|---|---|---|
| 2xx | thành công | 250 OK — Lệnh đã được thực thi thành công |
| 3xx | Cần thêm thông tin | 354 Bắt đầu nhập thư — Đang chờ nội dung email |
| 4xx | Lỗi tạm thời (khôi phục tạm thời) | 421 Dịch vụ tạm thời không khả dụng / 450 Email đang bận |
| 5xx | Lỗi vĩnh viễn (khôi phục hoàn toàn) | 550 Người dùng không tồn tại / 553 Định dạng địa chỉ không chính xác |
Các mã phản hồi này cực kỳ hữu ích khi khắc phục sự cố gửi email. Khi bạn nhận được thông báo email bị trả lại, mã phản hồi đi kèm có thể giúp bạn nhanh chóng xác định nguyên nhân.
Số cổng SMTP
Giao thức SMTP sử dụng các cổng khác nhau để cung cấp các chức năng khác nhau:
- Cổng 25: Cổng chuẩn để truyền tải email giữa các máy chủ. Nhiều nhà cung cấp dịch vụ Internet (ISP) chặn cổng này để ngăn chặn thư rác.
- Cổng 587: Cổng được khuyến nghị cho email do người dùng gửi, hỗ trợ mã hóa và xác thực STARTTLS.
- Cổng 465: Một cổng cũ sử dụng mã hóa SSL/TLS ngầm định; một số dịch vụ vẫn đang sử dụng nó.
Nếu bạn đang cấu hình một ứng dụng email hoặc dịch vụ SMTP, bạn nên sử dụng kết hợp cổng 587 và giao thức STARTTLS .
Những hạn chế và cải tiến hiện đại của SMTP
Giao thức SMTP được phát triển vào năm 1982 (RFC 821), khi internet chưa phải đối mặt với bất kỳ mối đe dọa an ninh nào. Do đó, giao thức SMTP ban đầu có một số nhược điểm cố hữu:
- Không mã hóa: Dữ liệu SMTP gốc được truyền đi dưới dạng văn bản thuần, sau đó được giải mã thông qua tiện ích mở rộng STARTTLS.
- Không có xác thực: Bất kỳ ai cũng có thể tự xưng là người gửi, rồi che giấu điều đó bằng SPF, DKIM hoặc DMARC.
- Không có xác nhận gửi thành công: Người gửi không thể biết chắc chắn liệu email đã đến hộp thư đến của người nhận hay chưa.
Mặc dù có những hạn chế này, SMTP vẫn là giao thức cốt lõi của các hệ thống email toàn cầu. Thông qua việc liên tục bổ sung các tiện ích mở rộng bảo mật, nó duy trì khả năng tương thích ngược đồng thời thích ứng với các yêu cầu bảo mật của internet hiện đại.
Tóm tắt
Hành trình của một email phức tạp hơn nhiều so với bạn tưởng tượng: từ khi người dùng nhấn nút gửi, đến tra cứu DNS, bắt tay SMTP, xác thực, lọc thư rác, và cuối cùng là đến hộp thư đến của người nhận—mỗi bước đều được hỗ trợ bởi các giao thức và quy tắc nghiêm ngặt. Hiểu được các cơ chế cơ bản này có thể giúp bạn quản lý tài khoản email tốt hơn, khắc phục sự cố khi gửi và tối ưu hóa tỷ lệ gửi email thành công.