tim hieu ve giao thuc SMTP - Pdf 14

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

cách chủ ý lock –step (one-at-a-time).
Sender
SMTP
Receiver
SMTP
User
File
System
File
Syste
m
SMTP
Commands/Replies
and Mail
Sender-SMTP
Receiver-SMTP
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.
Những command và reply mail có những cú pháp khắc khe. Những reply cũng

<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

đố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 <[email protected]>
Hay
S: VRFY Smith
R: 251 User not local; will forward to <[email protected]>
Hay
S: VRFY Jones
R: 550 String does not match anything.

đó) . 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.

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

<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

đượ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:[email protected]>
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: [email protected]
Subject: Improved Mailing System Installed
To: [email protected] This is to inform you that
 SEND (SEND) : Lệnh này dùng khởi tạo một giao dòch mail trong đó mail data
được phân phát đến một hay nhiều terminal. Field đối số chứa một reverse-path.

đang hoạt động trên host đó (và chấp nhận những terminal message ) và cho tất cả
recipient thì đến mailbox của các recipient đo. Field đối số chứa một reverse-path
. lệnh này thành công khi message được phân phát đến mailbox.
Reverse-path bao gồm một danh sách các host tuỳ ý và mailbox của
sender. Khi danh sách 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 các host trong danh sách đó(host đầu tiên trong danh
sách là host chia ca gần nhất ) Danh sách này được dùng như một lộ trình nguồn
trả về cho sender những thông báo về việc không thể phân phát. Khi mỗi host
chia ca thêm phần đònh danh nó vào chổ bắt đầu của danh sách đó nó phải dùng
tên mà nó được biết đến trong IPCE mà nó sẽ chia ca mail đến đó đúng hơn là
IPCE mà mail đến từ đó(nếu chúng khác nhau).
Lệnh này xoá reverse-path buffer, forward-path buffer và mail data
buffer và chèn thông tin reverse-path từ lệnh này vào trong reverse-path buffer.
????????
 RESET (RSET) : Lệnh này đònh rõ giao dòch mail hiện hành bò huỷ bỏ. Các
sender, recipient, mail data đã lưu sẽ bò huỷ bỏ và tất cả các bảng trạng thái, các
buffer bò xoá. Receiver phải gửi một reply OK.
 VERIFY (VRFY) : Lệnh này yêu cầu receiver xác nhận đối số đònh danh một
user. Nếu nó là một user name, full name của user đó (nếu receiver biết) và
mailbox đặc tả đầy đủ được trả về.Lệnh này không ảnh hưởng đến reverse-path
buffer, forward-path buffer và data mail buffer.
 EXPAND (EXPN) : Lệnh này yêu cầu receiver xác nhận một mailing list ( danh
sách đòa chỉ) và trả về một thành phần trong danh sách đó. Full name của các user
(nếu biết) và những mailbox được đặc tả đầy đủ được trả về trong một reply
nhiều dòng.
Lệnh này không ảnh hưởng đến reverse-path buffer, forward-path buffer và
data mail buffer.
 HELP (HELP) : Lệnh này làm cho receiver thông tin giúp đỡ cho sender lệnh
HELP. Lệnh này có thể nhận một đối số (có thể là tên lệnh) và trả về thông tin
chi tiết.

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 dòch trong một cuộc
trao đổi (session).
Nếu đối số của lệnh khởi động giao dòch không thể chấp nhận một reply
failure 501 phải được trả về và sercer-SMTP phải nằm trong trạng thái cũ. Nếu
những lệnh trong cuộc giao dòch không đúng trật tự một reply failure 503 được trả
về và receiver-SMTP đó phải nằm trong trạng thái cũ.
Lệnh cuối cùng trong cuộc trao đổi phải là lệnh QUIT và lệnh QUIT không
thể được dùng nhiều lần trong một cuộc trao đổi.
2- Cú pháp lệnh :
Những lệnh này bao gồm một mã lệnh theo sau là một field đối số . Mã lệnh
là bốn ký tự chữ . Những ký tự thường và hoa được xữ lý như nhau . Vậy những từ sau
đây có thể đại diện cho lệnh MAIL:
MAIL Mail mail MaIl mAIl
Ở đây cũng dùng một số ký hiệu trình bày cho những giá trò của tham số ,
chẳng hạn như “TO” hay “to” cho forward-path. Mã lệnh và những field đối số được
tách ra bởi một hay nhiều khoảng trắng. Tuy nhiên bên trong những đối số reverse-
path và forward-path kiểu chữ rất quan trọng. Trong một số host user “vu” khác với
user “Vu”.
Field đối số gồm có một biến chiều dài chuổi ký tự, kết thúc với chuổi
<CLRF>. Receiver không nhận hành động cho đến khi nhận được chuổi <CLRF> này.
Dấu ngoặc vuông biểu thò một field đối số tuỳ ý. Nếu không nhận chọn lựa
này một defaul phù hợp sẽ được áp dụng.


Sau đây là những lệnh SMTP:
HELO <SP> <domain> <CRLF>

