Tìm hiểu giao thức SMTP POP3

34 2.8K 26
Tìm hiểu giao thức SMTP POP3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

CHƯƠNG 3 CÁC NGHI THỨC TRUYỀN NHẬN χ Công việc phát triển các hệ thống Mail (Mail System) đòi hỏi hình thành các chuẩn về Mail. Điều này giúp cho việc gởi nhận các thông điệp được đảm bảo , làm cho những người ở các nơi khác nhau có thể trao đổi thông tin cho nhau. Có 2 chuẩn về Mail quan trọng nhất và được sử dụng nhiều nhất từ trước đến nay là X.400 và SMTP ( Simple Mail Transfer Protocol). SMTP thường đi kèm với chuẩn POP3 và do hạn chế của SMTP mà ngày nay người ta dùng chuẩn mở rộng của nó là ESMTP (Extended SMTP). Mục đích chính của X.400 là cho phép các mail có thể được truyền nhận thông qua các loại mạng khác nhau bất chấp cấu hình phần cứng, hệ điều hành mạng , giao thức truyền dẫn được dùng. Còn mục đích của chuẩn SMTP miêu tả cách điều khiển các thông điệp trên mạng Internet. Điều quan trọng của chuẩn SMTP là giả định máy nhận phải dùng giao thức SMTP gởi Mail cho 1 Server luôn luôn hoạt động. Sau đó, người nhận sẽ đến lấy Mail của họ từ Server khi nào họ muốn dùng giao thức POP (Post Office Protocol), ngày nay POP được cải tiến thành POP3 (Post Officce Protocol vertion 3). Các giao thức Mail thông dụng : chuẩn X.400, chuẩn MAIP, SMTP (ESMTP), POP3 . Ở đây chỉ trình bày chi tiết về POP3 và SMTP . Phần 1 Giao thức SMTP (Simple Mail transfer Protocol ) *** Bộ phận chính của hệ thống Internet Mail chính là các MTA ( Message Transfer Agent), các MTA giữ 1 vai trò quan trọng trong việc chuyển giao email. Ví dụ sau khi một người sử dụng gửi một bức mail tới hàng đợi message, MTA sẽ lấy đó và chuyển nó tới một MTA khác. Quá trình đó sẽ tiếp tục tiếp diễn cho đến khi message đến được nơi nhận. Để có thể liên lạc với các MTA thông qua kết nối TCP các MTA của hệ thống Internet Mail có thể sử dụng nhiều nghi thức khác nhau để chuyển giao các thông tin (X400,ESMTP, ), Nhưng ở đây ta chỉ xét nghi thức SMTP. Đây là một nghi thức cho phép chuyển mail từ điểm này sang điểm khác cho đến đích trên mạng Internet. Nó được cấu tạo bởi tập các câu lệnh để Client có thể yêu cầu Sever thực hiện một số tác vụ và tập các câu trả lời để Server hồi đáp lại cho Client về kết quả thực hiện các tác vụ đó. Một chương trình muốn gởi được mail thì nó phải biết địa chỉ của một SMTP server. Server này có nhiệm vụ chuyển mail đến nơi cần thiết. I- Giới thiệu Một đặc trưng quan trọng của SMTP là khả năng chia ca Mail qua môi trường dịch vụ giao chuyển, một dịch vụ giao chuyển cung cấp một môi trường truyền thông liên quá trình (Interprocess Communication Environment –IPCE ). Một môi trường truyền thông liên quá trình có thể bao gồm một Network, vài Network, hay một tập hợp con của Network. Điều đó quan trọng cho việc thực hiện hệ thống giao chuyển (hay các IPCE) one-to-one với Network, một quá trình có thể giao tiếp với một quá trình khác thông qua việc nhận biết IPCE. Mail là ứng dụng hay là cách dùng của giao tiếp liên quá trình, Mail có thể giao tiếp giữa các quá trình trong những IPCE khác bằng cách chia ca thông qua một quá trình được kết nối đến hai (hay nhiều ) IPCE. Chi tiết hơn Mail có thể chia ca giữa những Host trên hệ thống giao chuyển khác nhau bằng một Host trên cả hai hệ thống chuyển giao. II- Mô hình SMTP SMTP được thiết kế dựa trên mô hình giao tiếp sau: như kết quả của một yêu cầu Mail của user . Sender- SMTP thiết lập một kênh hai đường vận chuyển đến một receiver- SMTP . Receiver- SMTP có thể là đích đến cuối cùng hay một trung gian. Những lệnh SMTP được sinh ra bởi Sender-SMTP gửi đến Receiver- SMTP. Những reply SMTP được gửi từ Receiver- SMTP đến Sender- SMTP trong sự đáp ứng cho những lệnh đó. Khi một kênh giao chuyển được thiết lập sender-SMTP gửi đi 1 lệnh Mail biểu thị cho Sender của mail đó. Nếu Receiver-SMTP có thể chấp nhận mail, nó trả lời với một OK reply. Sau đó Sender-SMTP gửi một lệnh RCPT nhận diện Receiver mail nếu Receiver-SMTP có thể chấp nhận mail nó trả lời với 1 OK reply nếu không nó sẽ lời với 1 reply bác bỏ receiver đó (nhưng không phải toàn bộ sự giao dịch đó). Sender- SMTP và Receiver- SMTP có thể điều đình với vài recipient, khi những recipient đã được dàn xếp Sender-SMTP gửi mail data kết thúc với một chuỗi đặc biệt nếu receiver xử lý mail data thành công nó trả lời với 1 OK reply. Cuộc hội thoại một cách chủ ý lock –step (one-at-a- time). Sơ đồ trên là mô hình cho cách dùng SMTP. SMTP cung cấp những cơ chế giao chuyển Mail một cách trực tiếp từ Host của User gửi đến host của user nhận khi cả hai host được kết nối đến cùng dịch vụ giao chuyển hay qua nhiều SMTP-Sever tiếp vận khi host xuất phát hay đích đến không được kết nối đến cùng dịch vụ chuyển giao. Để có thể cung cấp khả năng tiếp vận SMTP-Sever phải được cung cấp tên của host đến cùng chẳng hạn như hạn của Mailhost đến . Đối số của lệnh mail là 1 reverse-path nó đặc tả mail đó từ đâu đến; đối số cho RCPT là 1 Forward-path nó đặc tả mail đó đi đến đâu. Forward-path là một lộ trình nguồn, reverse-path là một lộ trình trở về (nó có thể được dùng để trả về một message cho sender- khi xảy ra lỗi với 1 message được tiếp vận). Khi cùng một message được gửi cho nhiều recipient SMTP khuyến khích chuyển giao chỉ một bản sao của data cho tất cả các Receiver ở cùng một host đích. Sender SMTP Receiver SMTP User File System File Syste m SMTP Commands/Replies and Mail Sender-SMTP Receiver-SMTP Những command và reply mail có những cú pháp khắc khe. Những reply cũng có một mã số. Trong những thí dụ theo sau sẽ xuất hiện những lệnh (commands) và những trả lời (replies) , một danh sách các lệnh và reply hoàn chỉnh trong phần 4. Các command và reply không phân biệt kiểu chữ hoa hay thường. Lưu ý, điều này không đúng với tên của User mailbox. Cho một số host tên của user có phân biệt kiểu chữ, SMTP phải thi hành đầy đủ việc nhận kiểu chữ và giữ gìn kiểu chữ của những user name như chúng đã xuất hiện trong những đối số của mailbox. Host names không phân biệt kiểu chữ. Các command và reply là những ký tự được tạo ra từ tập ký tự ASCII{1}, khi dịch vụ vận chuyển cung cấp một kênh chuyển giao 8 bit (octet). Mỗi một ký tự 7 bit được truyền đúng bằng cách chuyển nó về hệ 8 (octet) với bit có thứ tự cao nhất bị xóa về 0. Khi đặc tả cấu trúc thông thường của command và reply, một đối số (hay một ký hiệu đặc biệt ) sẽ được biểu thị bằng một biến meta-linguistic (hay một hằng số), ví dụ như : “<string>”, hay “<reverse-path>”. Ở đây dấu ngoặc nhọn chỉ định chúng là những biến meta-linguistic. Tuy nhiên các đối số thì dùng dấu ngoặc nhọn một cách literal. Ví dụ như, một reverse-path thực được bao trong dấu ngoặc nhọn như, “<John.Smith@USC-ISI.ARPA>” là một trường hợp của <reverse-path> (dấu ngoặc nhọn được giao chuyển trong command và reply là mã thực của nó). III . Mail 1- Khái quát : Có 3 bước cho sự giao dịch SMTP mail. Giao dịch được bắt đầu với yêu cầu Mail mang sự nhận diện sender, tiếp theo sau là một chuỗi của một hay nhiều lệnh RCPT trao những thông tin của receiver, sau đó một lệnh DATA cho mail data.Và cuối cùng là phần chỉ định kết thúc mail data xác nhận giao dịch đó.  Bước đầu tiên trong thủ tục là lệnh MAIL <reverse-path> chứa mailbox nguồn MAIL <SP> FROM : <reverse-path> <CRLF> Lệnh này báo cho receiver biết một giao dịch mail mới sẽ bắt đầu và để reset tất cả các bảng trạng thái và các buffer của nó bao gồm tất cả recipient hay mail data. Nó phát ra reverse-path có thể được dùng để báo lỗi. Nếu được chấp nhận receiver-SMTP trả về một reply 250 OK. <Reverse-path> có thể chứa nhiều hơn một mailbox.<Reverse-path> là một lộ trình nguồn trở về liệt kê các host và mailbox nguồn. Host đầu tiên trong reverse-path sẽ là host gữi lệnh này.  Bước thứ hai trong thủ tục này là lệnh RCPT RCPT <SP> To : <forward-path> <CRLF> Lệnh này phát đi một forward-path nhận diện recipient. Nếu được chấp nhận receiver-SMTP trả về một reply 250 OK. Và lưu lại forward-path. Nếu recipient không nhận biết thì receiver trả về reply 550 Failure. Bước thứ hai của thủ tục này có thể lặp lại nhiều lần. Forward-path có thể chứa nhiều hơn một mailbox. Forward-path là lộ trình nguồn liệt kê các host và mailbox đích. Host đầu tiên trong <forword-path> sẽ là host nhận lệnh này.  Bước thứ ba trong thủ tục là lệnh DATA DATA <CRLF> Nếu chấp nhận receiver-SMTP trả về một reply 354 và coi tất cả các dòng nối tiếp đó là message text. Khi văn bản cuối cùng được nhận và lưu trữ receiver-SMTP gửi một reply 250 OK. Kể từ mail data được gửi trên kênh chuyển giao, điểm kết thúc của mail data phải được chỉ định để hội thoại command và reply có thể bắt đầu trở lại. SMTP chỉ định kết thúc của mail data bằng cách gửi một dòng chứa chỉ một dấu chấm. Chú ý rằng mail data bao gồm những mục (item) memo header chẳng hạn như Subject, To, Cc, From. Phần chỉ định kết thúc của mail data cũng xác nhận sự giao dịch mail và báo cho receiver-SMTP biết để xử lý việc lưu trữ recipient và mail data ngay lúc đó. Nếu được chấp nhận receiver-SMTP trả về một reply 250 OK. Lệnh DATA sẽ chỉ fail nếu giao dịch mail không hoàn thành (ví dụ không có receiver) hoặc nếu tài nguyên không có hiệu lực. Thủ tục trên là một ví dụ của một giao dịch mail. Những lệnh này chỉ được dùng trong những trật tự được trình bày ở trên. Ví dụ : Một minh họa cách dùng những lệnh này tron ut; end with <CRLF>.<CRLF> S: Blah blah blah S: etc. etc. etc. S: <CRLF>.<CRLF> R: 250 OK Bây giờ mail được chấp nhận cho Jones và Brown. Green không có một mailbox trên Beta host. 2- Sự định hướng : Có một số trường hợp thông tin của đích đến trong <forward-path> bị sai nhưng receiver-SMTP biết đích đến đúng. Trong trường hợp như vậy một trong những reply sau sẽ được dùng để cho phép sender tiếp xúc đích đến đúng :  251 User not local ; will forward to <forward-path> Reply này chỉ cho receiver-SMTP biết mailbox của user đó nằm trên một host khác và chỉ định forward-path đúng để sau đó sử dụng. Lưu ý một trong hai host hay user hay cả hai có thể khác nhau . Receiver chịu trách nhiệm cho việc phân phối những message.  551 User not local ; please try <forward-path> Reply này chỉ cho receiver-SMTP biết mailbox của user nằm trên một host khác và chỉ định forward-path đúng để sử dụng . Lưu ý host hoặc là user hay cả hai có thể khác nhau . Receiver từ chối chấp nhận mail cho user A. Sender phải định hướng lại cho mail đó tuỳ theo những thông tin được cung cấp hoặc là trả trả lời error cho user khởi đầu.Ví dụ sau minh hoạ cách dùng của những đáp ứng này : S: RCPT TO:Postel@USC-ISI.ARPA R: 251 User not local; will forward to <Postel@USC-ISIF.ARPA> Hay S: RCPT TO:<Paul@USC-ISIB.ARPA> R: 551 User not local; please try Mockapetris@USC-ISIF.ARPA 3- Kiểm tra và mở rộng : SMTP cung cấp thêm những điểm đặc trưng, các lệnh để kiểm tra một user name hay mở rộng một danh sách địa chỉ được làm với lệnh VRFY và EXPN nó dùng đối số kiểu chuổi ký tự. Với lệnh VRFY chuỗi đó là một user name, và câu trả lời(response) có thể bao gồm full name của user đó và phải bao gồm mailbox của user đó. Với lệnh EXPN chuổi đó định danh một danh sách địa chỉ và câu trả lời có nhiều dòng có thể chứa full name của các user đó và phải chứa những mailbox trên danh sách địa chỉ (mailing list). Nếu một host được bổ sung lệnh VRFY hay EXPN thì ít nhất những mailbox cục bộ phải được thừa nhận như là“user names”. Nếu một host chọn lựa để thừa nhận những chuổi khác như “user names” thì điều đó được cho phép. Trong một số host sự phân biệt giữa một mailing list và một bí danh cho single mailbox hơi mơ hồ. Từ đó một cấu trúc dữ liệu phổ biến có thể giữ cả hai kiểu phần tử và nó có thể dùng các mailing list của một mailbox. Nếu một yêu cầu được tạo ra để kiểm tra một mailing list một câu trả lời khẳng định có thể được cho nếu trên message nhận được đã được định địa chỉ nó sẽ được phân phát cho tất cả mọi người trong danh sách đó. Mặt khác một lỗi sẽ được báo cáo (e.g., "550 That is a mailing list, not a user"). Nếu một yêu cầu được tạo ra để mở rộng một user name một câu trả lời khẳng định có thể được cấu hình bằng cách trả về một danh sách chứa một tên hay một lỗi có thể được báo cáo (e.g., "550 That is a user name, not a mailing list"). Trong trường hợp một reply nhiều dòng (thường cho EXPN) là một mailbox được đặc tả trên từng dòng của reply đó một cách chính xác. Trong trường hợp này một yêu cầu nhập nhằng khó hiểu như : “VRFY Smith” có hai câu trả lời của Smith phải là "553 User ambiguous". Ví dụ kiểm tra một user name S: VRFY Smith R: 250 Fred Smith <Smith@USC-ISIF.ARPA> Hay S: VRFY Smith R: 251 User not local; will forward to <Smith@USC-ISIQ.ARPA> Hay S: VRFY Jones R: 550 String does not match anything. Hay S: VRFY Jones R: 551 User not local; please try <Jones@USC-ISIQ.ARPA> Hay S: VRFY Gourzenkyinplatz R: 553 User ambiguous. Trường hợp mở rộng một mailbox list đòi hỏi một reply nhiều dòng xem trong ví dụ sau: mở rộng một mailing list (danh sách địa chỉ) S: EXPN Example-People R: 250-Jon Postel <Postel@USC-ISIF.ARPA> R: 250-Fred Fonebone <Fonebone@USC-ISIQ.ARPA> R: 250-Sam Q. Smith <SQSmith@USC-ISIQ.ARPA> R: 250-Quincy Smith <@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA> R: 250-<joe@foo-unix.ARPA> R: 250 <xyz@bar-unix.ARPA> Hay S: EXPN Executive-Washroom-List R: 550 Access Denied to You. Những đối số chuổi ký tự của lệnh VRFY và EXPN không thể vượt qua giới hạn được quyền trên sự bổ sung đa dạng của user name và khái niệm mailbox. Trên một số hệ thống nó có thể dành riêng cho đối số của lệnh EXPN để là một file name cho một file chứa một mailing list nhưng lại có một qui ước đa dạng của việc đặc tên file trong internet. Lệnh VRFY và EXPN không được bao gồm trong sự thực thi tối thiểu (trình bày trong phần sau) và không được đòi hỏi để làm việc thay ca khi chúng được thực thi. 4- Sending and Mailing : Mục đích chính của SMTP là phân phối những message đến những mailbox của user . Một dịch vụ rất phổ biến được cung cấp bởi một số host là để phân phối những message đến những terminal của user( cung cấp cho user làm việc trên host đó) . Sự phân phát đến những mail box của user được gọi là “mailing”, sự phân phát đến những user terminal được gọi là “sending”. Bởi vì một số host có sự thực thi của sending gần giống với sự thực thi của mailing chúng là hai chức năng được liên kết với SMTP. Mặc dù lệnh sending không bao gồm trong yêu cầu thực thi tối thiểu( xem phần sau). Những user có khả năng điều khiển việc ghi message lên những terminal của họ. Hầu hết các host cho phép chấp nhận hay từ chối những message. Ba lệnh sau được định nghĩa để cung cấp những option cho sending. Chúng được dùng trong giao dịch mail thay cho lệnh MAIL và cung cấp cho receiver-SMTP những ngữ nghĩa giao dịch đặc biệt SEND <SP> FROM:<reverse-path> <CRLF> Lệnh SEND đòi hỏi mail data được gửi đến user terminal. Nếu user đó không hoạt động (hay không chấp nhận những terminal message) trên host đó một reply 450 có thể được trả cho một lệnh RCPT. Giao chuyển mail thành công khi message đó được phân phát đến terminal. SOML <SP> FROM:<reverse-path> <CRLF> Lệnh này là SEND Or MAIL đòi hỏi mail data được phân phát đến terminal của user nếu user đó đang hoạt động (và chấp nhận những message terminal) trên host đó. Nếu user không hoạt động (haykhông chấp nhận terminal message) thì mail data được đưa vào trong mailbox của user . Giao chuyển mail thành công khi message đó được phân phát đến terminal hay mailbox. SAML <SP> FROM:<reverse-path> <CRLF> Lệnh này là SEND And MAIL đòi hỏi mail data được phân phát đến terminal của user nếu user đó đang hoạt động (và chấp nhận những message terminal) trên host đó. Trong những tất cả trường hợp mail data được đưa vào trong mailbox của user. Giao dịch mail thành công khi message đó được phân phát đến mailbox. Những mã reply tương tự được dùng cho lệnh MAIL cũng được dùng cho những lệnh này. 5- Opening and Closing : Ngay thời điểm mà kênh giao chuyển được open có một sự trao đổi để đảm bảo những host đó đang giao tiếp với những host khác. Hai lệnh sau được dùng trong việc đóng mở kênh truyền HELLO <SP> <domain><CRLF> QUIT <CRLF> Trong lệnh HELLO host này gửi đi những nhận dạng lệnh của nó có thể được dịch như "HELLO, I am <domain>". * Ví dụ mở kết nối : Opening R : 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready S : HELO USC-ISIF.ARPA R: 250 BBN-UNIX.ARPA * Ví dụ đóng kết nối : Closing S: QUIT R :221 BBN-UNIX.ARPA Service transmission channel. 6- Chia ca (Relaying) : Forward-path có thể là một lộ trình nguồn của form "@ONE, @TWO:JOE@THREE" với ONE ,TWO, THREE là các host. Form này được dùng để nhấn mạnh sự phân biệt giữa một address và một route. Mailbox là một address tuyệt đối, và route là thông tin về việc lấy chúng như thế nào . Những thành phần của forward-path được chuyển đến reverse-path khi message đó được chia ca từ một server SMTP đến một server-SMTP khác. Reverse-path là một lộ trình nguồn trở về (khác với một lộ nguồn là từ vị trí hiện hành của message đến điểm khởi đầu của message đó). Khi một server SMTP xóa phần nhận dạng của nó trong forward-path và chèn phần nhận dạng của nó vào trong reverse-path, nó phải dùng cái tên mà nó được biết tới trong môi trường mà nó sẽ gửi vào, không phải là môi trường mà mail từ đó đến, trong trường hợp server-SMTP được biết đến với những tên khác nhau trong những môi trường khác nhau. Nếu một message đến một SMTP thành phần đầu tiên của forward-path không phải là phần nhận dạng của SMTP đó, thành phần này không bị xoá trong forward-path và được dùng để xác định SMTP kế để gửi message đến. Trong trường hợp này SMTP thêm phần nhận dạng của nó vào reverse-path Dùng lộ trình nguồn receiver-SMTP nhận mail để chia ca đến một server-SMTP khác. Receiver-SMTP đó có thể chấp nhận hoặc bác bỏ công việc chia ca cho mail, như cách nó chấp nhận hay bác bỏ mail cho một user cục bộ. Receiver-SMTP thay đổi những đối số lệnh bằng cách chuyển phần nhận dạng của nó từ forward-path vào chổ mở đầu của reverse-path. Sau đó receiver-SMTP trở thành sender-SMTP, thiết lập một kênh truyền đến SMTP kế trong forward-path,và gửi mail đó cho nó. Host đầu tiên trong reverse-path sẽ là host gửi các lệnh SMTP và host đầu tiên trong forward-path sẽ là host các nhận các lệnh SMTP . Lưu ýrằng forward-path và reverse-path xuất hiện trong các lệnh và các reply SMTP, nhưng nó không cần thiết xuất hiện trong message . Nó không cần thiết cho những đường dẫn và cú pháp đặc biệt này xuất hiện trong những field của message header như "To:" , "From:", "CC:",…. Nếu một server-SMTP chấp nhận công việc chia ca mail và sau đó thấy forward- path không đúng hay mail đó không thể được phân phát được vì bất cứ lí do nào, thì nó phải xây dựng một message thông báo "undeliverable mail" (mail không thể phân phát) và gửi nó đến nơi xuất phát của mail không thể phân phát đó(được chỉ định trong reverse- path). Message thông báo này phải là từ server-SMTP tại host đó. Dĩ nhiên những server-SMTP sẽ không gữi những message thông báo về những sự cố xảy ra cho message thông báo đó. Một cách ngăn chặn sự lặp lại trong việc thông báo lỗi là đặc tả một null reverse-path trong lệnh MAIL của message một thông báo. Khi một message thông báo như vậy được chia ca nó được dùng để loại bỏ reverse-path null. Một lệnh MAIL với null reverse-path như dưới đây: MAIL FROM:< > Thông báo này nằm trong trả lời cho một message được khởi động bởi JOE tại HOSTW và gửi thông qua HOSTX đến HOSTY với chỉ thị chia ca nó đến HOSTZ, nó là bước đầu tiên trong việc trả về message thông báo . Ví dụ message thông báo mail không thể phân phát S: MAIL FROM:<> R: 250 ok S: RCPT TO:<@HOSTX.ARPA:JOE@HOSTW.ARPA> R: 250 ok S: DATA R: 354 send the mail data, end with . S: Date: 23 Oct 81 11:22:33 S: From: SMTP@HOSTY.ARPA S: To: JOE@HOSTW.ARPA S: Subject: Mail System Problem S: S: Sorry JOE, your message to SAM@HOSTZ.ARPA lost. S: HOSTZ.ARPA said this: S: "550 No Such User" S: . R: 250 ok 8-Thay đổi vai trò : Lệnh TURN có thể dùng để đảo vai trò của hai chương trình đang giao tiếp trên kênh giao chuyển. Nếu chương trình A đang là sender-SMTP hiện hành và nó gửi lệnh TURN và nhận một reply OK(250) thì chương trình A trở thành receiver-SMTP. Nếu chương trình B đang hiện hành receiver-SMTP hiện hành và nó gửi lệnh TURN và nhận một reply OK(250) thì chương trình B trở thành sender-SMTP. Để từ chối thay đổi vai trò receiver gửi reply 502 Lưu ý là lệnh này không bắt buộc. Thường nó không được dùng trong tình trạng kênh giao chuyển là TCP. Tuy nhiên khi trị giá cho việc thiết lập kênh giao chuyển cao, lệnh này có thể rất có ích. Ví dụ như lệnh này có ích trong việc hổ trợ là trao đổi mail dùng hệ thống public switched telephone làm một kênh giao chuyển, đặc biệt nếu một số host đề cử các host khác cho việc trao đổi mail. IV. Đặc tả SMTP A. Những lệnh SMTP (Commands SMTP) 1. Ngữ nghĩa lệnh : Những lệnh SMTP định nghĩa sự truyền mail hay chức năng của hệ thống mail được yêu cầu bởi user. Những lệnh SMTP là những chuỗi ký tự kết thúc bằng <CRLF>. Bản thân mã lệnh là những ký tự chữ (alphabetic) kết thúc bởi <SP> nếu có những tham số theo sau và <CRLF> khác. Cú pháp của những mailbox phải tuân theo những thoả hiệp phía receiver. Những reply SMTP được bàn đến trong phần B. Một sự giao dịch mail bao gồm vài đối tượng dữ liệu được giao tiếp khi những đối số cho các lệnh khác nhau. Reverse-path là đối số của lệnh MAIL. Forward-path là đối số của lệnh RCPT. Và mail data là đối số của lệnh DATA. Ba đối số và những đối tượng dữ liệu được duy trì cho đến khi xác nhận truyền xong bởi sự chỉ định kết thúc của mail data thì thật sự kết thúc giao dịch. Mô hình cho nó là những buffer riêng biệt được cung cấp để giữ kiểu của đối tượng dữ liệu. Một số lệnh đặc trưng sinh ra thông tin được gắn vào một buffer đặc trưng, hay làm cho một hay nhiều buffer bị xoá.  HELLO (HELO) : Lệnh này dùng định danh sender-SMTP đến receiver-SMTP. Field đối số chứa host name của sender-SMTP. Receiver-SMTP định danh nó đến sender-SMTP trong trả lời bắt tay cho việc kết nối, và trong câu trả lời cho lệnh này.Lệnh này và một reply OK để xác nhận cả hai sender-SMTP và receiver-SMTP đang trong tình trạng khởi động, điều đó là: không có một giao dịch mail nào đang tiến hành và tất cả các bảng trạng thái và buffer đã được xoá.  MAIL : Lệnh này được dùng khởi tạo một giao dịch mail trong đó mail data được phân phối đến một hay nhiều mailbox. Feild đối số chứa một reverse-path. Rever _se - path bao gồm một danh sách các host tuỳ ý và mailbox của user. Khi danh sách các host hoàn tất nó là một lộ trình nguồn “trở về” và chỉ định mail đó được chia ca thông qua mỗi host trên danh sách đó (host đầu tiên trong list là host chia ca gần nhất). List này được dùng như một lộ trình nguồn để trả về sender những thông báo không thể phân phát. Tại mỗi host chia ca nó thêm phần định danh của bản thân vào chổ bắt đầu của list đó và phải dùng tên của nó được biết trong IPCE nơi nó sẽ chia ca mail đến đó, đúng hơn là ICPE có mail đến từ đó (nếu chúng khác nhau). Trong một số loại message thông báo lỗi (ví dụ thông báo mail không thể phân phát) reverse-path có thể là null.  RECIPIENT (RCPT) : Lệnh này dùng định danh một recipient (người nhận) mail data riêng lẻ, nhiều recipient được đặc tả bằng nhiều lệnh này. Forward-path bao gồm một danh sách các host tuỳ ý và một mailbox đích được yêu cầu. Khi danh sách host đó hoàn tất. Nó là một lộ trình nguồn và chỉ định mail phải được chia ca đến host kế tiếp trên list đó. Nếu receiver-SMTP không thực thi chức năng chia ca nó có thể dùng được reply này và sẽ cho một unknown local user (550). Khi mail được chia ca, host chia ca phải chuyển phần định danh nó từ chổ bắt đầu forward-path và đặt vào chổ bắt đầu của reverse-path. Khi mail trải ra tới đích cuối cùng (forward-path chỉ chứa một mailbox đích) receiver-SMTP Insert nó vào trong mailbox đích trong sự đồng ý với thoả hiệp host mail của nó. Ví dụ mail được nhận tại host chia ca A với những đối số: FROM:<USERX@HOSTY.ARPA> TO:<@HOSTA.ARPA,@HOSTB.ARPA:USERC@HOSTD.ARPA> Sẽ được chia ca đến host B với đối số FROM:<@HOSTA.ARPA:USERX@HOSTY.ARPA> TO:<@HOSTB.ARPA:USERC@HOSTD.ARPA>. Lệnh này sinh ra đối số forward-path của nó được gắn vào forward-path buffer.  DATA(DATA) : Receiver xử lý những dòng theo sau lệnh này khi mail data từ sender đến. Nó làm cho mail data từ lệnh này được ghi vào data buffer. Mail data này có thể chứa những ký tự của 128 mã ACII. Data mail được kết thúc bằng một dòng chỉ chứa một dấu chấm. Đó là một dãy ký tự "<CRLF>. <CRLF>" (xem phần 4.D.2). Và đó là chỉ định kết thúc của mail data. Sự chỉ định kết thúc một chuổi đòi hỏi receiver phải xử lý việc lưu trữ những thông tin giao dịch mail ngay lập tức. Quá trình xử lý này dùng thông tin trong reverse-path buffer, forward-path buffer, mail data buffer, và khi hoàn tất lệnh này những buffer đó sẽ bị xoa ược nhận, những message được chia ca sẽ có nhiều dòng đánh dấu thời gian. Khi một receiver-SMTP tạo ra “final delivery” của một message nó insert vào chổ bắt đầu của mail data một dòng return-path . Dòng return-path đó bảo quản thông tin trong “reverse-path” từ lệnh mail. Ơ đây deliver final có nghĩa là message đó rời khỏi thế giới SMTP. Thông thường có nghĩa là nó đã được chuyển đến user đích . nhưng trong một số trường hợp nó có thể được xử lý nữa và và được giao chuyển bởi hệ thống mail khác. Có thể cho mailbox trong return path là khác biệt với mailbox thật sự của sender, ví dụ như nếu những trả lời error được dùng phân phát một lỗi đặc biệt điều khiển mailbox. Hai đoạn trước ý nói mail data cuối cùng sẽ bắt đầu với một dòng return path theo sau là một hay nhiều dòng đánh dấu thời gian , sau những dòng này sẽ là phần header và body của mail data [2]. Sự đề cập đặc biệt cần thiết cho sự trả lời (response) và sự hành động tiếp nữa được yêu cầu khi quá trình xữ lý theo sau sự chỉ định kết thúc mail data là sự thành công cục bộ. Điều này có thể phát sinh nếu sau khi chấp nhận một vài recipient và data mail receiver-SMTP thấy mail data đó có thể được phân phát đến một số recipient thành công nhưng lại không thể đến những người khác (ví dụ như xảy ra vấn đề về việc chỉ định vị trí của mailbox). Trong tình trạng như vậy câu trả lời cho lệnh DATA phải là một reply OK. Nhưng receiver-SMTP phải soạn và gửi về nơi xuất xứ của message đó một message thông báo “undelivered mail”. Một thông báo đơn liệt kê tất cả các recipient không nhận được message, hay những message thông báo riêng lẽ phải được gửi cho từng recipient một , tất cả những thông báo mail không thể phân phát được gửi dùng lệnh MAIL (ngay cả nếu kết quả đó từ quá trình xử lý một lệnh SEND, SOML, hay SAML ). Ví dụ cho đường dẫn trả về và nhận đánh dấu thời gian nhận Return-Path: <@GHI.ARPA,@DEF.ARPA,@ABC.ARPA:JOE@ABC.ARPA> Received: from GHI.ARPA by JKL.ARPA ; 27 Oct 81 15:27:39 PST Received: from DEF.ARPA by GHI.ARPA ; 27 Oct 81 15:15:13 PST Received: from ABC.ARPA by DEF.ARPA ; 27 Oct 81 15:01:59 PST Date: 27 Oct 81 15:01:01 PST From: JOE@ABC.ARPA [...]... +OK IV Trạng thái giao dịch (transaction) Khi client định danh nó đến POP3 server thành công và POP3 server đã khoá và mở maildrop thích hợp, POP3 session bây giờ trong trạng thái TRANSACTION client có thể phát nhiều lần các lệnh POP3 sau đây Sau mỗi lệnh POP3 server phát ra một câu trả lời Cuối cùng client phát ra một lệnh QUIT và POP3 session đi vào trạng thái UPDATE Đây là các lệnh POP3 có hiệu lực... last line Trong một số trường hợp sender -SMTP cần tìm mã reply theo sau là ở đầu dòng, và phớt lờ tất cả các dòng trước Một ít trường hợp có dữ liệu quan trọng cho sender trong reply “text” sender sẽ nhận biết trường hợp này từ ngữ cảnh hiện hành Phần 2 Giao thức POP 3 (Post Office Protocol version 3) -*** I Giới thiệu Nghi thức POP3 được cải tiến từ nghi thức POP ( Post Office Protocol ) Trên... receiver -SMTP đó phải ở trong trạng cũ Những lệnh NOOP, HELP, EXPAND và VRFY có thể được dùng nhiều lần trong một cuộc giao dịch Các lệnh MAIL, SEND, SOML, và SAML bắt đầu một giao dịch mail Khi bắt đầu một giao dịch mail bao gồm một lệnh khởi tạo giao dịch , một hay nhiều lệnh RCPT, và một lệnh DATA đó là một trật tự một giao dịch mail có thể được bỏ qua bởi một lệnh RSET có thể có hay không có nhiều giao. .. server signing off (2 messages left) VI Các lệnh POP 3 chọn lựa (optional POP3 commands) Những lệnh POP3 được nói đến ở trên phải được hổ trợ bởi sự thực thi tối thiểu của POP3 server Các lệnh POP3 lựa chọn được mô tả sau đây cho phép một POP3 client tự do hơn trong việc điều khiển message, trong khi vẩn giữ một sự thực thi POP3 server đơn giản Lưu ý: Sổ ghi chép khuyến khích những sự thự thi nhằm... kết nối TCP được mở ra bởi một cleint POP3 server sẽ xuất ra một dòng chào hỏi nó có thể là một chuổi nào đó được kết thúc bởi CRLF Ví dụ : S: +OK POP3 server ready Chào hỏi đó là một POP3 reply POP3 server bao giờ cũng sẽ truyền đi một trả lời khẳng định như chào hỏi trên POP3 session hiện nằm trong trạng thái AUTHORIZATION Client phải định danh và xác nhận nó với POP3 server Có hai cơ chế thích hợp... xem như là những đối tượng, muốn thao tác với những bộ phận đó, đều phải theo cách thức truy nhập vào một Object, sau đó mới có thể sử dụng các method của Interface mà Objectt tương ứng hỗ trợ Ví dụ như ngay cả thông điệp cũng được xem là một đối tượng, đó là Message Object - ESMTP (Extender SMTP) - Nghi thức mở rộng SMTP SMTP có một hạn chế gây khó khăn lớn trong việc truyền nhận mail là giới hạn tối... “undo” những giao dịch đã hoàn tất trước đó) sender sẽ hành động như nếu lệnh hay giao dịch đó trong quá trình xử lý nhận được một lỗi tạm thời (4xx)  TURN (TURN) : Lệnh này định rõ receiver phải gửi một trong hai reply sau: (1) reply OK và sau đó nhận vai trò của một sender -SMTP, hay (2) gửi một reply từ chối và giữ lại vai trò một receiver -SMTP Nếu program-A hiện tại là một sender -SMTP gửi một lệnh... thể được cho trong trạng thái AUTHORIZATION sau khi POP3 chào hỏi - Discussion : Thường thì, mỗi POP3 session bắt đầu với một sự trao đổi USER/PASS, nó dẫn đến một password đặc tả server/user-id được gửi lên mạng Những sự thực thi của POP3 client kết nối đến POP3 server theo một quy tắc cơ bản để kiểm tra mail mới Hơn nữa khoảng thời gian khởi tạo một POP3 session theo quy tắc là năm phút Lúc đó khả... format của hệ hex Khi một server POP3 nhận được một lệnh APOP, nó kiểm tra digest Nếu digest đúng, POP3 server phát ra một trả lời khẳng định và POP3 session đi vào trạng thái TRANSACTION Ngược lại nó phát ra một trả lời phủ định và POP3 session vẫn giữ trạng thái AUTHORIZATION - Câu trả lời có thể: +OK maildrop locked and ready -ERR permission denied Ví dụ : S: +OK POP3 server ready ... cơ bản Ban đầu server host bắt đầu một POP3 service bằng cách lắng nghe trên TCP port 110 Khi một client host mong muốn dùng POP3 service, nó thiết lập một kết nối TCP với server host đó Khi kết nối được thiết lập, POP3 server gửi một chào hỏi Client và server POP3 sau đó trao đổi những lệnh và các trả lời cho đến khi kết nối đó được đóng hay loại bỏ Lệnh trong POP3 bao gồm một keyword (từ khoá) theo . thành POP3 (Post Officce Protocol vertion 3). Các giao thức Mail thông dụng : chuẩn X.400, chuẩn MAIP, SMTP (ESMTP), POP3 . Ở đây chỉ trình bày chi tiết về POP3 và SMTP . Phần 1 Giao thức SMTP. , giao thức truyền dẫn được dùng. Còn mục đích của chuẩn SMTP miêu tả cách điều khiển các thông điệp trên mạng Internet. Điều quan trọng của chuẩn SMTP là giả định máy nhận phải dùng giao thức. nay là X.400 và SMTP ( Simple Mail Transfer Protocol). SMTP thường đi kèm với chuẩn POP3 và do hạn chế của SMTP mà ngày nay người ta dùng chuẩn mở rộng của nó là ESMTP (Extended SMTP) . Mục đích

