Ví dụ về truyền thô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 http://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ủ http://www.example.com.

S: 220 http://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ủ. Xin xem thêm phần liên kết ngoài, dòng kết nối cho RFC 1870 dưới đây để biết thêm chi tiết.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s