PHÂN TÍCH GIAO THệÙC SMTP (RFC 821)

Một phần của tài liệu qt (Trang 27)

1.5.1. Giới thiệu chung

Mục đích của giao thức SMTP (Simple Mail Transfer Protocol) là để truyền th đáng tin cậy và cĩ hiệu quả.

SMTP đọc lập về hệ thống con truyền thơng đặc biệt và các yêu cầu chỉ tin cậy theo kênh luồng dữ liệu tuần tự.

Đặc tính quan trọng của SMTP là khả năng chuyển tiếp th tín qua các mơi trờng dịch vụ truyền thơng (transport service). Dịch vụ truyền thơng cung cấp một mơi trờng truyền thơng liên quá trình (interprocess communication environment - IPCE). IPCE cĩ thể là một mạng, nhiều mạng hay một tập hợp con của một mạng. Điều quan trọng để nhận thấy rằng các hệ thống truyền thơng (IPCEs) khơng phải là việc truyền thơng tơng ứng một tới một (one-to-one) với các mạng. Một tiến trình cĩ thể truyền thơng qua lại trực tiếp với một tiến trình khác thơng qua bất kỳ một IPCE đã đợc biết. Th tín là một ứng dụng hay là việc sử dụng truyền thơng liên tiến trình. Th tín cĩ thể đợc truyền qua giữa các tiến trình theo các IPCEs khác nhau bắng cách chuyển tiếp qua một tiến tiến trình đợc kết nối tới hai hay nhiều IPCEs. Đặc biệt hơn nữa, th tín cĩ thể đợc chuyển tiếp giữa các máy chủ (hosts) trên các hệ thống truyền thơng khác nhau bởi một máy chủ trên cả hai hệ thống truyền thơng.

Giao thức SMTP định nghĩa cách để chuyển giao th tín trực tiếp giữa các máy tính trên mạng. Nĩ cĩ hai vai trị là gửi (sender-SMTP) và nhận (receiver-SMTP) th. Thơng thờng, bên gửi thiết lập một liên kết TCP với bên nhận, và bên nhận sử dụng cổng truyền thơng số 25 để cung cấp dịch vụ th tín điện tử.

Trong một phiên giao dịch th tín, bên gửi và bên nhận trao đổi tuần tự các lệnh và các thơng tin phản hồi.

1.5.2. Mơ hình hoạt động phiên giao dịch

SMTP đợc thiết kế dựa trên mơ hình truyền thơng sau: khi ngời sử dụng (user) gửi một yêu cầu dịch vụ th tín, trớc tiên Sender-SMTP thành lập một kênh truyền thơng hai chiều tới Receiver-SMTP. Receiver-SMTP cĩ thể là đích cuối cùng hoặc là một trạm trung gian. Sau đĩ, các lệnh của SMTP đợc sinh ra từ phía Sender-SMTP và gửi tới Receiver-SMTP. Receiver-SMTP sẽ thao tác trên các lệnh đĩ và gửi trả kết quả về phía Sender-SMTP.

SMTP cung cấp cơ chế chuyển th trực tiếp từ máy chủ của ngời gửi đến máy chủ của ngời nhận khi hai máy chủ đợc kết nối trên cùng một dịch vụ truyền thơng hoặc qua một hoặc nhiều Server-SMTP chuyển tiếp khi các máy chủ nguồn và máy chủ đích khơng cùng đợc kết nối tới cùng một dịch vụ truyền thơng.

Để thực

hiện đợc

khả

năng chuyển tiếp th tín trên mạng, cần phải cung cấp tên của máy chủ cũng nh tên của hộp th (mailbox) cuối cùng cần gửi tới cho SMTP Server.

SMTP cung cấp một tập các lệnh cho phép các máy tính trên mạng cĩ thể trao đổi thực tiếp các thơng tin theo một chuẩn qui định. Nhờ vào tập lệnh này, các hệ thống th tín khác nhau cĩ thể trao đổi dữ liệu th đợc với nhau. Mỗi lệnh đều cĩ cùng chiều dài bốn kí tự, hầu hết đều cĩ tham số kèm theo.