Ngày đăng: 02/07/2014, 15:36

Từ khóa liên quan

Mục lục

  • Công việc phát triển các hệ thống Mail (Mail System) đòi hỏi hình thành các chuẩn về Mail. Điều này giúp cho việc gởi nhận các thông điệp được đảm bảo , làm cho những người ở các nơi khác nhau có thể trao đổi thông tin cho nhau.

  • Có 2 chuẩn về Mail quan trọng nhất và được sử dụng nhiều nhất từ trước đến nay là X.400 và SMTP ( Simple Mail Transfer Protocol). SMTP thường đi kèm với chuẩn POP3 và do hạn chế của SMTP mà ngày nay người ta dùng chuẩn mở rộng của nó là ESMTP (Extended SMTP). Mục đích chính của X.400 là cho phép các mail có thể được truyền nhận thông qua các loại mạng khác nhau bất chấp cấu hình phần cứng, hệ điều hành mạng , giao thức truyền dẫn được dùng. Còn mục đích của chuẩn SMTP miêu tả cách điều khiển các thông điệp trên mạng Internet. Điều quan trọng của chuẩn SMTP là giả định máy nhận phải dùng giao thức SMTP gởi Mail cho 1 Server luôn luôn hoạt động. Sau đó, người nhận sẽ đến lấy Mail của họ từ Server khi nào họ muốn dùng giao thức POP (Post Office Protocol), ngày nay POP được cải tiến thành POP3 (Post Officce Protocol vertion 3). Các giao thức Mail thông dụng : chuẩn X.400, chuẩn MAIP, SMTP (ESMTP), POP3 . Ở đây chỉ trình bày chi tiết về POP3 và SMTP .

  • Phần 1

  • Giao thức SMTP (Simple Mail transfer Protocol )

    • I . Giới thiệu

    • APOP name digest có hiệu lực trong trạng thái AUTHORIZATION

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan