Tìm hiểu về SMTP – giao thức truyền tải thư tín đơn giản

SMTP là gì?

SMTP (viết tắt của Simple Mail Transfer Protocol) là giao thức truyền tải thư tín đơn giản. Nó là hệ thống chuyển tải các thư điện tử qua mạng Internet, máy chủ này sẽ hỗ trợ các phần mềm chuyên gửi mail như Google, Yahoo có thể gửi nhiều thư tín cùng một lúc tới các máy chủ khác nhau.

 

SMTP cho phép doanh nghiệp và các tổ chức gửi và nhận Mail một cách đơn giản và hiệu quả, ưu việt hơn hẳn các loại mail miễn phí khác. Ngày nay SMTP đóng vai trò quan trọng cho các doanh nghiệp sử dụng mail hay bất kỳ dịch vụ có sự tham gia của giao thức SMTP để có thể gửi và nhận email.

Có 2 loại Mail Server chính, đó là:

  1. Mail Server gửi đi (Outgoing Mail Servers)

Mail Server gửi đi (Outgoing Mail Servers) hay còn được gòi là SMTP (Simple Mail Transfer Protocol) – Giao thức dịch chuyển Mail đơn giản.

  1. Mail Server đến (Incoming Mail Servers)

Mail Server đến (Incoming Mail Servers) hay còn được biết đến dưới 2 loại giao thức:

– POP3 (Post Office Protocol phiên bản 3)

– IMAP (Internet Message Access Protocol)

Trong bài viết ngày hôm nay, mình sẽ giúp các bạn hiểu rõ thêm về Giao thức dịch chuyển Mail đơn giản SMTP. Hãy cùng bắt đầu nhé! 

Hoạt động của SMTP

Sau khi kết nối giữa người gửi (trình khách) và người nhận (trình chủ) đã được thiết lập, những việc làm sau đây là những việc hoàn toàn hợp lệ, đối với một phiên giao dịch dùng giao thức SMTP.

Trong cuộc hội thoại dưới đây, những gì trình khách gửi được đánh dấu bằng chữ C: đứng trước, còn những gì trình chủ gửi được đánh dấu bằng S:.

Các hệ thống máy tính đều có thể thiết lập một kết nối, bằng cách dùng những dòng lệnh của phần mềm telnet, trên một máy khách. Chẳng hạn:

telnet www.example.com 25

Khởi động một kết nối SMTP từ máy gửi thông điệp đến máy chủ www.example.com.

S: 220 www.example.com ESMTP Postfix

C: HELO mydomain.com

S: 250 Hello mydomain.com

C: MAIL FROM: <sender@mydomain.com>

S: 250 Ok

C: RCPT TO: <friend@example.com>

S: 250 Ok

C: DATA

S: 354 End data with <CR><LF>.<CR><LF>

C: Subject: test message

C: From: sender@mydomain.com

C: To: friend@example.com

C:

C: Hello,

C: This is a test.

C: Goodbye.

C:.

S: 250 Ok: queued as 12345

C: QUIT

S: 221 Bye

Tuy không bắt buộc và không được liệt kê trên đây, hầu hết các trình khách sẽ hỏi trình chủ xem tính năng mở rộng SMTP nào là tính năng trình chủ hỗ trợ, bằng cách gửi thông điệp chào hỏi “HELLO” cho trình chủ, và khởi động tính năng ESMTP (Extended SMTP – SMTP mở rộng) của trình chủ.

Những trình khách hiện đại thường dùng câu lệnh “SIZE” (cỡ) – một trong những từ chìa khóa (keyword) – trong SMTP mở rộng để điều tra cỡ lớn tối đa của thông điệp mà trình chủ có thể chấp nhận. Những trình khách và trình chủ cũ trước đây thường cho truyền tải ào ạt một lượng thông điệp thật lớn qua cho nhau, để rồi chúng lại bị từ chối sau khi đã đến đích, phung phí tài nguyên của mạng lưới một cách vô ý thức. Đấy là chưa kể thời gian kết nối tốn kém vào các ISP ( Internet Service Provider – Nhà cung cấp dịch vụ Internet) quay số, mà người dùng phải trả giá từng phút đồng hồ một.

Khi có dự định hiệu chỉnh những tập tin khổng lồ, hoặc dự định gửi tập tin bằng những trình khách cũ, người dùng có thể xác định được độ lớn tối đa của thông điệp mà trình chủ ESMTP cho phép và chấp nhận, trước khi gửi thông điệp. Người dùng có thể sử dụng phần mềm “telnet” như đã nói ở trên, thay thế dòng lệnh “HELLO mydomain.com” với dòng lệnh “HELLO mydomain.com”, như được liệt kê dưới đây:

S: 220-serverdomain.com ESMTP {postfix version and date}

S: 220-NO UCE. {etc., terms of service}

C: EHLO mydomain.com

S: 250-serverdomain.com Hello mydomain.com [127.0.0.1]

S: 250-SIZE 14680064

S: 250-PIPELINING

S: 250 HELP

Trình chủ tại serverdomain.com trên đây báo cáo với người dùng rằng nó sẽ nhận một thông điệp với cỡ tối đa là 14.680.064 byte (một byte bằng 8-bit). Tuy báo vậy, song thực tế còn tùy thuộc vào thực trạng và tình hình sử dụng tài nguyên ở máy chủ lúc đó, trình chủ có thể không có khả năng chấp nhận được thông điệp có độ lớn như đã báo.

Có trường hợp trình chủ ESMTP chỉ thông báo cỡ SIZE tối đa, khi trình khách dùng HELLO trong khi tương giao với trình chủ mà thôi.

Khi dùng, nếu chúng ta phát hiện thấy không có con số nào hiện ra sau câu lệnh “SIZE”, trong khi giới hạn về độ lớn của thông điệp nhất định phải được xác định một cách chính xác, thì người dùng có thể tương giao tiếp tục với trình chủ bằng cách giả vờ tạo một mẫu tin đầu ESMTP trong một thông điệp, trong đó đã gắn một con số ước chừng nào đấy về cỡ lớn của thông điệp và gửi thông điệp này cho trình chủ.