Các lệnh sử dụng trong việc gửi/nhận th tín tuân theo một cú pháp khắt khe. Đĩ là các thơng tin phản hồi luơn ở dạng mã số kèm theo là các mơ tả về kết quả thực hiện lệnh. Các lệnh và mã phản hồi khơng phân biệt chữ hoa và chữ thờng. Điều này cĩ nghĩa là một lệnh hoặc một thơng báo phản hồi cĩ thể ở dạng in hoa, in thờng hoặc trong bất kì một kiểu kết hợp nào giữa in hoa và in thờng.

Lu ý rằng điều này là khơng đúng với tên của ”user mailbox”. Với một số máy chủ, user name là phân biệt chữ hoa, thờng và việc thực hiện các lệnh SMTP cần phải quan tâm để đảm bảo sự thực hiện đúng đắn trong trờng hợp này. Tên của máy chủ cũng khơng phân biệt chữ hoa, thờng.

Các lệnh và thơng tin phản hồi đợc xây dựng bởi các kí tự từ bộ mã ASCII. Khi dịch vụ giao vận cung cấp kênh truyền thơng 8 bit, mỗi kí tự truyền đi sẽ chỉ sử dụng 7, bit cao nhất sẽ đợc xố về 0.

Mỗi phiên giao dịch SMTP phải trải qua một số giai đoạn. Các giai đoạn đĩ đợc thực hiện thơng qua các thủ tục SMTP, kèm theo đĩ là các thơng tin phản hồi:

• Thủ tục MAIL. • Thủ tục FORWARDING. • Các thủ tục MAILING và SENDING. • Các thủ tục OPENING và CLOSING. • Các mã trả lời của lệnh SMTP. 1.5.3. Thủ tục Mail

Để bắt đầu một phiên giao dịch th tín thì cần phải thực hiện thủ tục MAIL. Nĩ bao gồm 3 bớc:

• Lệnh MAIL đợc gửi đi kèm theo là tham số về địa chỉ ngời gửi th.

File System File System SMTP Commands / Replies Sender SMTP Sender SMTP Sender - SMTP

Mơ hình tổng quát sử dụng giao thức SMTP

Receiver SMTP Receiver SMTP Receiver - SMTP and Mail File System File System User User

• Lệnh RCPT đợc gửi đi kèm theo là tham số về địa chỉ ngời nhận th. Cĩ thể thực hiện nhiều lần lệnh này trong trờng hợp muốn gửi th cho nhiều ngời.

• Lệnh DATA đợc gửi đi để xác nhận bắt đầu gửi dữ liệu của th. Dới đây là phần chi tiết về 3 lệnh trên.

a. Lệnh MAIL FROM <reverse-path>

Tham số: là một xâu ký tự định danh mailbox của ngời gửi th. • Hạn chế: Chỉ cĩ thể thực hiện khi cha thực hiện chính lệnh này.

• Chi tiết: Lệnh này dùng để xác nhận ngời gửi th đồng thời thiết lập một phiên giao dịch SMTP với Receiver-SMTP (Server). Nĩ đa ra đờng dẫn <reverse- path> để sử dụng trong trờng hợp phiên giao dịch khơng thực hiện thành cơng. Ngợc lại, thơng tin về ngời gửi sẽ đợc lu lại.

Thơng tin phản hồi: 250 OK

Trờng hợp cịn lại bị lỗi.

Ví dụ:

S: MAIL FROM: <Smith@Alpha.edu> R: 250 OK

b. Lệnh RCPT TO <forward-path>

Tham số: là một xâu ký tự định danh mailbox của ngời nhận th.

Hạn chế: Chỉ cĩ thể thực hiện khi đã định danh ngời gửi th bằng lệnh MAIL. • Chi tiết: Lệnh này dùng để xác nhận ngời nhận th đợc chỉ định trong tham số

<forward-path>. Nếu Receiver-SMTP chấp nhận thì thơng tin về ngời gửi sẽ đ- ợc lu lại. Lệnh này cĩ thể thực hiện nhiều lần để xác nhận nhiều ngời nhận th. • Thơng tin phản hồi:

250 OK Trờng hợp cịn lại bị lỗi. Ví dụ S: RCPT TO: <Jones@Beta.gov> R: 250 OK S: rcpt to: <Green@Beta.gov> R: 550 No such user here

c. Lệnh DATA

Tham số: khơng.