<string> ::= <char> | <char> <string>
<quoted-string> ::= """ <qtext> """
<qtext> ::= "\" <x> | "\" <x> <qtext> | <q> | <q> <qtext>
<char> ::= <c> | "\" <x>
<dotnum> ::= <snum> "." <snum> "." <snum> "." <snum>
<number> ::= <d> | <d> <number>
<CRLF> ::= <CR> <LF>
<CR> ::= the carriage return character (ASCII code 13)
<LF> ::= the line feed character (ASCII code 10)
<SP> ::= the space character (ASCII code 32)
<snum> ::= one, two, or three digits representing a decimal
integer value in the range 0 through 255
<a> ::= any one of the 52 alphabetic characters A through Z
in upper case and a through z in lower case
<c> ::= any one of the 128 ASCII characters, but not any
<special> or <SP>
<d> ::= any one of the ten digits 0 through 9
<q> ::= any one of the 128 ASCII characters except <CR>,
<LF>, quote ("), or backslash (\)
<x> ::= any one of the 128 ASCII characters (no exceptions)
<special> ::= "<" | ">" | "(" | ")" | "[" | "]" | "\" | "."
| "," | ";" | ":" | "@" """ | the control characters (ASCII
codes 0 through 31 inclusive and 127)
Chú ý dấu suyệt ngược “\” là một ký tự đònh đặt, nó được dùng chỉ đònh ký tự
kế tiếp được dùng một cách literal (thay cho sự thông dòch thông thường của nó) ví dụ
như "Van\,Sam" sẽ được dùng chỉ đònh một ký tự một field bảy ký tự đơn với dấu
phẩy là ký tự thứ tư của field.
Thường những host được biết đến bằng những cái tên , nó được biên dòch thành
đòa chỉ của mỗi host. Lưu ý tên phần tử của domains phải là tên chính thức, không
dùng tên hiệu hay bí danh.

<mon> ::= "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
"JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
<yy> ::= the two decimal integer year of the century in the range 00 to 99.
<hh> ::= the two decimal integer hour of the day in the range 00 to 24.
<mm> ::= the two decimal integer minute of the hour in the range 00 to 59.
<ss> ::= the two decimal integer second of the minute in the range 00 to 59.
<zone> ::= "UT" for Universal Time (the default) or other time zone designator
(as in [2]).
Ví dụ : Return Path
Return-Path: <@CHARLIE.ARPA,@BAKER.ARPA:[email protected]>
Ví dụ : dòng đánh dấu thời gian :
Received: FROM ABC.ARPA BY XYZ.ARPA ; 22 OCT 81 09:23:59 PDT
Receive
h bày trong Sequencing của phần V.3 và lược đồ trạng thái của phần V.4
Một reply SMTP bao gồm một số ba chữ số (được truyền như ba ký tự chữ số)
theo sau là một số văn bản (text). Số đó được dành cho các chương trình tự động để
xác đònh trạng thái đưa vào kế tiếp. Text ở trên có ý nghóa cho user con người(không
phải máy). Ba chữ số đó được ấn đònh chứa đầy đủ thông tin được mã hoá sender-
SMTP không cần kiểm tra text đó và có thể huỷ bỏ hay chuyển nó qua một user thích
hợp. Đặc biệt text này có thể độc lập với receiver và độc lập với ngữ cảnh, do có sự
giống nhau trong những text khác nhau từng mã reply. Nguyên lý của những mã
reply cho trong phụ lục E. thông thường một reply được đònh nghóa là chuổi gồm: một
mã ba chữ số, <SP>, một dòng text, và <CRLF>, hay một reply nhiều dòng (như đònh
nghóa trong phụ lục E) chỉ những lệnh EXPN và HELP có kết quả là những reply
nhiều dòng trong những tình huống bình thường, tuy nhiên những reply nhiều dòng
được chấp nhận cho nhiều lệnh.
1. Những mã Reply cho một nhóm các chức năng:
500 Lỗi cú pháp, không chấp nhập lệnh
[nó có thể bao gồm những lỗi như: lệnh quá dài]
501 Lỗi cú pháp trong những đối số hay những tham số

220 <domain> dòch vụ sẳn sàng
221 <domain> dòch vụ đóng kênh giao chuyển
250 Hành động mail yêu cầu OK, hoàn thành
251 User không cục bộ; sẽ hướng đến <forward-path>
354 Khởi động việc nhập mail; kết thúc với <CLRF>. <CLRF>

421 <domain> dòch vụ không sử dụng được, đóng kênh giao chuyển
[nó có thể là một reply cho nhiều lệnh nếu dòch vụ đó biết reply
này phải shut down]
450 Không lấy hành động mail yêu cầu; mailbox không hiệu lực
[như mailbox bận]
450 Bỏ qua hành động được yêu cầu ; lỗi cục bộ trong quá trình xử lý
451 Không nhận hành động được yêu cầu; lưu trữ của hệ thống
không đủ.
500 Lỗi cú pháp; không chấp nhận lệnh
[nó có thể bao gồm những lỗi như: lệnh quá dài]
501 Lỗi cú pháp trong tham số hay đối số
502 Lệnh không được cung cấp
503 Dòng lệnh sai
504 Tham số của dòng lệnh không được cung cấp
550 Không nhận hành động được yêu cầu ; mailbox không hiệu lực
[như mailbox không tìm thấy hay không truy cập được]
551 User không cục bộ; vui lòng thử <forward-path>
552 Bỏ qua hành động mà mail yêu cầu, vượt quá chỉ đònh lưu trữ
554 Không nhận hành động được yêu cầu; tên mailbox không được
chấp nhận. [như sai cú pháp mailbox] giao chuyển sai.
3. Sự liên tục của những Command & Reply :
Sự giao tiếp giữa sender và receiver được đònh là một cuộc hội thoại tuần
tự do sender điều khiển. Chẳng hạn như sender sinh ra một lệnh và receiver trả lời
với một reply. Sender phải chờ sự trả lời này trước khi gửi thêm lệnh.

F: 550, 551, 552, 553, 450, 451, 452
E: 500, 501, 503, 421
DATA
I: 354 -> data -> S: 250
F: 552, 554, 451, 452
F: 451, 554
E: 500, 501, 503, 421
RSET
S: 250
E: 500, 501, 504, 421
SEND
S: 250
F: 552, 451, 452
E: 500, 501, 502, 421
SOML
S: 250
F: 552, 451, 452
E: 500, 501, 502, 421
SAML
S: 250
F: 552, 451, 452
E: 500, 501, 502, 421
VRFY
S: 250, 251
F: 550, 551, 553
E: 500, 501, 502, 504, 421
EXPN
S: 250
F: 550
E: 500, 501, 502, 504, 421

2cmd
4,5
1,3
Một sơ đồ phức tạp hơn mô hình cho lệnh DATA :

 Lưu ý: “data” ở đây là một chuỗi những dòng gửi từ sender đến receiver không cần
sự trả lời cho đến khi dòng cuối cùng được gửi.
D- Chi tiết
1. Sự thực thi tối thiểu :
Lợp lệ để làm cho SMTP có thể làm việc, sự thực thi tối thiểu sau được yêu
cầu cho tất cả các receiver
COMMANDS HELO
MAIL
RCPT
DATA
RSET
NOOP
QUIT
2. Tính trong suốt :
Không có một sự cung cấp nào cho tính trong suốt dữ liệu, chuổi ký tự
<CRLF>.<CRLF> kết thúc mail text và không được user gửi đi. Thông thường user
không nhận biết được sự “ngăn cản” những chuổi ký tự đó. Để cho phép tất cả các
text đã soạn thảo của user được truyền một cách rõ ràng những thủ tục sau đây được
sử dụng.
1> Trước khi gửi một dòng mail text sender-SMTP kiểm tra ký tự đầu tiên của
dòng đó. Nếu nó là một dấu chấm, một dấu chấm phụ được thêm vào đầu dòng.
2> Khi receiver-SMTP nhận một dòng mail text nó kiểm tra dòng đó. Nếu dòng
đó chỉ có một dấu chấm đơn thì nó là kết thúc của mail. Nếu ký tự đầu tiên là một
dấu chấm và theo sau là những ký tự khác nằm trên cùng dòng. Thì ký tự đầu tiên đó
bò xoá.

<CRLF> là 1000 ký tự (không tính dấu chấm ở đầu được nhân lên cho vấn đề
trong suốt).
 recipients buffer : Tổng số recipient lớn nhất là 100 recipient.
* Lỗi vượt quá quyền được giới hạn có thể được báo cáo bằng cách dùng những
mã reply. Ví dụ như :
500 Line too long.(dòng quá dài)
501 Path too long (đường dẫn quá dài)
552 Too many recipients.(quá nhiều recipient)
552 Too much mail data (quá nhiều mail data)
V- Phụ lục
A. Dòch vụ vận chuyển TCP
Transmission Control Protocol (điều khiển giao chuyển [3]) được dùng trong
ARPA internet và trong một số mạng theo tiêu chuẩn US DoD cho các protocol
internetwork .
ĐỂ CÓ PHẠM VI LỚN NHẤT CÓ THỂ, THỰC THI
KỸ THUẬT ĐÁNH LỪA KHÔNG GIỚI HẠN CHIỀU
DÀI CỦA NHỮNG ĐỐI TƯNG SẼ ĐƯC DÙNG
* Thiết lập kết nối :
Một kênh giao chuyển SMTP là một kết nối được thiết lập the sender process
port U and the receiver process port L. nó là một kết nối full duplex đơn giản được
dùng như kênh kết nối trên protocol này được gán một dòch vụ port 25 (31 hệ mười)
đó là L=25.
* Truyền dữ liệu :
Kết nối TCP hổ trợ truyền những byte 8 bit. Dữ liệu SMTP là những ký tự 7
bit mã ASCII. Mỗi ký tự được truyền như một byte 8 bit với bit cao nhất bò xoá về 0.
B. Dòch vụ vận chuyển NCP
ARPANET Host-to-Host Protocol [4] (được cung cấp bởi Network Control
Program) có thể được dùng trong ARPANET .
* Thiết lập kết nối :
Kênh giao chuyển SMTP được thiết lập qua NCP giữa sender process socket U


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status