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

Một phần của tài liệu Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - Dịch vụ thư tín điện tử và cài đặt một chương trình mang tính thử nghiệm do dịch vụ thư tín điện tử pot (Trang 43 - 151)

1.5.1. Giới thiƯu chung

Mơc đích cđa giao thc SMTP (Simple Mail Transfer Protocol) là đĨ truyỊn thư đáng tin cy và c hiƯu quả.

SMTP đc lp vỊ hƯ thng con truyỊn thông đỈc biƯt và các yêu cầu ch tin cy theo kênh lung dữ liƯu tuần t.

ĐỈc tính quan trng cđa SMTP là khả năng chuyĨn tip 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 cp mt môi trưng truyỊn thông liên quá trình (interprocess communication environment ư IPCE). IPCE c thĨ là mt mạng, nhiỊu mạng hay mt tp hỵp con cđa mt mạng. ĐiỊu quan trng đĨ nhn thy rằng các hƯ thng truyỊn thông (IPCEs) không phải là viƯc truyỊn thông tương ng mt tới mt (oneưtoưone) với các mạng. Mt tin trình c thĨ truyỊn thông qua lại trc tip với mt tin trình khác thông qua bt k mt IPCE đã đưỵc bit. Thư tín là mt ng dơng hay là viƯc sư dơng truyỊn thông liên tin trình. Thư tín c thĨ đưỵc truyỊn qua giữa các tin trình theo các IPCEs khác nhau bắng cách chuyĨn tip qua mt tin tin trình đưỵc kt ni tới hai hay nhiỊu IPCEs. ĐỈc biƯt hơn nữa, thư tín c thĨ đưỵc chuyĨn tip giữa các máy chđ (hosts) trên các hƯ thng truyỊn thông khác nhau bi mt máy chđ trên cả hai hƯ thng truyỊn thông.

Giao thc SMTP định ngha cách đĨ chuyĨn giao thư tín trc tip giữa các máy tính trên mạng. N c hai vai trò là gưi (senderưSMTP) và nhn (receiverưSMTP) thư. Thông thưng, bên gưi thit lp mt liên kt TCP với bên nhn, và bên nhn sư dơng cỉng truyỊn thông s 25 đĨ cung cp dịch vơ thư tín điƯn tư.

Trong mt phiên giao dịch thư tín, bên gưi và bên nhn trao đỉi tuần t các lƯnh và các thông tin phản hi.

SMTP đưỵc thit k da trên mô hình truyỊn thông sau: khi ngưi sư dơng (user) gưi mt yêu cầu dịch vơ thư tín, trước tiên SenderưSMTP thành lp mt kênh truyỊn thông hai chiỊu tới ReceiverưSMTP. ReceiverưSMTP c thĨ là đích cui cng hoỈc là mt 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ả kt quả vỊ phía SenderưSMTP.

SMTP cung cp cơ ch chuyĨn thư trc tip t máy chđ cđa ngưi gưi đn máy chđ cđa ngưi nhn khi hai máy chđ đưỵc kt ni trên cng mt dịch vơ truyỊn thông hoỈc qua mt hoỈc nhiỊu ServerưSMTP chuyĨn tip khi các máy chđ ngun và máy chđ đích không cng đưỵc kt ni tới cng mt dịch vơ truyỊn thông.

ĐĨ thc hiƯn đưỵc khả năng chuyĨn tip thư tín trên mạng, cần phải cung cp tên cđa máy chđ cịng như tên cđa hp thư (mailbox) cui cng cần gưi tới cho SMTP Server.

SMTP cung cp mt tp các lƯnh cho phép các máy tính trên mạng c thĨ trao đỉi thc tip các thông tin theo mt chun qui định. Nh vào tp lƯnh này, các hƯ thng thư tín khác nhau c thĨ trao đỉi dữ liƯu thư đưỵc với nhau. Mỗi lƯnh đỊu c cng chiỊu dài bn kí t, hầu ht đỊu c tham s kèm theo.

Các lƯnh sư dơng trong viƯc gưi/nhn thư tín tuân theo mt cĩ pháp khắt khe. Đ là các thông tin phản hi luôn dạng mã s kèm theo là các mô tả vỊ kt quả thc hiƯn lƯnh. Các lƯnh và mã phản hi không phân biƯt chữ hoa và chữ thưng. ĐiỊu này c ngha là

File System SMTP Commands / Replies Sender SMTP Sender ư SMTP

Mô hình tỉng quát sư dơng giao thc SMTP

Receiver SMTP Receiver ư SMTP and Mail File System User

mt lƯnh hoỈc mt thông báo phản hi c thĨ dạng in hoa, in thưng hoỈc trong bt kì mt kiĨu kt hỵp nào giữa in hoa và in thưng.

Lưu ý rằng điỊu này là không đĩng với tên cđa ”user mailbox”. Với mt s máy chđ, user name là phân biƯt chữ hoa, thưng và viƯc thc hiƯn các lƯnh SMTP cần phải quan tâm đĨ đảm bảo s thc 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 hi đưỵc xây dng bi các kí t t b mã ASCII. Khi dịch vơ giao vn cung cp kênh truyỊn thông 8 bit, mỗi kí t truyỊn đi s ch sư dơng 7, bit cao nht s đưỵc xoá vỊ 0.

Mỗi phiên giao dịch SMTP phải trải qua mt s giai đoạn. Các giai đoạn đ đưỵc thc hiƯn thông qua các thđ tơc SMTP, kèm theo đ là các thông tin phản hi:

 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ả li cđa lƯnh SMTP.

1.5.3. Thđ tơc Mail

ĐĨ bắt đầu mt phiên giao dịch thư tín thì cần phải thc hiƯn thđ tơc MAIL. N bao gm 3 bước:

 LƯnh MAIL đưỵc gưi đi kèm theo là tham s vỊ địa ch ngưi gưi thư.

 LƯnh RCPT đưỵc gưi đi kèm theo là tham s vỊ địa ch ngưi nhn thư. C thĨ thc hiƯn nhiỊu lần lƯnh này trong trưng hỵp mun gưi thư cho nhiỊu ngưi.

Dưới đây là phần chi tit vỊ 3 lƯnh trên.

a. LƯnh MAIL FROM <reverseưpath>

Tham s: là mt xâu ký t định danh mailbox cđa ngưi gưi thư.

Hạn ch: Ch c thĨ thc hiƯn khi chưa thc hiƯn chính lƯnh này.

 Chi tit: LƯnh này dng đĨ xác nhn ngưi gưi thư đng thi thit lp mt phiên giao dịch SMTP với ReceiverưSMTP (Server). N đưa ra đưng dn <reverseưpath> đĨ sư dơng trong trưng hỵp phiên giao dịch không thc hiƯn thành công. Ngưỵc lại, thông tin vỊ ngưi gưi s đưỵc lưu lại.

Thông tin phản hi: (adsbygoogle = window.adsbygoogle || []).push({});

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à mt xâu ký t định danh mailbox cđa ngưi nhn thư.

Hạn ch: Ch c thĨ thc hiƯn khi đã định danh ngưi gưi thư bằng lƯnh MAIL.

Chi tit: LƯnh này dng đĨ xác nhn ngưi nhn thư đưỵc ch định trong tham s

<forwardưpath>. Nu ReceiverưSMTP chp nhn thì thông tin vỊ ngưi gưi s đưỵc lưu lại. LƯnh này c thĨ thc hiƯn nhiỊu lần đĨ xác nhn nhiỊu ngưi nhn thư.

Thông tin phản hi:

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Ĩ thc hiƯn khi đã thc hiƯn thành công viƯc xác nhn ngưi gưi

và ngưi nhn thư.

Chi tit: LƯnh này dng đĨ xác nhn bắt đầu viƯc gưi ni dung thư. Nu SMTP

Receiver chp nhn, n s tin hành nhn và lưu trữ tt cả các dòng văn bản đưỵc gưi đn. ĐĨ kt thĩc viƯc gưi dữ liƯu, SMTP Sender cần gưi mt dòng ch cha mt du chm ”.”. Lưu ý rằng phần dữ liƯu sau lƯnh DATA bao gm toàn b phần header cđa thư (như các trưng Date, Subject, CC, From, ...) cịng như ni dung thư.

Thông tin phản hi:

250 OK

Ví dơ:

S: DATA

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

R: 250 OK S: QUIT

S: 221 Beta.gov Service Closing Transmission Channel

Sau đây là mt ví dơ minh hoạ cho mt 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, tip sau là thông tin. Phần phía Client là các lƯnh thc 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Ị mt phiên giao dịch SMTP

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

R: 250 BERKELEY.ARPA (adsbygoogle = window.adsbygoogle || []).push({});

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: .

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 mt s trưng hỵp địa ch trong tham s <forwardưpath> bị sai, nhưng SMTP Receiver lại bit chính xác địa ch đích thì các thông tin phản hi c thĨ đưỵc sư dơng đĨ cho phép ngưi gưi xác nhn lại địa ch đĩng.

Thông tin phản hi này ch ra rằng mailbox cđa ngưi nhn thuc mt máy chđ (host) khác. Như vy, 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.

551 User not local; please try <forwardưpath>

Thông tin phản hi này ch ra rằng, SMTP Receiver bit đưỵc mailbox cđa ngưi nhn thuc mt máy chđ khác. N s đưa ra địa ch chính xác đĨ sư dơng nhưng trong trưng hỵp này n không thc hiƯn viƯc gưi thư đi. Chính vì vy, ngưi gưi cần phải xác nhn lại các thông tin cho chính xác theo thông tin phản hi 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đ yu cung cp các chc năng phát thư đn mailbox cđa ngưi sư dơng. Tuy nhiên, n cịng c mt s các chc năng thc 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 gi là ”mailing”, còn viƯc phát thư đn terminal đưỵc gi là ”sending”. Dịch vơ sending là phần m rng cđa mt hƯ thng thư tín điƯn tư.

C ba dạng câu lƯnh đưỵc định ngha đĨ hỗ trỵ cho các ty chn sending. Các câu lƯnh này đưỵc dng trong các phiên giao dịch SMTP thay th cho câu lƯnh MAIL và báo cho ReceiverưSMTP bit ý ngha đỈ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 nhn. (adsbygoogle = window.adsbygoogle || []).push({});

Chi tit: 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. Nu ngưi sư dơng chưa kích hoạt (hoỈc không chp nhn 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 nu thư đưỵc chuyĨn đn terminal cđa ngưi sư dơng.

Thông tin phản hi:

450 OK

b. LƯnh SOML FROM <reverseưpath>

Tham s: địa ch terminal cđa ngưi nhn.

Chi tit: LƯnh này (vit 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à chp nhn kiĨu giao dịch này). Trong trưng hỵp ngưỵc lại, ngha là ngưi sư dơng chưa kích hoạt thì dữ liƯu cđa thư s đưỵc chuyĨn đn mailbox cđa ngưi nhn. Phiên giao dịch thành công nu 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 nhn.

Chi tit: LƯnh này (vit 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à chp nhn kiĨu giao dịch này). Trong bt 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 nhn. Phiên giao dịch thành công nu 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 mt 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 đĨ thc hiƯn viƯc đng/m mt phiên giao dịch.

a. HELO <domain>

Tham s: tên domain cđa máy chđ thc hiƯn viƯc gưi thư (c thĨ không c).

Chi tit: LƯnh này dng đĨ xác nhn domain máy chđ SMTP Sender.

Thông tin phản hi:

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 tit: LƯnh này dng đĨ kt thĩc phiên giao dịch SMTP.

Thông tin phản hi:

250 CRLF (adsbygoogle = window.adsbygoogle || []).push({});

S: QUIT

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

1.5.7. Mã trả li cđa các câu lƯnh SMTP

Trong mt 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 hi và các mã phản hi.

ĐĨ đảm bảo tính thng nht truyỊn thông trong quá trình truyỊn thư, đng thi đĨ đảm bảo phía SMTP Sender luôn bit đưỵc chính xác trạng thái cđa SMTP Receiver, mi câu lƯnh yêu cầu đỊu phải đưỵc trả li bằng các mã thông tin phản hi chính xác.

Bảng Mã thông tin phản hi cđa SMTP

Mã thông tin phản hi 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

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

Mt mã thông tin phản hi là mt s c 3 chữ s và tip theo là mt chuỗi văn bản mô tả vỊ mã đ. Bảng trên đây s trình bày chi tit các thông tin phản hi:

TruyỊn thông giữa SenderưSMTP và ReceiverưSMTP đưỵc coi như mt cuc hi thoại, đưỵc điỊu khiĨn bi SenderưSMTP. Như vy, SenderưSMTP đưa ra mt lƯnh yêu cầu và Receiverư SMTP s trả lại mt mã thông tin phản hi. Sau khi SenderưSMTP đưa ra lƯnh yêu cầu, n phải đỵi thông tin phản hi t ReceiverưSMTP ri mới đưa ra lƯnh tip theo.

Trong các mã thông tin phản hi, mã phản hi quan trng nht là 220. N đỈc trưng cho viƯc thc 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 thc POP3 cho phép mt máy trạm c thĨ truy nhp đĨ ly thư trên máy chđ. N định ngha cách thc giao tip với POP3 Server bi các lƯnh chun đưỵc quy định trong RFC 1081 đĨ ly thư vỊ.

1.6.2. Mô hình hoạt đng phiên giao dịch (adsbygoogle = window.adsbygoogle || []).push({});

Vào thi điĨm bắt đầu, tin 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. Thut ngữ ”lắng nghe” đây đưỵc hiĨu theo ngha là tin trình phía Server luôn luôn tip nhn các thông tin đn cỉng dịch vơ mà n cung cp ư trong trưng hỵp này là cỉng dịch vơ 110 ư xư lý và gưi kt quả vỊ cho tin trình yêu cầu dịch vơ phía Client.

Khi mt tin trình phía Client mun sư dơng dịch vơ, n thit lp mt kt ni TCP tới máy chđ phía Server. Khi kt ni đưỵc thit lp, POP3 Server gưi mt thông báo chp nhn và sau đ tin 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 hi cho đn khi kt ni bị hđy b hoỈc phiên giao dịch kt thĩc.

Các lƯnh trong POP3 bao gm t kha, c thĨ theo sau là mt hoỈc nhiỊu tham s. Tt cả các lƯnh đỊu đưỵc kt thĩc bi cỈp ký t CRLF. T kha 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 bi mt kí t du cách trng. T kha c thĨ dài ba hoỈc bn kí t, còn các tham s c thĨ dài tới bn mươi kí t.

Thông tin phản hi cđa POP3 bao gm mt thông báo trạng thái và mt t kha c thĨ theo sau mt s thông tin thêm. Tt cả các thông tin phản hi đỊu đưỵc kt thĩc bi cỈp ký t CRLF.

C hai thông báo trạng thái là: Xác định (”+OK”) đĨ xác nhn thành công và phđ định (”ưERR”) đĨ xác nhn trong trưng hỵp c lỗi.

Các thông tin phản hi cho các lƯnh thc t là nhiỊu dòng. Trong những trưng hỵp này, sau khi gưi dòng đầu tiên cđa thông tin phản hi và mt cỈp CRLF, bt c mt dòng thêm vào nào đưỵc gưi thì đỊu phải kt thĩc bằng cỈp CRLF. Khi tt cả các thông tin phản hi đỊu đã đưỵc gưi, mt dòng cui cng đưỵc gưi, bao gm mã kt thĩc (mã thp phân

Một phần của tài liệu Đồ án tốt nghiệp - Phân tích thiết kế hệ thống - Dịch vụ thư tín điện tử và cài đặt một chương trình mang tính thử nghiệm do dịch vụ thư tín điện tử pot (Trang 43 - 151)