Hạn chế: Chỉ cĩ thể thực hiện khi đã thực hiện thành cơng việc xác nhận ngời gửi và ngời nhận th.

Chi tiết: Lệnh này dùng để xác nhận bắt đầu việc gửi nội dung th. Nếu SMTP Receiver chấp nhận, nĩ sẽ tiến hành nhận và lu trữ tất cả các dịng văn bản đợc gửi đến. Để kết thúc việc gửi dữ liệu, SMTP Sender cần gửi một dịng chỉ chứa một dấu chấm ”.”. Lu ý rằng phần dữ liệu sau lệnh DATA bao gồm tồn bộ phần header của th (nh các trờng Date, Subject, CC, From, ...) cũng nh nội dung th.

Thơng tin phản hồi: 250 OK

Ví dụ:

R: 354 Start mail input; end with <CRLF>.<CRLF> S:. . . Sends body of mail message . . .

S: <CR><LF>.<CR><LF> R: 250 OK

S: QUIT

S: 221 Beta.gov Service Closing Transmission Channel

Sau đây là một ví dụ minh hoạ cho một phiên giao dịch th tín SMTP. Phần thơng tin phía Server đợc bắt đầu bằng R: và mã số, tiếp sau là thơng tin. Phần phía Client là các lệnh thực thi của SMTP bắt đầu bằng S:. Ta sẽ sử dụng dịch vụ Telnet để kích hoạt dịch vụ th tín trên cổng 25 (SMTP).

d. Ví dụ về một phiên giao dịch SMTP

R: 220 BERKELEY.ARPA Simple Mail Transfer Service Ready S: HELO USC-ISIF.ARPA

R: 250 BERKELEY.ARPA

S: MAIL FROM: <Postel@USC-ISIF.ARPA> R: 250 OK

S: RCPT TO: <fabry@BERKELEY.ARPA> R: 250 OK

S: RCPT TO: <eric@BERKELEY.ARPA>

R: 552 Recipient storage full, try again in another transaction S: DATA

R: 354 Start mail input; end with <CRLF>.<CRLF> S: Blah blah blah...

S: ...etc. etc. etc. S: .

R: 250 OK

S: MAIL FROM: <Postel@USC-ISIF.ARPA> R: 250 OK

S: RCPT TO: <eric@BERKELEY.ARPA> R: 250 OK

S: DATA

R: 354 Start mail input; end with <CRLF>.<CRLF> S: Blah blah blah...

S: ...etc. etc. etc. S: .

R: 250 OK S: QUIT

R: 221 BERKELEY.ARPA Service closing transmission channel

1.5.4. Thủ tục Forwarding

Trong một số trờng hợp địa chỉ trong tham số <forward-path> bị sai, nhng SMTP Receiver lại biết chính xác địa chỉ đích thì các thơng tin phản hồi cĩ thể đợc sử dụng để cho phép ngời gửi xác nhận lại địa chỉ đúng.

251 User not local; will forward to <forward-path>

Thơng tin phản hồi này chỉ ra rằng mailbox của ngời nhận thuộc một máy chủ (host) khác. Nh vậy, SMTP Receiver sẽ chỉ ra <forward-path> chính xác để sử dụng và nĩ sẽ chịu trách nhiệm gửi th này.

Thơng tin phản hồi này chỉ ra rằng, SMTP Receiver biết đợc mailbox của ngời nhận thuộc một máy chủ khác. Nĩ sẽ đa ra địa chỉ chính xác để sử dụng nhng trong tr- ờng hợp này nĩ khơng thực hiện việc gửi th đi. Chính vì vậy, ngời gửi cần phải xác nhận lại các thơng tin cho chính xác theo thơng tin phản hồi của SMTP Receiver hoặc trả lại thơng báo lỗi cho ngời gửi ban đầu.

Sau đây là ví dụ về cách sử dụng thủ tục này: S: RCPT TO:<Postel@USC-ISI.ARPA>

R: 251 User not local;

will forward to <Postel@USC-ISIF.ARPA> or

S: RCPT TO:<Paul@USC-ISIB.ARPA> R: 551 User not local;

please try <Mockapetris@USC-ISIF.ARPA>

1.5.5. Các thủ tục Mailing và Sending

SMTP chủ yếu cung cấp các chức năng phát th đến mailbox của ngời sử dụng. Tuy nhiên, nĩ cũng cĩ một số các chức năng thực hiện việc chuyển th đến terminal của ngời sử dụng.

Việc phát th đến mailbox của ngời sử dụng đợc gọi là ”mailing”, cịn việc phát th đến terminal đợc gọi là ”sending”. Dịch vụ sending là phần mở rộng của một hệ thống th tín điện tử.

Cĩ ba dạng câu lệnh đợc định nghĩa để hỗ trợ cho các tùy chọn sending. Các câu lệnh này đợc dùng trong các phiên giao dịch SMTP thay thế cho câu lệnh MAIL và báo cho Receiver-SMTP biết ý nghĩa đặc biệt của phiên giao dịch này.

a. Lệnh SEND FROM <reverse-path>

Tham số: địa chỉ terminal của ngời nhận.

Chi tiết: Lệnh này yêu cầu dữ liệu của th đợc phân phát tới terminal của ngời sử dụng. Nếu ngời sử dụng cha kích hoạt (hoặc khơng chấp nhận kiểu giao dịch này) thì Receiver-SMTP sẽ gửi trả mã 450. Phiên giao dịch là thành cơng nếu th đợc chuyển đến terminal của ngời sử dụng.

Thơng tin phản hồi: 450 OK

b. Lệnh SOML FROM <reverse-path>

Tham số: địa chỉ terminal của ngời nhận.

Chi tiết: Lệnh này (viết tắt của chữ Send Or MaiL) yêu cầu dữ liệu của th đợc phân phát tới terminal của ngời sử dụng trong trờng hợp ngời sử dụng kích hoạt (và chấp nhận kiểu giao dịch này). Trong trờng hợp ngợc lại, nghĩa là ngời sử dụng cha kích hoạt thì dữ liệu của th sẽ đợc chuyển đến mailbox của ngời nhận. Phiên giao dịch thành cơng nếu th đợc chuyển đến terminal của ngời sử dụng.

c. Lệnh SAML FROM <reverse-path>

Tham số: địa chỉ terminal của ngời nhận.

Chi tiết: Lệnh này (viết tắt của chữ Send And MaiL) yêu cầu dữ liệu của th đợc phân phát tới terminal của ngời sử dụng trong trờng hợp ngời sử dụng kích hoạt (và chấp nhận kiểu giao dịch này). Trong bất cứ trờng hợp nào thì dữ liệu

của th cũng sẽ đợc chuyển đến mailbox của ngời nhận. Phiên giao dịch thành cơng nếu th đợc chuyển đến mailbox của ngời sử dụng.

1.5.6. Các thủ tục Opening và Closing

Khi một phiên giao dịch th tín đợc mở, cần phải cĩ sự trao đổi thơng tin giữa các máy chủ (host) để đảm bảo sự chính xác trong giao dịch. Cĩ hai lệnh để thực hiện việc đĩng/mở một phiên giao dịch.

a. HELO <domain>

Tham số: tên domain của máy chủ thực hiện việc gửi th (cĩ thể khơng cĩ). • Chi tiết: Lệnh này dùng để xác nhận domain máy chủ SMTP Sender. • Thơng tin phản hồi:

250 <domain>

Ví dụ:

R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready S: HELO USC-ISIF.ARPA

R: 250 BBN-UNIX.ARPA

b. QUIT

Tham số: khơng.

Chi tiết: Lệnh này dùng để kết thúc phiên giao dịch SMTP. • Thơng tin phản hồi:

250 CRLF Ví dụ:

S: QUIT

R: 221 BBN-UNIX.ARPA Service closing transmission channel

1.5.7. Mã trả lời của các câu lệnh SMTP

Trong một phiên giao dịch SMTP, phía SMTP Sender gửi các lệnh yêu cầu cịn phía SMTP Receiver sẽ gửi trả các thơng tin phản hồi và các mã phản hồi.

Để đảm bảo tính thống nhất truyền thơng trong quá trình truyền th, đồng thời để đảm bảo phía SMTP Sender luơn biết đợc chính xác trạng thái của SMTP Receiver, mọi câu lệnh yêu cầu đều phải đợc trả lời bằng các mã thơng tin phản hồi chính xác.

Bảng Mã thơng tin phản hồi của SMTP

Mã thơng tin phản hồi Thơng tin kèm theo

500 Syntax error or Command unregconized

501 Syntax error in parameters or arguments

503 Bad sequence of command

504 Command parameter not implement

211 System status or System help reply

214 Help message

220 Simple Mail Transfer Service ready 221 Service closing transmission channel

421 Service not available, closing transmission channel

250 OK

251 User not local; will forward to <forward-path> 450 Mailbox unavailable (not found or no access) 551 User not local; please try <forward-path>

452 Insufficent system storage

552 Request mail action aborted

553 Mailbox name not allow (mailbox syntax incorrect) 354 Start mail input, end with <CRLF>.<CRLF>

554 Transaction failed

Một mã thơng tin phản hồi là một số cĩ 3 chữ số và tiếp theo là một chuỗi văn bản mơ tả về mã đĩ. Bảng trên đây sẽ trình bày chi tiết các thơng tin phản hồi:

Truyền thơng giữa Sender-SMTP và Receiver-SMTP đợc coi nh một cuộc hội thoại, đợc điều khiển bởi Sender-SMTP. Nh vậy, Sender-SMTP đa ra một lệnh yêu cầu và Receiver- SMTP sẽ trả lại một mã thơng tin phản hồi. Sau khi Sender-SMTP đa ra lệnh yêu cầu, nĩ phải đợi thơng tin phản hồi từ Receiver-SMTP rồi mới đa ra lệnh tiếp theo.

Trong các mã thơng tin phản hồi, mã phản hồi quan trọng nhất là 220. Nĩ đặc tr- ng cho việc thực hiện thành cơng yêu cầu.

1.6. PHÂN TÍCH GIAO THệÙC POP3 (RFC 1081,1082)1.6.1. Giới thiệu 1.6.1. Giới thiệu

Giao thức POP3 cho phép một máy trạm cĩ thể truy nhập để lấy th trên máy chủ. Nĩ định nghĩa cách thức giao tiếp với POP3 Server bởi các lệnh chuẩn đợc quy định trong RFC 1081 để lấy th về.

1.6.2. Mơ hình hoạt động phiên giao dịch

Vào thời điểm bắt đầu, tiến trình phía Server bắt đầu dịch vụ POP3 bằng cách ”lắng nghe” trên cổng TCP 110. Thuật ngữ ”lắng nghe” ở đây đợc hiểu theo nghĩa là tiến trình phía Server luơn luơn tiếp nhận các thơng tin đến ở cổng dịch vụ mà nĩ cung cấp - trong trờng hợp này là cổng dịch vụ 110 - xử lý và gửi kết quả về cho tiến trình yêu cầu dịch vụ phía Client.

Khi một tiến trình phía Client muốn sử dụng dịch vụ, nĩ thiết lập một kết nối TCP tới máy chủ phía Server. Khi kết nối đợc thiết lập, POP3 Server gửi một thơng báo chấp nhận và sau đĩ tiến trình phía Client và POP3 Server cĩ thể trao đổi các lệnh cũng nh các thơng tin phản hồi cho đến khi kết nối bị hủy bỏ hoặc phiên giao dịch kết thúc.

Các lệnh trong POP3 bao gồm từ khĩa, cĩ thể theo sau là một hoặc nhiều tham số. Tất cả các lệnh đều đợc kết thúc bởi cặp ký tự CRLF. Từ khĩa và các tham số là các kí tự in đợc trong bảng mã kí tự ASCII, giữa chúng đợc phân cách bởi một kí tự dấu cách trống. Từ khĩa cĩ thể dài ba hoặc bốn kí tự, cịn các tham số cĩ thể dài tới bốn m- ơi kí tự.

Thơng tin phản hồi của POP3 bao gồm một thơng báo trạng thái và một từ khĩa cĩ thể theo sau một số thơng tin thêm. Tất cả các thơng tin phản hồi đều đợc kết thúc bởi cặp ký tự CRLF.

Cĩ hai thơng báo trạng thái là: Xác định (”+OK”) để xác nhận thành cơng và phủ

Một phần của tài liệu qt (Trang 27)

Tải bản đầy đủ (PDF)

(91 trang)